私はかなり長い間 MySQL を使用しており、その構造や SQL クエリなどに慣れています。
現在、AWS で新しいシステムを構築しており、DynamoDB を検討しています。現在、私はそれについて少ししか知りません。
一方が他方よりも優れていますか?
DynamoDB の利点は何ですか?
MySQL クエリなどからこのフラット スタイルの DB への移行はどのようなものですか?
私はかなり長い間 MySQL を使用しており、その構造や SQL クエリなどに慣れています。
現在、AWS で新しいシステムを構築しており、DynamoDB を検討しています。現在、私はそれについて少ししか知りません。
一方が他方よりも優れていますか?
DynamoDB の利点は何ですか?
MySQL クエリなどからこのフラット スタイルの DB への移行はどのようなものですか?
本当にDynamoDBとMySQLはリンゴとオレンジです。DynamoDBはNoSQLストレージレイヤーですが、MySQLはリレーショナルストレージに使用されます。アプリケーションの実際のニーズに基づいて、何を使用するかを選択する必要があります。実際、一部のアプリケーションは、両方を使用することで十分に機能する可能性があります。
たとえば、単一のキーまたはキーと範囲の組み合わせに対して検索できるリレーショナルスキーマ(ツリー構造、スキーマのないJSON表現など)に適さないデータを保存している場合は、DynamoDB(または他のNoSQLストア)が最善の策である可能性があります。
リレーショナル構造にうまく適合するデータの明確に定義されたスキーマがあり、さまざまな方法でデータをクエリする柔軟性が必要な場合(もちろん、必要に応じてインデックスを追加する)、RDSの方が優れたソリューションになる可能性があります。 。
DynamoDBをNoSQLストアとして使用する主な利点は、クラスター化されたデータストアの管理について心配することなく、必要なレベルで読み取り/書き込みスループットが保証されることです。そのため、アプリケーションで1秒あたり1000回の読み取り/書き込みが必要な場合は、DynamoDBテーブルをそのレベルのスループットにプロビジョニングするだけで、基盤となるインフラストラクチャについて心配する必要はありません。
RDSには、インフラストラクチャ自体について心配する必要がないという同じ利点がほとんどありますが、最大のインスタンスサイズが維持できなくなるまで大量の書き込みを行う必要が生じた場合は、オプション(読み取りレプリカを使用して読み取りを水平方向にスケーリングできます)。
更新された注:DynamoDbはグローバルセカンダリインデックスをサポートするようになったため、ハッシュまたはハッシュキーと範囲キーの組み合わせ以外のデータフィールドで最適化されたルックアップを実行できるようになりました。
すべての DynamoDB テーブルを RDS MySQL に移行しました。
特定のタスクに DynamoDB を使用することは理にかなっているかもしれませんが、DynamoDB の上に新しいシステムを構築することは本当に悪い考えです。最適な計画など、DB からの追加の柔軟性が常に必要です。
DynamoDB から移行した理由は次のとおりです。
現在、一部のシステムのバックアップとして DynamoDB を使用していますが、将来的には明確に定義された特定のタスクに使用することになると確信しています。それは悪い DB ではなく、コア システムの 100% を提供する DB ではありません。
利点について言えば、スケーラビリティと耐久性です。それは信じられないほど透過的にスケーリングし、(一種の) 常に稼働しています。これらは非常に優れた機能ですが、欠点を補うものではありません。
こちらでAWSの説明を読むことができます。
つまり、主にルックアップクエリ(Joinクエリではない)がある場合は、DynamoDB(およびその他のNoSQL DB)の方が適しています。大量のデータを処理する必要がある場合は、MySQL(およびその他のRDBMS)を使用するときに制限があります。
MySQLクエリやデータスキーマを再利用することはできませんが、NoSQLを学ぶために努力する場合は、ツールボックスに重要なツールを追加します。DynamoDBが最も簡単なソリューションを提供している場合が多くあります。
DynamoDB を使用する場合、DynamoDB の項目/レコードが 400KB に制限されていることも知っておく必要があります ( DynamoDB の制限を参照)。多くのユースケースでは、これは機能しません。そのため、DynamoDB はいくつかの用途に適していますが、すべてではありません。他の NoSQL データベースの多くについても同様です。