11

DynammoDB に、自動インクリメントされた ID をテーブルの主キーとして保存するオプションはありますか? また、サーバー時刻を「作成日時」フィールド (ユーザー作成日時など) としてテーブルに格納する必要もあります。しかし、DynamoDB やその他の AWS サービスからサーバー時間を取得する方法が見つかりません。

手伝ってくれませんか?

  1. DyanmoDB テーブルで自動インクリメントされた ID を操作する
  2. フィールドのような「作成時」のテーブルにサーバー時間を格納します。

ありがとう。

4

3 に答える 3

10

実際、DynamoDB には機能がほとんどなく、これがまさにその主な強みです。シンプルさ。

  • ID や UUID を自動的に生成する方法はありません。
  • 日付を自動生成する方法はありません

「日付」の問題については、クライアント側で簡単に生成できるはずです。ISO 8601 の日付形式を使用することをお勧めしますか? プログラマーにもコンピューターにも優しいです。

ほとんどの場合、アイテムの自動 ID を使用するよりも良い方法があります。これは、多くの場合、SQL または MongoDB の世界から取り入れた悪い習慣です。たとえば、電子メールまたはログインは、ユーザーにとって完璧な ID になります。しかし、ID が役立つ特定のケースがあることは知っています。

このような場合、独自のシステムを構築する必要があります。このSO 回答とDynamoDB-Mapper ドキュメントのこの記事で、その方法を説明します。役立つことを願っています

于 2012-11-07T15:00:40.143 に答える
8

自動インクリメント ID を使用するのではなく、GUID を使用することを検討してください。理論上のスループットが向上し、障害処理が改善されます。失われるのは、日付によって処理される自然な時間順だけです。

次に使用可能な ID を生成するよう Dynamo に要求する必要がないため、スループットが向上します (これには、ロックを取得し、いくつかの番号を取得し、それらの番号を他に取得しないことを確認するリソースが必要になります)。Dynamo への接続が失われた場合 (Dynamo がダウンするか、バースト状態になり、アプリケーションが現在プロビジョニングされているスループットよりも多くの作業を行っている場合) は、より適切な障害処理が行われます。書き込み専用アプリケーションは引き続き「動作」し、ID を備えた完全なデータを生成し、それをキューに入れて dynamo に書き込むことができ、ID の衝突を心配する必要はありません。

于 2012-11-08T04:13:01.933 に答える