Amazon DynamoDBとは
Amazon Web Servicesが満を持してリリースした、NoSQLサービスです。 サービスなので、もちろんハードウェアの心配や、ソフトウェアのセキュリティ対策といったものが必要なくなります。
データの堅牢性とサービスとしての可用性
データベースでの心配事といえば、データの堅牢性・可用性かと思います。
まずデータの堅牢性でいえばAmazon DynamoDBは3箇所のデータセンターにレプリカを作り、たとえデータセンター2つが潰れようともデータは守られます。可用性もまた同じく、Amazon Web Servicesが管理する複数のデータセンターにまたがった、大量のサーバによって守られているため、サーバが1つや2つ壊れた程度ではびくともしない設計になっています。
2007年に発表された論文Dynamo: Amazon’s Highly Available Key-value Storeに、そのあたりのことが詳細に書かれています。この論文はAmazon DynamoDBの論文ではありませんが、先祖にあたるAmazon’s Dynamoの論文になるので、そこまで見当違いのことは書いてないはずです。
余談ですが、私はこの論文を見たときからDynamoの虜でした。
希望するスループットを提供
データベースのもう一つの心配事といえばスループットです。 毎秒どれくらいのQueryを捌けるのかということがアプリケーションを構築する上では重要です。例えばソーシャルゲームだとか、スマホ用のゲームでは、あれよあれよとユーザが増え、アクセスが対数グラフを使わないと間に合わないような成長があったりします。 そうありたいものです。
そんな時に、Amazon DynamoDBならAPIをコールするだけで、あっという間にスループットが思うようにスケールします。
これがもし、物理サーバであればスループットあげるために、CPUがどうしようだとか、ディスクをSSDにしようかとかスループットを直接指定することはできません。冗長構成を取っていればなおさらです。 スループットがリニアにスケールするわけではないので、スループットを予測することはかなりの職人の経験と勘だけが頼りなはずです。
Amazon DynamoDBでは必要なスループットを提供するために、ハードウェアの調整は自動で行なってくれます。
スループットと可用性、堅牢性の確保がこんなに手軽に手に入るのか
Amazon DynamoDBは、今お話ししたとおり、スループット、可用性、堅牢性の全てをノーメンテナンスで使うことができるデータベースサービスです。
既にデータの欠損がないと言い切れるほどのサーバ台数を抱えていて、深夜の障害だろうが何だろうが対応してくれるデータベースエンジニアを大量に抱えいる。そしてそのエンジニアたちを楽にしてあげる気が全くないのであれば、Amazon DynamoDBに全く魅力を感じないかもしれません。