DynamoDB パーティションキーを設定する方法

Dynamodb Patishonkiwo She Dingsuru Fang Fa



データベースの生産性は、データのアクセシビリティに依存しています。これは、複数のオブジェクトからアイテムを検索すると多忙になる可能性があるためです。多くの場合、データベースへのクエリ方法は常に重要な考慮事項です。パーティション キーは、非常に効率的なクエリを作成する場合はいつでも、DynamoDB の主要なエントリ ポイントです。

通常、テーブル全体のパーティション キーは一意です。したがって、1 つのテーブルに同じパーティション キーを持つ 2 つ以上のアイテムを含めることはできませんが、インデックスで使用するとその逆が発生する可能性があります。また、パーティション キーは不変であるため、テーブルを作成すると変更できません。







この記事では、パーティション キーについて説明します。パーティション キーが必要な理由と、パーティション キーを設定する際に従うべきベスト プラクティスに焦点を当てます。最後に、DynamoDB パーティション キーがどのように重要であるかを見ていきます。



DynamoDB パーティションキーとは何ですか? なぜ重要なのですか?

パーティション キーは DynamoDB の単純なプライマリ キーであり、多くの場合、単一の属性で構成されます。 DynamoDB テーブルの各項目には、高速で効率的なクエリ プロセスを可能にする一意のパーティション キーがあります。



主キーとソート キーを組み合わせて、2 つの属性を含む複合主キーを作成できます。一緒に使用すると、並べ替えキーの値を使用して、パーティション キーの下にすべてのデータを整理できます。





DynamoDB は項目と呼ばれる属性のコンソーシアムとしてデータを予約するため、属性には簡単にアクセスできるように一意のプライマリ値キーがあります。特に、DynamoDB の項目は、ほとんどのデータベース システムのレコード、フィールド、列、または行に似ています。

さらに、DynamoDB では、データを最大 10 GB のストレージ ユニットのパーティションに分散できます。したがって、各テーブルには 1 つ以上のパーティションを含めることができます。パーティション キーの値をデータベースの内部ハッシュ関数への入力として使用し、ハッシュ関数からの出力を使用して、アイテムが格納されるパーティションを決定できます。また、アイテムの場所によって、アイテムが格納されるパーティションが決まります。



DynamoDB パーティションキーを設定する方法

概念をまだ理解していない場合、パーティション キーの設定は困難な作業になる可能性があります。ただし、必要なヒントとコツを集めれば、このプロセスは簡単かつ効率的になります。パーティション キーを設定する際に従うべきベスト プラクティスの一部を次に示します。

1. 適切なパーティション キーを選択する

パーティション キーの種類によって、データのクエリの利便性と効率が決まります。これらはデータを照会するための主要なエントリ ポイントであり、各アプリケーションのアクセス パターンを定義することが重要です。

DynamoDB パーティション キーを設定するときは、カーディナリティの高い属性を使用することをお勧めします。高カーディナリティ属性は、各アイテムの個別の値を特徴とし、employee_id、employee_no、order_id、emailid、customerid、または orderid を含めることができます。

2. PK 命名規則を使用する

多くの場合、パーティション キーは pk 命名規則を使用します。この命名方法は、表現される項目タイプまたはモデルに基づいて区別することなく、正確な命名メカニズムを保証します。

たとえば、テーブル内の Post モデルと User モデルのパーティション キーとして postID と userID を使用したくなるかもしれませんが、DynamoDB ではテーブルごとに 1 つのパーティション キーしか使用できません。したがって、1 つのテーブルで 2 つを使用することはできません。ソート キーのないテーブルは、ID パーティション キーを持つことができることに注意してください。

3.複合属性を使用する

一部のテーブルは、複合キーの恩恵をより受けます。つまり、一意のキーを形成するには複数の属性が必要です。たとえば、customer_ID、country_code、および product_ID を便利に使用して、パーティション キー (customerid#countrycode#productid) を形成できます。同時に、order_id をソートキーとして使用できます。

4.乱数を適切に追加する

キーごとに膨大な量の書き込みが予想される場合は、追加のプレフィックスまたはサフィックスを使用すると、使用頻度の高いケースがより効率的になります。たとえば、一連の乱数とともに請求書番号をパーティション キーとして使用できます。パーティション キーのさまざまなセクションを区切ることを忘れないでください。たとえば、パーティション キーとしての InvoiceNumber#125656#0 は、1 秒あたり数千回の書き込みを伴う大量の使用に最適です。

DynamoDB パーティション キーを作成する

ソート キーと同様に、DynamoDB でパーティション キーを作成するには、テーブルのキー スキーマを作成する必要があります。もちろん、これはテーブルを作成するときに発生します。これには、多くの場合、属性タイプと一緒に属性名を使用して属性を記述する必要があります。次の構文が役に立ちます。

属性名=文字列、キータイプ=文字列 ...

指定された構文では、属性名は属性の実際の名前ですが、属性タイプは String(S)、Number(N)、または Binary(B) のいずれかです。

以下に示すように、JSON 構文の使用を選択することもできます。

[

{

'属性名': '文字列',

'KeyType': 'ハッシュ'

}

...

]

どの構文を選択しても、パーティション キーを作成しているため、属性の役割は HASH 関数を想定しています。反対に、キー タイプは、ソート キーを作成するときに RANGE 関数を想定しています。

最後に、次のユーティリティを使用してパーティション キーを変更することもできます。

DynamoDBClient.updateItem({
'TableName': 'myTable_Name',
'鍵': {
'pk': {
'S': 'my_PartitionKey'
}
}、
'UpdateExpression': 'SET #emailaddress = :emailaddress',
'式属性名': {
'#email': 'メールアドレス'
}、
'式属性値': {
':電子メールアドレス': {
'S': ' [メール保護] '
}
}
}))

指定されたユーティリティは、電子メール属性を更新して、 [メール保護] パーティション キー (pk) が my_PartitionKey と等しいアイテムの場合。

結論

DynamoDB パーティション キーを設定する場合、単一の普遍的な方法はありません。パーティション キーの作成と使用は、ユース ケースによって異なります。さらに、利用可能なさまざまなアプローチを調べて、アプリケーションに最適なアプローチを見つけることができます。指定されたガイドラインに従っていることを確認してください。