aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

訳:Amazon DynamoDB : いつDynamoDBを使うべきか?

http://aws.amazon.com/jp/dynamodb/#whentousedynamodb

いつDynamoDBを使うべきか?いつRDBを使うべきか?

最近のwebベースアプリケーションは大量のデータを生成・消費する。例えば、オンラインゲームをスタートするときは数千ユーザで軽いデータベース負荷(10write/sec, 50reads/sec)程度である。しかし、ゲームが成功すると、すぐに数百万人のユーザと1万~数万/secのread/writeが発生する。また、数TB/day のデータが生成される。アプリケーションをAmazon DynamoDBベースで開発することで、小さく開始することができ、ダウンタイムやコードへの修正なしに、テーブルごとのリクエストキャパシティを容易に変更できる。 Amazon DynamoDBはどんなスケールでも完全に管理された経験を提供する

Amazon DynamoDBはデータベースのスケーラビリティ、管理、性能、信頼性という重要な問題に取り組むが、リレーショナルデータベースではなく、ジョインのような複雑なリレーショナル問い合わせや複雑なトランザクションをサポートしない。アプリケーションがこの機能を必要としたり、既存のリレーショナルエンジンとの互換性に期待するなら、 Amazon Relational Database Service (RDS)を使うか、Amazon EC2上に自分でリレーショナルDBを走らせることができる。リレーショナルDBは豊富な機能を提供するが、スケールに伴う負荷は、複数インスタンスにまたがってパーティショニングや再パーティショニングを管理する必要がでてくる。これは複雑な仕事である。さらに、新しいアプリケーショに対する明示的なスケーリング要求が予想されている場合や、リレーショナルの機能が不要の場合、Amazon DynamoDBはよりフィットするかもしれない。

より詳しくは、 Running Databases on AWSページにある、様々なデータベースの代替案の情報を見て欲しい。

Amazon DynamoDBは Amazon SimpleDBとどう違うのか?どちらを使うべきか?

両サービスとも ノンリレ-ショナルDBで、DBの管理作業をなくす。Amazon DynamoDBはシームレスなスケーラビリティと、高速で予測可能な性能にフォーカスしている。Amazon DynamoDBは、要求されたスケーリング要件にあわせて、適切な台数のサーバにデータと負荷を自動的に分散する。Amazon DynamoDBのテーブルのデータ容量は無制限であり、必要なだけリクエストキャパシティのレベルを上げることができる。他方、Amazon SimpleDBは、自由度の高いクエリを要求する小規模な負荷に適している。Amazon SimpleDBは自動的に全アイテムの属性を索引化し、Amazon DynamoDBよりも多くのクエリ機能をサポートしている。しかし、Amazon SimpleDB内のテーブルは 10GBのサイズ制限とリクエストキャパシティが制限されている。もしスケールが必要なら、手動でデータを追加のSimpleDBテーブルにパーティショニングできる。Amazon CTO Werner Vogelの DynamoDB blog postでは、Amazonにおける非リレーショナルDBの進化についてさらに言及している。