プライマリキー

  • プライマリキーは、テーブル内の各行の一意の識別子です。 1 つから 4 つの列で構成されています。

  • テーブルが作成されたら、プライマリキーを定義する必要があります。 プライマリキーを定義するには、各プライマリキー列の列名とデータタイプ、および、プライマリキー列の固定シーケンスを指定する必要があります。

  • プライマリキー列のデータタイプは、String 型、Integer 型および Binary 型のみです。 String 型または Binary データ型のプライマリキー列の場合、列の値のサイズは1 KBを超えないようにしてください。

属性

行のデータは属性列に格納されます。 各行の属性列の数は無制限です。

バージョン

属性列に書き込まれたバージョンの数が "Max Versions" の値を超えると、以前のバージョンのデータは破棄され、残りのバージョンの数は最大バージョンの値と等しくなります。

データを書き込むときに、属性列のバージョンを指定できます。 バージョンを指定しない場合、サーバーは現在のタイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC から経過したミリ秒数で表される) に基づいて属性列のバージョンを生成します。 各行から読み取ることのできるデータを制限するために、列ごとの最大バージョン数、またはバージョン範囲を指定できます。 バージョン番号は、データが生成された時刻も示します。 バージョンは、1970 年 1 月 1 日 00:00:00 UTC から経過したミリ秒数で表されます。 TTL が 86400 (1 日) に設定されているデータ表の場合、バージョンが 1468944000000 (2016 年 7 月 20 日 00:00:00 UTC) である属性列のデータは、2016 年 7 月 21 日 00:00:00 UTC に期限が切れて自動的に削除されます。

各行から読み取ることができるデータを制限するために、列ごとの最大バージョン数またはバージョン範囲を指定できます。

  • TTL 比較および "Max Version Offset" の計算中は、ミリ秒単位のバージョンを 1000 で割って秒に変換する必要があります。
  • バージョンがサーバーによって決定されている場合は、データが書き込まれてから TTL が経過したときに指定された (秒単位の) 時間の後にデータがクリアされます。
  • 無効なデータ書き込みを防ぐために、システムは期限切れデータの書き込みを拒否します。 たとえば、2016 年 7 月 21 日 00:00:00 に、バージョンが 1468944000000 (2016 年 7 月 20 日 00:00:00 UTC) より前のデータは、TTL が 86400 のデータテーブルに書き込むことができません。
  • 書き込みエラーを防ぐために、データが書き込まれる属性列のバージョンが [データ書き込み時間 - "Max Version Offset" の値, データ書き込み時間 + 最大バージョンオフセットの値) の範囲内であることが必要です。

列の命名規則

プライマリキー列と属性列は同じ命名規則に従います。

  • 大文字、小文字、数字およびアンダースコア (_) のみが許可されています。

  • 大文字、小文字、またはアンダースコア (_) で始まる必要があります。

  • すべての文字は大文字と小文字が区別されます。

  • 名前の長さは 1 文字から 255 文字までです。

列値のデータタイプ

次の表に示すように、Table Store は 5 つのデータ型の列値をサポートしています。

データタイプ 定義 プライマリキーとして許可されるか サイズ制限
String 型 UTF-8、空にすることができる はい プライマリキー列の場合、1 KB 以下の属性列については、「制限 (Limits)」をご参照ください。
Interger 型 64ビット、整数 はい 8 バイト
Double 型 64ビット、ダブル いいえ 8バイト
Boolean 型 真偽 いいえ 1バイト
Binary 型 空にすることができる はい プライマリキー列の場合、1 KB以下の属性列については、「制限 (Limits)」をご参照ください。

パーティションキー

最初のプライマリキー列はパーティションキーとも呼ばれます。 Table Store は各行のパーティションキー値が存在する範囲を確認し、この行のデータを対応するパーティションとマシンに自動的に割り当てて負荷分散を実現します。

同じパーティションキー値を持つ行は、同じパーティションに属します。 1 つのパーティションには複数のパーティションキー値を含めることができます。 パーティションキー値は、最小パーティション単位です。 同じパーティションキー値のデータは分割できません。 パーティションが大きすぎて分割できない状況を回避するには、単一のパーティションキー値の下にあるすべての行の合計データ量が 10 GB を超えないようにすることを推奨します。

負荷分散を改善するために、Table Store は特定の規則に従ってパーティションを分割してマージします。 このプロセスはアプリケーションの介入なしに自動化されています。