Apache CassandraとAmazon DynamoDBの比較

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2012/1/23 updated

Apache Cassandraとは?

Apache Cassandraは、2007年にAmazonによって発表されたDynamoに関する論文からインスパイアされて開発されたNoSQL分散データベースです。2008年にFacebook社によりオープンソースとして公開されました。スケーラビリティと高可用性を求めている方には適しています。線形の拡張性とフォールトトレラントを備えていて、クラウドやオンプレミス上で構築することができ、ミッションクリティカルなデータを保管することができます。Cassandraは、複数のデータセンターでの稼働をサポートしていて、低いレイテンシーでやり取りを行う事が出来ます。万が一の災害時にも安心です。

Amazon DynamoDBとは?

Amazon DynamoDBは、シームレスに拡張ができ、高速で予測可能なパフォーマンスを提供する、フルマネージドのNoSQL(非RDBMS)です。これは、データベース管理、パフォーマンス、スケーラビリティ、および信頼性のコアな問題に対処するために設計されています。高可用性データベースのスケーリングとオペレーションの管理負担を軽減します。特徴として、データはSSD上に保管されるため高速に読み書きすることができます。また、3つのアベイラビリティゾーンに自動的に分散されます。さらに、IOPS(Input Output Per Second)を指定することができます。既にAmazon.comの買い物カゴにも使われているようです。

CassandraとDynamoDBの比較表

CassandraとDynamoDBの違いについて一覧で比較します。

Apache Cassandra Amazon DynamoDB
視点 プロダクト サービス
最大オブジェクトサイズ 2GB 64KB
一貫性のチューニング 多数 いくつか
バッチ書き込み あり あり
条件付きアップデート なし あり
TTLサポート あり なし
キーとカラムのデータモデル あり あり
カラム値のインデックス あり なし
Hadoopインテグレーション M/R, Hive, Pig M/R, Hive
複合キーサポート あり あり
複数データセンターサポート 複数のリージョン(地域) 複数のアベイラビリティゾーン(データセンター)
キャッシュの仕組み あり 不明
市販品のDiskによる高パフォーマンス あり なし
IOPS指定(読み書き速度指定) なし あり
モニタリング あり あり
バックアップ 影響度の低いインクリメンタルなスナップショット EMRを用いたS3へのバックアップ操作
デプロイ先 どこでも AWS上
環境構築 自分で 不要
保守メンテナンス 自分で 不要
運用管理 自分で 不要
スケール方法 ノード数を増やす IOPS指定

※Cassandraの構築運用サービス会社もありますが、当然別コストが掛かってきます。

どっちがいいの?

なかなか難しい判断だと思いますw。Cassandraは、オープンソースですし、どこでも動くので、社内サーバー群の中に置いて自前運用してもいいですし、クラウド上に置いても使えます。一方で、DynamoDBは、Amazonが全て管理/メンテナンスしていますので、インフラのことを気にせずに使えますし、IOPS指定もできてしまいます。Cassandraの利用者いわく、1$あたりのデータI/Oは、Cassandraが勝っているようですが、管理コストを考慮するとDynamoDBも負けてはいません。さらに、Cassandraを使ったスケールアウトやチューニングのできるエンジニアを探すのは最も困難です。CassandraはDynamoを参考にして作られているということで、両者の起源は同じですが、オープンソースのCassandraの機能追加のスピードは著しいものがあります。一方で、そんなに機能追加されて誰が使いこなすのかwという問題もあります。

まとめ

Apache CassandraとAmazon DynamoDBについて比較表を用いてご紹介しました。この比較表は、Cassandra関連のコミュニティに書いてあった内容ですので、多少Cassandra寄りかもしれませんが、メジャーな製品との比較はとても参考になりますね。NoSQLなデータベースは、データストア周りのパフォーマンスを求めるデベロッパーにとって有力な選択肢になってきたことは間違いありません。レスポンスタイムがビジネスに直結する昨今、ぜひCassandraやDynamoDBを使って、その高いパフォーマンスを体験してみましょう!今日から君もダイナもん!

参考資料

Here’s a summary of how DynamoDB compares to Cassandra:

Benchmarking Cassandra Scalability on AWS - Over a million writes per second