Apache Cassandraとは

Apache Cassandra概説

Facebookで生まれAmazonのDynamoとGoogleのBigTableをベースに作られたApache Cassandraは、Apacheのトップレベルプロジェクトであり、大量の構造化データを多数のコモディティサーバーに分散させて管理できる、高い可用性でサービスを提供する単一障害点のない分散ストレージシステムです。Cassandraは、何百ものノードで構成される(場合によっては地理的に複数の場所にある別々のデータセンターに分散された)インフラストラクチャの上で動作するように作られています。この規模になると、大小の構成要素がひっきりなしに故障します。Cassandraは、このような故障が起きたときにも運用を継続できることで、そのサービスに依存するソフトウェアシステムの信頼性とスケーラビリティを支えます。Cassandraは多くのデータベース的な側面を持っており、一般になじみのあるデータベース環境と同等の設計方式や実装方式を採用していますが、完全なリレーショナルデータモデルをサポートするものではありません。むしろ、データのレイアウトや形式を動的にコントロールできるシンプルなデータモデルをクライアントに対して提供します。Cassandraシステムは、安価なコモディティハードウェアの上で動作し、読み取り効率を犠牲にせずに高い書き込みスループットを実現することで、所有コストを下げながら、企業のビッグデータ環境の価値を大幅に高めるように設計されました。

これらの目標は大部分において達成され、Cassandraの利点はさまざまな業界で実感されています。AdobeComcasteBayRackspaceNetflixTwitterCiscoなどの大手を含む数多くの企業がApache Cassandraの導入に成功し、その恩恵にあずかっています。 規模の大きなプロダクション環境になると、300台を超えるサーバーから成るクラスタで数百テラバイトのデータを扱っています。なお、Cassandraは最新のApacheライセンスに基づいて利用できます。

Apache Cassandraの主要機能

  • エラスティックなスケーラビリティ ― 顧客やデータの増加に対応して、いつでも必要に応じて容量を簡単に追加できます。

  • 「Always on」(常時オン)のアーキテクチャ ― (従来のマスタ/スレーブ型のRDBMSやその他のNoSQLソリューションと異なり)単一障害点がないため、ビジネスに不可欠な、決して停止できないアプリケーションに対し継続的運用を提供します。

  • 高速でリニアなパフォーマンス ― 秒単位以下の応答時間とリニアなスケーラビリティ(例えば、スループットをノード2つで2倍に、ノード4つで4倍にするなど)を可能にすることで、利用者が当たり前のように期待する応答性能を提供します。

  • 柔軟なデータストレージ ― 今日のアプリケーションを駆動する、構造化、準構造化、あるいは非構造化データ形式を含むあらゆるデータ形式を容易にサポートします。また、データに対するニーズの変化に応じて、データ構造の変更にも動的に対応します。

  • 容易なデータの分散 ― 複数データセンター、クラウド、またクラウドとオンプレミスとの混合環境など、近年ますます一般的になりつつあるデプロイ環境をまたいでデータをレプリケートすることで、データを好きな場所に分散できる最大限の自由を備えます。任意のノードの読み取り、書き込みが可能で、すべての変更がクラスタ全体で自動的に同期化されます。

  • シンプルな運用 ― クラスタのすべてのノードが同等であるため、複雑な設定を管理する必要がなく、運用管理の作業が非常に簡素化されます。

  • トランザクションのサポート ― すべての書き込みをコミットログで捕捉し、その冗長性によってハードウェア故障時のデータの永続性を保証するとともに、トランザクションの独立性と原子性を保つことでACIDに準じた原子性、独立性、永続性を提供するほか、一貫性のレベルを調節することができます。

パフォーマンス比較:Apache Cassandra、HBase、MongoDB

NoSQLデータベースのパフォーマンステストの概要

様々な条件のもとでのCassandraを含むNoSQL環境のパフォーマンス挙動を知ることは重要です。データベースが稼働することになる環境で正式な実証試験(POC:Proof of Concept)を行うのが、プラットフォームを評価する最良の方法です。POCの手続きに、構成、パラメータ、想定されるデータと同時実行ユーザーによる負荷など、適切なベンチマークを含めることで、ITとビジネスの双方のステークホルダーは、検討対象プラットフォームについて深い洞察と、その環境における業務アプリケーションの性能の見通しが得られます。

様々なNoSQLプラットフォームのベンチマーク分析や試験が第三者により行われており、Apache Cassandraはその中でも、NoSQLの採用に関心のある企業に対して推奨されるプラットフォームとして常に選ばれています。そうしたベンチマーク分析の1つに、トロント大学のエンジニアたちによるものがあります。6つの異なるデータストアを評価し、Apache Cassandraが「すべての実験で明白な勝者」であると結論付けました。このエンジニアたちによるレポート「Solving Big Data Challenges for Enterprise Application Performance Management」(英語)は、徹底しており、複雑です。また、データベースとオープンソースを対象としたコンサルティング会社であるEnd Point社は、DataStax社に依頼された分析において、Apache Cassandra、 Apache HBase、及びMongoDBを含む最有力のNoSQLデータベースを対象にAWS EC2上で様々な負荷をかけてベンチマークを実施しました。End Point社によるテストの結果は「Benchmarking Top NoSQL Databases」(英語)と題する包括的なホワイトペーパーとして入手できます。

全般的な結果をいくつか見てゆく前に、試験対象のNoSQLデータベースの違いについて簡単に説明しておきましょう。

  • Apache Cassandraは、前述のように、多数のコモディティサーバーをまたいで大量のデータを扱えるように設計された高度にスケーラブルで、高パフォーマンスの分散データベースであり、単一障害点のない高い可用性を備えています。

  • Apache HBaseは、GoogleのBigTableをモデルにして作成されたオープンソースの非リレーショナルな分散データベースで、Javaで書かれています。Apache Software FoundationのApache Hadoopプロジェクトの一環として開発されており、HDFS(Hadoop Distributed Filesystem)の上で動作し、Hadoopに対しBigTableに似た機能を提供します。

  • MongoDBは、従来のテーブルベースのリレーショナルデータベース構造を避けて、JSON形式ドキュメントと動的スキーマを採用することで、特定の種類のアプリケーションにおいて、データの統合をより簡単かつより高速にできるようにした、クロスプラットフォームのドキュメント指向データベースシステムです。

End Point社は、これらのNoSQLデータベースのベンチマークを、水平にスケーラブルなサービスをホスティングする業界標準プラットフォームであるAmazon Web Services EC2インスタンスの上で実施しました。AWSのCPUとI/Oの変動の影響を最小限にするために、同社は各テストを3つの異なる方法で3回実施しました。さらに、クラウド環境で経験することのある、いわゆる「lame instance」や「noisy neighbor」効果による影響を減らすために、それぞれのテストのテスト実行ごとに新しいEC2インスタンスを使用しました。

NoSQLデータベースのパフォーマンステスト結果

読み取り/書き込みの混合作業負荷

読み取り/書き込みの混合作業負荷は、OLTPデータベース環境で可能なスループットを示す指標、すなわち1秒あたりトランザクション数です。増加するスループットを扱えることは、その環境にとっては重要です。データベースがビジネスの成長にどれだけ適切に対応できるのかを示すからです。データベースが、増加するスループットに適切に対応できるということはまた、データベースが適切にスケールすることを意味します。Cassandraは、他の環境に比べ、高いレベルで増加するトランザクションに対して、より適切かつ効率的に対応できることが明らかにされています。それにより、ビジネスの拡大と成功を確かなものにします。

Read/write mix workload performance results: Cassandra vs HBase vs MongoDB

全作業負荷のもとでの読み取りレイテンシ

ビジネスアプリケーションにとって、レイテンシは生産性を測る指標です。トランザクションが完了するまでにかかる時間を示します。可能限り瞬時に近い応答のユーザーエクスペリエンスまたはトランザクションが必須のビジネスにとって、過剰なレイテンシは致命的です。Amazon社が、100msのレイテンシが生じるたびに1%の売り上げが失われると定量化したように、レイテンシが大きいほど、ユーザーエクスペリエンスにはマイナスの影響があります。一般的に、レイテンシは作業負荷の増大に応じて大きくなるため、Cassandraのようなデータベース環境を配備することが、大きな規模でもレイテンシを確実に緩和する手立てとなります。

Read latency across all workloads results: Cassandra vs HBase vs MongoDB

結論はNoSQLデータベース

本稿で分析した測定値は、Apache Cassandraが最適なNoSQLデータベースとして何百社もの企業のビジネスリーダーやテクニカルリーダーに選ばれることを確かなものとした、数多くの測定値のごく一部に過ぎません。どのデータベース(Cassandra、HBase、MongoDB)にも、当然ながらそれぞれに有利なシナリオがあります。重要なのは、前述のようなスループットまたはレイテンシを重視するのか、または、単一障害点がないことや、ビジネスの急拡大に環境が追随できるエラスティックなスケーラビリティを備えることなど、アーキテクチャ上の利点の方に関心があるかにかかわらず、現在及びこの先のビジネスのニーズに対応できる能力のある選択肢を選ぶことです。HBaseは、分析を行う場合には非常に優れた選択肢ですが(Hadoopの上でHBaseを実行するのが主流です)、高速なトランザクションを頼りとするビジネスアプリケーションにとっては良い選択肢ではありません。運用の面でも非常に複雑で、複数のデータセンターをサポートする場合に問題が生じることがあります。

MongoDBは、小規模な環境や、スケーラビリティの点で多くを求めない環境ではすばらしい選択になります。しかし、MongoDBは、企業が求める多くの機能を備えていません。例えば、スケーラビリティ以外にも、単一障害点がないこと、アップタイムの保証、そしてマルチデータセンター対応の実績などです。

もう1つ、他の技術的な点と同様に重要な考慮すべき点は、プラットフォームを取り巻くコミュニティの活動レベルです。Apache Cassandraは、(ストレージとスループットの双方の)高いスケーラビリティ、マルチデータセンター導入の実績、管理のしやすさなどを通して、アプリケーションの成功、ひいてはビジネスの成功を確かなものとする機能を提供するだけでなく、Apache Cassandraコミュニティには、そのプラットフォームを利用する様々な業界の技術ユーザーやビジネスユーザーが数多く参加しています。