1

アプリでは、多数のレコードを更新する/多数のレコードをほぼ同時にデータベースに挿入する必要があります。

アプリのボトルネックとなるような挿入/更新の制限はありますか? 挿入/更新率を最大化するためにできることはありますか?

また、更新に関して、同じレコードは更新されません。1 つのテーブル (キーによって明確に識別可能) 内の多くのレコードが更新されます。これは、更新率が大幅に高くなる可能性があることを意味しますか?

上記の私の質問は、リレーショナル データベースと NoSQL データベースに適用されます。

現在、SQL Server/MySQL のようなリレーショナル データベースの使用を検討しています。ただし、この段階では、Mongo DB/Dynamo DB のような noSQL データベースも検討するつもりです。データベースの最終的な選択は、どのデータベースがより高い挿入/更新制限を提供しているかによって異なります。 .

4

1 に答える 1

2

一般的な考慮事項

最大 R/W 容量は、ハードウェア (HDD と SSD) およびノー​​ド数に大きく依存します。また、ACID と一貫性が強制されないため、書き込み操作のために NoSQL をスケーリングする方が簡単だと思います。

質問の DynamoDB 部分について

DynamoDB はマネージド サービスです。特定の R/W 容量(いわゆる「ユニット」) を予約すると、Amazon がデータベースをスケーリングします。ただし、考慮すべき点がいくつかあります。

  • 読み取りの最大予約スループットは 10,000 です
  • 書き込みの最大予約スループットは 10,000 です

基本的に、一貫した読み取りまたは書き込みごとに、1 秒あたり、および割り切れない kB ごとに 1 ユニットを消費します。(まあ、実際には、さらにトリッキーです)。

ただし、スケーリングするために、テーブルはパーティション間で分割されます。予約されたスループットも同様です。SO、可能な限り最大のスループットに到達するには、キーをできるだけ均等に分散する必要があるとリクエストしました。

これらは、データベース側の考慮事項です。

クライアント側でも、考慮すべき複数の要因があります。

  • TCP/HTTP レイテンシ
  • 一度に開くソケットの最大数

グループ化が可能な場合は、batch_get_item および/または batch_write_items を使用して、レイテンシの影響を軽減できます。

たとえば、オフィスのコンピューターからプロビジョニングされた 1000 回の書き込みに到達できなかったので、複数のインスタンス/サーバーを使用してデータベース リクエストを発行することをお勧めします。

TL;DR (DynamoDB)

  • スループットを予約すると、Amazon はそれを提供するためにスケーリングします
  • 内部実装に関連するいくつかの落とし穴
  • レイテンシを最適化する必要がある
  • 慎重に並列化する必要があります

私は他のデータベースタイプの専門家ではないので、クライアント側の考慮事項は何らかの形で同じであると推測できます.MySQLはバイナリプロトコルを使用しているため、おそらくそれよりも少ないでしょう. また、おそらくデータベースを管理する必要があります。

于 2012-08-30T21:53:52.277 に答える