9

アイテムをタイムスタンプ順に並べる方法が必要なので、共通のハッシュ キーと UNIX タイムスタンプを範囲キーとして使用することを検討しています。

FAQによると:

When storing data, Amazon DynamoDB divides a table into multiple partitions and 
distributes the data based on the hash key element of the primary key. The provisioned 
throughput associated with a table is also divided among the partitions; each 
partition's throughput is managed independently based on the quota allotted to it. 
There is no sharing of provisioned throughput across partitions. 

共通のハッシュ キーを使用しているため、すべての負荷が 1 つのパーティションに移動するため、不均一な負荷分散は発生しません。

したがって、100 writeこのパーティションにプロビジョニングすると、すべての容量が使用されますが、容量が無駄にならないのは良いことだと思いますか?

4

2 に答える 2

8

パーティションではなく、DynamoDB テーブルに書き込みと読み取りをプロビジョニングします。容量はパーティション間で分散/共有されますが、基盤となるハードウェアのために、各パーティションには固定のレート制限もあります。

単一のハッシュ キーを使用することで、プロビジョニングして支払っている数に関係なく、テーブルで実際に実行できる読み取りと書き込みの数に一定の制限があります。

dynamodb はテーブルをさらに分割して負荷処理を並列化できないため、その制限を超えてスケ​​ーリングすることはできません。これは、AWS がプロビジョニング数の増加に応じてシステムをスケーリングする主な方法の 1 つです。

最初はその制限に達しない可能性がありますが、Amazon は、スケールする方法で AWS を使用することを望んでいるため、このアプローチを推奨していません。

于 2013-03-20T17:02:12.540 に答える
7

あなたの場合の一般的なトリックは、

  • hash_key=%Y-%m-%d(日のタイムスタンプ)
  • range_key=iso-8601_timestamp+uuid

このようにして、データは日ごとに複数のパーティションに分割されます (ある日から別の日への負荷が非常に均等であると仮定します) が、範囲キーにより、条件付きqueryの非常に細かい呼び出しが可能になりBETWEENます。このuuid部分は、(正確に) 同時に挿入されたであろうレコードを区別するためにここにあります。

于 2013-03-27T13:03:03.847 に答える