web-dev-qa-db-ja.com

DynamoDBのUUID?

テーブルに新しいアイテムを追加するときにDynamoDBに一意のIDを自動的に生成させることは可能ですか?

Java APIが@DynamoDBAutoGeneratedKeyについて言及していることに気付いたので、これをPHPでも機能させる方法があると思います。

もしそうなら、アプリケーションコードはこれらのIDを生成しますか、それともDynamoDB側で行われますか?

37
Adam

良い質問-概念的には可能ですが、これは現在DynamoDB APIレベルの機能としては利用できないようです。そのため、 CreateTablePutItem もこのような機能を参照していません。

@DynamoDBAutoGeneratedKeyお気づきの表記は Javaアノテーション です。つまり、Java SDKが実際に提供する構文糖:

Javaコンピュータプログラミング言語の注釈は、Javaソースコードに追加できる構文メタデータの特別な形式です。

など @DynamoDBAutoGeneratedKeyAmazon DynamoDBアノテーションの1つであり、Java SDKの高レベルAPI内でObject Persistence Modelの一部として提供されます(参照 Amazon DynamoDBでのオブジェクト永続性モデルの使用 ):

ハッシュキーまたは範囲キーのプロパティを自動生成としてマークします。オブジェクト永続性モデルは、これらの属性を保存するときにランダムなUUIDを生成します。自動生成キーとしてマークできるのは文字列プロパティのみです。

26
Steffen Opel

スキーマベースNode.jsのAWS dynamodbデータマッパーライブラリを使用することにより、ハッシュキー(ID)が自動的に生成されます。自動生成されたIDは、uuid v4に基づいています。

詳細については、以下のawsパッケージをご覧ください。

注釈付きデータマッパー

JavaScript用のデータマッパーパッケージ

サンプルスニペット

@table('my_table')
class MyDomainClass {
    @autoGeneratedHashKey()
    id: string;

    @rangeKey({defaultProvider: () => new Date()})
    createdAt: Date;
}
2

Nodejsを使用してJavaScriptでdynamodbを操作しているとき。 npmモジュールuuidを使用して一意のキーを生成します。

例:

id = uuid.v1();

参照: id npm

1
Sam

クライアントは、長いランダムID(DynamoDBは128ビットの整数をサポートするなど)を選択するか、クライアントのIPアドレス、CPU番号、現在のIDを含むIDを選択することで、(すべての目的と目的で)一意のIDを作成できます時間-またはこれらの線に沿って何か。 UUID標準には、これを行うための標準的な方法さえ含まれています(そして、クライアント側でそのようなUUIDを作成するためのさまざまな言語のライブラリがあります)が、実際には標準を使用する必要はありません。そして興味深い質問は、これらのアイテムがランダムなキーを持っている場合、どのようにそれらを見つけることを計画するかです。または、セカンダリインデックスを使用する予定ですか?

0
Nadav Har'El