DynamoDB-インデックス

DynamoDBは、主キー属性のインデックスを使用してアクセスを改善します。これらは、アプリケーションへのアクセスとデータの取得を高速化し、アプリケーションの遅延を減らすことでパフォーマンスの向上をサポートします。

二次インデックス

セカンダリインデックスは、属性サブセットと代替キーを保持します。インデックスを対象とするクエリまたはスキャン操作のいずれかを介して使用します。

その内容には、投影またはコピーする属性が含まれます。作成時に、インデックスの代替キーと、インデックスに投影する属性を定義します。次に、DynamoDBは、テーブルから供給された主キー属性を含む、属性のインデックスへのコピーを実行します。これらのタスクを実行した後は、テーブルで実行するかのようにクエリ/スキャンを使用するだけです。

DynamoDBは、すべてのセカンダリインデックスを自動的に維持します。追加や削除などのアイテム操作では、ターゲットテーブルのインデックスを更新します。

DynamoDBは2種類のセカンダリインデックスを提供します-

  • Global Secondary Index−このインデックスには、ソーステーブルとは異なる可能性のあるパーティションキーとソートキーが含まれます。インデックスに対するクエリ/スキャンがすべてのテーブルデータとすべてのパーティションにまたがる機能があるため、ラベル「グローバル」を使用します。

  • Local Secondary Index−このインデックスは、パーティションキーをテーブルと共有しますが、異なるソートキーを使用します。その「ローカル」な性質は、すべてのパーティションが同一のパーティションキー値を持つテーブルパーティションにスコープすることに起因します。

使用するのに最適なインデックスのタイプは、アプリケーションのニーズによって異なります。次の表に示されている2つの違いを考慮してください-

品質 グローバルセカンダリインデックス ローカルセカンダリインデックス
キースキーマ 単純または複合主キーを使用します。 常に複合主キーを使用します。
主な属性 インデックスパーティションキーとソートキーは、文字列、数値、またはバイナリテーブル属性で構成できます。 インデックスのパーティションキーは、テーブルパーティションキーと共有される属性です。ソートキーは、文字列、数値、またはバイナリテーブル属性にすることができます。
パーティションごとのサイズ制限キー値 サイズ制限はありません。 パーティションキー値に関連付けられたインデックス付きアイテムの合計サイズに10GBの最大制限を課します。
オンラインインデックス操作 テーブルの作成時にそれらを生成したり、既存のテーブルに追加したり、既存のテーブルを削除したりできます。 テーブルの作成時に作成する必要がありますが、削除したり、既存のテーブルに追加したりすることはできません。
クエリ これにより、テーブル全体とすべてのパーティションをカバーするクエリが可能になります。 これらは、クエリで提供されたパーティションキー値を介して単一のパーティションをアドレス指定します。
一貫性 これらのインデックスのクエリは、結果整合性のあるオプションのみを提供します。 これらのクエリは、結果整合性または強い整合性のオプションを提供します。
スループットコスト これには、読み取りと書き込みのスループット設定が含まれます。クエリ/スキャンは、テーブルではなくインデックスから容量を消費します。これは、テーブル書き込みの更新にも適用されます。 クエリ/スキャンはテーブルの読み取り容量を消費します。テーブル書き込みはローカルインデックスを更新し、テーブル容量単位を消費します。
投影 クエリ/スキャンは、インデックスに投影された属性のみを要求でき、テーブル属性の取得はできません。 クエリ/スキャンは、投影されていない属性を要求できます。さらに、それらの自動フェッチが発生します。

セカンダリインデックスを使用して複数のテーブルを作成する場合は、順番に作成してください。つまり、テーブルを作成し、それがアクティブ状態に達するのを待ってから、別のテーブルを作成して再度待機します。DynamoDBでは同時作成は許可されていません。

各セカンダリインデックスには特定の仕様が必要です-

  • Type −ローカルまたはグローバルを指定します。

  • Name −テーブルと同じ命名規則を使用します。

  • Key Schema −最上位の文字列、数値、またはバイナリタイプのみが許可され、インデックスタイプが他の要件を決定します。

  • Attributes for Projection − DynamoDBはそれらを自動的に投影し、任意のデータ型を許可します。

  • Throughput −グローバルセカンダリインデックスの読み取り/書き込み容量を指定します。

インデックスの制限は、テーブルごとに5つのグローバルと5つのローカルのままです。

インデックスに関する詳細情報には、次のコマンドでアクセスできます。 DescribeTable。名前、サイズ、アイテム数を返します。

Note −これらの値は6時間ごとに更新されます。

インデックスデータへのアクセスに使用されるクエリまたはスキャンで、テーブル名とインデックス名、結果に必要な属性、および条件ステートメントを指定します。DynamoDBには、結果を昇順または降順で返すオプションがあります。

Note −テーブルを削除すると、すべてのインデックスも削除されます。