テーブルに新しいアイテムを追加するときにDynamoDBに一意のIDを自動的に生成させることは可能ですか?
Java APIが@DynamoDBAutoGeneratedKeyについて言及していることに気付いたので、これをPHPでも機能させる方法があると思います。
もしそうなら、アプリケーションコードはこれらのIDを生成しますか、それともDynamoDB側で行われますか?
良い質問-概念的には可能ですが、これは現在DynamoDB APIレベルの機能としては利用できないようです。そのため、 CreateTable も PutItem もこのような機能を参照していません。
@DynamoDBAutoGeneratedKey
お気づきの表記は Javaアノテーション です。つまり、Java SDKが実際に提供する構文糖:
Javaコンピュータプログラミング言語の注釈は、Javaソースコードに追加できる構文メタデータの特別な形式です。
など @DynamoDBAutoGeneratedKey
はAmazon DynamoDBアノテーションの1つであり、Java SDKの高レベルAPI内でObject Persistence Modelの一部として提供されます(参照 Amazon DynamoDBでのオブジェクト永続性モデルの使用 ):
ハッシュキーまたは範囲キーのプロパティを自動生成としてマークします。オブジェクト永続性モデルは、これらの属性を保存するときにランダムなUUIDを生成します。自動生成キーとしてマークできるのは文字列プロパティのみです。
スキーマベースNode.jsのAWS dynamodbデータマッパーライブラリを使用することにより、ハッシュキー(ID)が自動的に生成されます。自動生成されたIDは、uuid v4に基づいています。
詳細については、以下のawsパッケージをご覧ください。
サンプルスニペット
@table('my_table')
class MyDomainClass {
@autoGeneratedHashKey()
id: string;
@rangeKey({defaultProvider: () => new Date()})
createdAt: Date;
}
クライアントは、長いランダムID(DynamoDBは128ビットの整数をサポートするなど)を選択するか、クライアントのIPアドレス、CPU番号、現在のIDを含むIDを選択することで、(すべての目的と目的で)一意のIDを作成できます時間-またはこれらの線に沿って何か。 UUID標準には、これを行うための標準的な方法さえ含まれています(そして、クライアント側でそのようなUUIDを作成するためのさまざまな言語のライブラリがあります)が、実際には標準を使用する必要はありません。そして興味深い質問は、これらのアイテムがランダムなキーを持っている場合、どのようにそれらを見つけることを計画するかです。または、セカンダリインデックスを使用する予定ですか?