DynamoDB のアトミック カウンターの信頼性 質問する

DynamoDB のアトミック カウンターの信頼性 質問する

私は使用を検討していましたアマゾンダイナモDB私のアプリケーションで、それについて質問があります原子カウンター信頼性。

私は分散アプリケーションを構築しており、同時に、 そして一貫して、Dynamo の属性に格納されているカウンターを増分/減分します。同時実行レベルが非常に高い (たとえば、平均同時ヒット率が 20,000 だとすると、1 か月あたり約 520 億回の増分/減分になります) 重い同時実行環境では、Dynamo のアトミック カウンターがどの程度信頼できるのか疑問に思っていました。

カウンターは信頼性が高く、一度もないヒットを逃します。誰かがこのような重要な環境で DynamoDB をテストしたことがありますか?

ありがとう

ベストアンサー1

DynamoDB は、キーを複数のサーバーに分割することでスケーリング特性を獲得します。これは、Cassandra や HBase などの他の分散データベースのスケーリング方法に似ています。DynamoDB では、データを複数のサーバーに移動するだけでスループットを向上でき、各サーバーが同時接続の合計数 / サーバー数を処理できるようになります。FAQで最大スループットを達成する方法については、以下を参照してください。

Q: プロビジョニングされたスループットのレベルを常に達成できますか?

Amazon DynamoDB は、すべてのプライマリキーにわたって比較的ランダムなアクセスパターンを想定しています。リクエストによってプライマリキー間でトラフィックがかなり均等に分散されるようにデータモデルを設定する必要があります。アクセスパターンが非常に不均一または偏っている場合、プロビジョニングされたスループットのレベルを達成できない可能性があります。

Amazon DynamoDB は、データを保存するときに、テーブルを複数のパーティションに分割し、プライマリキーのハッシュキー要素に基づいてデータを分散します。テーブルに関連付けられたプロビジョニングされたスループットもパーティション間で分割されます。各パーティションのスループットは、割り当てられたクォータに基づいて個別に管理されます。パーティション間でプロビジョニングされたスループットが共有されることはありません。したがって、Amazon DynamoDB のテーブルは、ワークロードがハッシュキー値全体にかなり均一に分散されている場合に、プロビジョニングされたスループット レベルを最もよく満たすことができます。ハッシュキー値全体にリクエストを分散すると、リクエストがパーティション全体に分散され、プロビジョニングされたスループット レベルを完全に達成するのに役立ちます。

主キー間でワークロード パターンが不均一で、プロビジョニングされたスループット レベルを達成できない場合は、プロビジョニングされたスループット レベルをさらに高めることで、各パーティションのスループットを高め、スループットのニーズを満たすことができる可能性があります。ただし、主キー間で比較的ランダムなアクセス パターンを実現するために、要求パターンまたはデータ モデルの変更を検討することをお勧めします。

つまり、直接増分されるキーが 1 つしかない場合、そのキーは 1 つのサーバー上に存在する必要があるため、スケールしません。この問題に対処する方法は他にもあります。たとえば、DynamoDB へのフラッシュ増分によるメモリ集約 (ただし、信頼性の問題が発生する可能性があります) や、増分が複数のキーに分散され、シャード カウンター内のすべてのキーを取得して読み戻すシャード カウンター (http://whynosql.com/scaling-distributed-counters/)。

おすすめ記事