DynamoDB の選択テーブルクエリでグローバルセカンダリインデックス書き込みシャーディングを使用する
アプリケーションは、Amazon DynamoDB テーブル内の特定の条件を満たす項目の小さなサブセットを識別する必要があることがあります。これらの項目がテーブルのパーティションキー全体に無作為に分散されている場合は、テーブルスキャンを使用してそれらを取得できます。このオプションは高価になることもありますが、テーブル上の多数の項目が検索条件を満たす場合にはよく機能します。しかし、キースペースが大きく、検索条件が非常に選択的である場合、この戦略は、多くの不要な処理を引き起こす可能性があります。
より良い解決策は、データをクエリすることです。キースペース全体で選択クエリを有効にするには、グローバルセカンダリインデックスのパーティションキーに使用する各項目に (0-N)
値を含む属性を追加して、書き込みシャーディングを使用できます。
以下に示しているのは、これを Critical-Event ワークフローで使用するスキーマの例です。
このスキーマ設計を使用すると、イベント項目は GSI 上の複数の 0-N
パーティションに分散されるので、複合キーのソート条件を使用して分散読み込みを行い、指定された期間に特定の状態を持つすべての項目を取得できます。
このスキーマパターンは、テーブルスキャンを必要とせずに、最小限のコストで高度に選択的な結果セットを提供します。