グローバルセカンダリインデックスの使用を開始する前に、次の基本概念、制限事項、および注意事項を理解しておく必要があります。

基本概念

用語 説明
インデックス テーブルのいくつかの属性にインデックスを作成できます。 インデックスは読み取り専用です。
定義済みの属性 Table Store はスキーマフリーモデルを使用します。 スキーマに固定数の属性を指定する代わりに、無制限の数の属性を行に書き込むことができます。 テーブルを作成するときに、定義済みの属性とそのデータ型を指定することもできます。
シングルフィールドインデックス 1 つのテーブル属性にのみインデックスを作成できます。
複合インデックス テーブルの複数の属性グループにインデックスを作成できます。 さらに、これらの属性で並べ替えることができます。
射影属性 定義済みの属性をインデックスにコピーすることができます。 これらの属性はいずれもプライマリキーとして指定されていません。
自動補完 テーブルのプライマリキーは、インデックスを作成すると自動的にインデックスにコピーされます。

制限事項

  • 1 つのテーブルに最大 16 個のインデックスを作成できます。
  • インデックスは最大 4 つのインデックス付き属性を持つことができます。 インデックス付き属性は、基本テーブルのプライマリキーと定義済みの属性で構成されています。
  • データ型として、インデックス付き属性に Integer 型、String 型または Binary 型を指定できます。 属性の制限はプライマリキーの場合と同じです。
  • 属性に Integer 型または Binary 型を指定した場合、これらのデータ型のサイズ制限は、ベース テーブルのプライマリキーの場合と同じです。
  • 属性に String 型または Binary 型を指定した場合、属性の制限はベーステーブルの場合と同じです。
  • TTL プロパティで設定されているテーブルにインデックスを作成することはできません。 そのようなインデックスを作成する場合は、DingTalk で Table Store テクニカルサポートに連絡してください。
  • Max Versions プロパティで設定されているテーブルにインデックスを作成することはできません。
  • インデックスに Stream を使用することはできません。
  • 自動インクリメントのプライマリキーを使用してテーブルにインデックスを作成することはできません。 そのようなインデックスがある場合は、Table Store テクニカルサポートへのチケットを起票し、サポートセンターにお問い合わせください。

注意事項

  • Table Store は各インデックスに対して自動補完演算を実行します。 インデックスをスキャンするときは、プライマリキー値の範囲を指定する必要があります。 一般に、範囲は負の無限大から正の無限大です。 たとえば、テーブルにプライマリキー PK0 および PK1 、さらに定義済みの属性 Defined0 が含まれているとします。

    Defined0 属性にインデックスを作成すると、Table Store は Defined0 PK0 、そしてプライマリキー PK1 を持つインデックスを作成します。 Defined0 および PK1 属性にインデックスを作成すると、Table Store は Defined0 およびプライマリキー PK1 PK0 を持つインデックスを作成します。 PK 属性にインデックスを作成すると、Table Store はプライマリキーPK1 PK0 を持つインデックスを作成します。 インデックスを作成するときは、インデックス付けする属性のみを指定できます。 Table Store は後でインデックスに対して自動補完操作を実行します。 たとえば、プライマリキー PK0 と PK1 および事前定義された属性 Defined0 を持つテーブルだとします。

    • Defined0 属性にインデックスを作成すると、Table Store はプライマリキー Defined0、PK0 および PK1 を持つインデックスを作成します。
    • PK1 にインデックスを作成すると、Table Store はプライマリキー PK0 と PK1 を持つインデックスを作成します。
  • テーブルの定義済み属性をインデックス属性として指定できます。 インデックス属性として事前定義属性を指定すると、ベース テーブルをクエリする代わりに、このインデックスをクエリして属性値を読み取ることができます。 この設定ではストレージコストが増加します。 事前定義属性をインデックス属性として指定しなかった場合は、ベーステーブルを照会する必要があります。 要件とコストに基づいてクエリモードを選択できます。
  • 設定によってインデックスの更新が遅くなる可能性があるため、インデックスのプライマリキーの最初の属性として時刻または日付に関連する属性を指定することは推奨しません。 ハッシュ関数の入力として時刻または日付に関連する属性を入力し、そのハッシュ関数によって処理された属性にインデックスを作成することを推奨します。 このような要件がある場合は、DingTalk で Table Store テクニカルサポートに連絡してください。
  • インデックスのプライマリキーの最初の属性として、カーディナリティの低い属性、列挙可能な値を持つ属性を定義することは推奨しません。 たとえば、 gender という設定値は、インデックスの水平方向のスケーラビリティを制限し、データ書き込みパフォーマンスの低下につながります。