Amazonクラウド、SSD上の新NoSQLデータベース「DynamoDB」を公開。性能をダイナミックに上げ下げ可能
「DynamoDBは、15年にわたる大規模なNoSQLデータベースとクラウドサービスから学んだことの集大成だ」(DynamoDB is the result of 15 years of learning in the areas of large scale non-relational databases and cloud services.)。Amazon Web Serviceが新サービスとしてβ公開したDynamoDBについて、Amazon.comのCTOであるWerner Vogels氏は自身のブログAll Things Distributedのエントリ「Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications」の冒頭で、このように力の入った紹介をしました。
大規模システムでもっともボトルネックになりやすいのはデータベースです。その解決策のひとつとして数年前から注目されているのが、ある程度一貫性を犠牲にしてスケーラビリティや高速性を実現するアーキテクチャを備えたNoSQLデータベースでした。
Amazonクラウドでは以前からスケーラブルで高速なNoSQLデータベースとしてSimpleDBが提供されていました。今回登場したDynamoDBはどこが違うのでしょうか? Werner氏はブログでSimpleDBの課題だったポイントを挙げています。
- SimpleDBでは、Domainと呼ばれるデータセットの管理領域があり、そこに10GBという制限があった。
- SimpleDBでは、データが大規模化するとインデックスがメモリに乗り切らなくなるケースがあり、急に性能が落ちる可能性があった。
- SimpleDBはデータの一貫性にEventually Consistent(結果整合性)を当初採用しており、これは強い一貫性を持つリレーショナルデータベースに慣れたエンジニアにとって分かりにくかった(途中から強い一貫性も追加)。
- SimpleDBはマシン時間ごとの課金体系だが、実際に料金がいくらになるのか分かりにくかった。
SimpleDBのこれらの課題を解決し、もっともスケーラブルで性能の見通しが可能なNoSQLデータベースを実現することを目指そうとすると、SimpleDBのAPIの改善では難しいことが分かったため、DynamoDBという新サービスの登場になったとのことです。
性能を自由に上げ下げでき、柔軟なスキーマ、一貫性も選べる
DynamoDBの特徴を3分で説明したビデオでは、性能を自由に選べること、データの保存にはハードディスクではなくSSDが使われていることなどが紹介されています。
性能について、Amazon Web Services ブログのエントリ「【AWS発表】 Amazon DynamoDB - インターネット時代のアプリケーションのために設計された高速でスケーラブルなNoSQLデータストレージ」でも次のように説明されています。
DynamoDBのテーブルを作成する際、どれくらいの読込みと書込みが必要か設定できます。AWSが裏側で、ミリ秒レベルの低遅延を維持しつつ、そのニーズにこたえられるように全てをセットアップします。もし後から設定を変更したければ、そのスループット設定を変更して、上げ下げすれば良いのです。
この変更はオンライン状態のまま可能。DynamoDBにはコンフィグレーションやチューニングやバックアップといったデータベース管理は不要でになっています。データは複数のゾーンで保存されているとのこと。
スキーマや一貫性については次のように説明されています。
DynamoDB tables do not have a fixed schema but instead allow each data item to have any number of attributes, including multi-valued attributes. Developers can optionally use stronger consistency models when accessing the database, trading off some performance and availability for a simpler model. They can also take advantage of the atomic increment/decrement functionality of DynamoDB for counters.
DynamoDBのテーブルは固定されたスキーマを持たず、その代わりにそれぞれのデータアイテムはマルチバリュー属性を含む任意の数の属性を持てます。デベロッパーはオプションとしてデータベースへのアクセスに強い一貫性を持たせることができ、性能と可用性をシンプルな形でトレードオフできます。またカウンターのためにDynamoDBのアトミックな値の増減機能を利用することもできます。
SimpleDBも継続提供か
DynamoDBはβ公開が始まっていますが、それがすぐにSimpleDBの提供終了を意味するわけではなさそうです。DynamoDBのページ内の「How does Amazon DynamoDB differ from Amazon SimpleDB? Which should I use?」という項目に、SimpleDBはクエリの柔軟性がある、という説明があります。
Amazon SimpleDB is a good fit for lower-scale workloads that require query flexibility.
Amazon SimpleDBはクエリの柔軟性を求めるような一定程度のワークロードに適している。