Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

ソートキーを使用してデータを整理するためのベストプラクティス

DynamoDB テーブルで、テーブルの各項目を一意に識別する主キーは、パーティションキーだけでなくソートキーから構成されている場合があります。

設計が優れたソートキーには、2 つの主な利点があります。

  • 関連情報を 1 つの場所にまとめて、効率的にクエリを実行することができます。ソートキーを慎重に設計することで、starts-withbetween>< などの演算子による範囲のクエリを使用して、一般的に必要な関連項目のグループを検索することができます。

  • 複合ソートキーを作成すれば、データの階層的 (1 対多) な関係を定義して、任意の階層レベルでクエリを実行することができます。

    たとえば、地理的場所を示すテーブルでは、次のようにソートキーを構成できます。

    [country]#[region]#[state]#[county]#[city]#[neighborhood]

    これにより、これらの集計レベルのいずれかの場所のリスト (country から neighborhood、またその間にあるすべてのもの) に対して、範囲のクエリを効率的に行うことができます。

バージョンコントロールにソートキーを使用する

多くのアプリケーションでは、監査またはコンプライアンス目的で項目レベルのリビジョン履歴を保持し、最新バージョンを簡単に取得できる必要があります。ソートキープレフィックスを使用してこれを実現する効果的な設計パターンがあります。

  • 新しい項目ごとに、コピーを 2 つ作成します。一方は、ソートキーの冒頭にバージョン番号 0 のプレフィックス (例: v0_) を、もう一方には、バージョン番号 1 のプレフィックス (v001_) を付加します。

  • 項目が更新されるたびに、更新されたバージョンのソートキーの次の上位バージョンプレフィックスを使用して、更新後の内容をバージョンのプレフィックス 0 の項目にコピーします。つまり、任意の項目の最新バージョンは、0 のプレフィックスを使用して簡単に見つけることができます。

たとえば、部品メーカーは、以下に示すようなスキーマを使用する場合があります。

主キーとデータ項目の属性を持つテーブルを示すバージョン管理の例。

Equipment_1 項目は、さまざまな監査人によって、一連の監査が行われます。新しい各監査の結果は、テーブルの新しい項目に取り込まれます。バージョン番号 1 から始まり、その後のリビジョンごとに番号が増えます。

新しいリビジョンが追加されるたびに、アプリケーション層でゼロバージョンの項目 (ソートキーが v0_Audit) の内容が、新しいリビジョンの内容に置き換えられます。

アプリケーションで最新の監査ステータスを取得する必要がある場合は、ソートキープレフィックス v0_ をクエリできます。

アプリケーションでリビジョン履歴全体を取得する必要がある場合は、その項目のパーティションキーの下にあるすべての項目をクエリして、v0_ 項目をフィルタで除外することができます。

この設計では、ソートキープレフィックスの後にソートキーの各パート ID が含まれている場合、機器の複数の部分を監査することもできます。

このページの内容: