121

私はかなり長い間 MySQL を使用しており、その構造や SQL クエリなどに慣れています。

現在、AWS で新しいシステムを構築しており、DynamoDB を検討しています。現在、私はそれについて少ししか知りません。

一方が他方よりも優れていますか?

DynamoDB の利点は何ですか?

MySQL クエリなどからこのフラット スタイルの DB への移行はどのようなものですか?

4

4 に答える 4

294

本当にDynamoDBとMySQLはリンゴとオレンジです。DynamoDBはNoSQLストレージレイヤーですが、MySQLはリレーショナルストレージに使用されます。アプリケーションの実際のニーズに基づいて、何を使用するかを選択する必要があります。実際、一部のアプリケーションは、両方を使用することで十分に機能する可能性があります。

たとえば、単一のキーまたはキーと範囲の組み合わせに対して検索できるリレーショナルスキーマ(ツリー構造、スキーマのないJSON表現など)に適さないデータを保存している場合は、DynamoDB(または他のNoSQLストア)が最善の策である可能性があります。

リレーショナル構造にうまく適合するデータの明確に定義されたスキーマがあり、さまざまな方法でデータをクエリする柔軟性が必要な場合(もちろん、必要に応じてインデックスを追加する)、RDSの方が優れたソリューションになる可能性があります。 。

DynamoDBをNoSQLストアとして使用する主な利点は、クラスター化されたデータストアの管理について心配することなく、必要なレベルで読み取り/書き込みスループットが保証されることです。そのため、アプリケーションで1秒あたり1000回の読み取り/書き込みが必要な場合は、DynamoDBテーブルをそのレベルのスループットにプロビジョニングするだけで、基盤となるインフラストラクチャについて心配する必要はありません。

RDSには、インフラストラクチャ自体について心配する必要がないという同じ利点がほとんどありますが、最大のインスタンスサイズが維持できなくなるまで大量の書き込みを行う必要が生じた場合は、オプション(読み取りレプリカを使用して読み取りを水平方向にスケーリングできます)。

更新された注:DynamoDbはグローバルセカンダリインデックスをサポートするようになったため、ハッシュまたはハッシュキーと範囲キーの組み合わせ以外のデータフィールドで最適化されたルックアップを実行できるようになりました。

于 2012-12-20T16:33:16.377 に答える
170

すべての DynamoDB テーブルを RDS MySQL に移行しました。

特定のタスクに DynamoDB を使用することは理にかなっているかもしれませんが、DynamoDB の上に新しいシステムを構築することは本当に悪い考えです。最適な計画など、DB からの追加の柔軟性が常に必要です。

DynamoDB から移行した理由は次のとおりです。

  1. インデックス作成 - 新しいテーブルを作成しないと、オンザフライでキーを変更または追加することはできません。
  2. クエリ - データのクエリは非常に限られています。特に、インデックスのないデータをクエリする場合。もちろん、結合は不可能であるため、コード/キャッシュ層で複雑なデータ関係を管理する必要があります。
  3. バックアップ - このような面倒なバックアップ手順は、RDS の巧妙なバックアップに比べて残念な驚きです。
  4. GUI - UX が悪い、検索が限られている、面白くない。
  5. 速度 - RDS と比較して応答時間に問題があります。RDS の内部キャッシュに落ち着いた場所で、それを補うために精巧なキャッシュ メカニズムを構築していることに気付くでしょう。
  6. データの整合性 - 流動的なデータ構造の概念は最初は良さそうに聞こえますが、一部のデータは「確定」した方が適切です。小さなバグがデータベースを破壊しようとするとき、強い型付けはありがたいものです。DynamoDB を使用すると、あらゆる可能性があり、実際に失敗する可能性があることはすべて起こります。

現在、一部のシステムのバックアップとして DynamoDB を使用していますが、将来的には明確に定義された特定のタスクに使用することになると確信しています。それは悪い DB ではなく、コア システムの 100% を提供する DB ではありません。

利点について言えば、スケーラビリティと耐久性です。それは信じられないほど透過的にスケーリングし、(一種の) 常に稼働しています。これらは非常に優れた機能ですが、欠点を補うものではありません。

于 2013-07-30T07:46:58.033 に答える
72

こちらでAWSの説明を読むことができます

つまり、主にルックアップクエリ(Joinクエリではない)がある場合は、DynamoDB(およびその他のNoSQL DB)の方が適しています。大量のデータを処理する必要がある場合は、MySQL(およびその他のRDBMS)を使用するときに制限があります。

MySQLクエリやデータスキーマを再利用することはできませんが、NoSQLを学ぶために努力する場合は、ツールボックスに重要なツールを追加します。DynamoDBが最も簡単なソリューションを提供している場合が多くあります。

于 2012-12-20T15:25:17.993 に答える
16

DynamoDB を使用する場合、DynamoDB の項目/レコードが 400KB に制限されていることも知っておく必要があります ( DynamoDB の制限を参照)。多くのユースケースでは、これは機能しません。そのため、DynamoDB はいくつかの用途に適していますが、すべてではありません。他の NoSQL データベースの多くについても同様です。

于 2013-01-29T09:14:47.970 に答える