web-dev-qa-db-ja.com

AWS MySQL RDSとAWS DynamoDB

私はかなり前からMySQLを使用しており、その構造とSQLクエリなどに満足しています。

現在、AWSで新しいシステムを構築していますが、DynamoDBを検討しています。現在、私はそれについて少しだけ知っています。

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

DynamoDBの利点は何ですか?

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

96
Adam

それについてのAWSの説明を読むことができます こちら

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

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

55
Guy

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

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

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

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

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

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

228
Mike Brant

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

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

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

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

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

利点に関しては、スケーラビリティと耐久性と言えます。信じられないほど透過的にスケーリングし、常に(一種の)アップします。これらは本当に素晴らしい機能ですが、欠点を補うものではありません。

133
Yami Glick

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

11
Ali