Cassandraの概要
Cassandra(カサンドラ)は高い拡張性と、可用性を兼ね備えたOSSの分散データベース管理システムです。
CassandraはもともとFacebookにおいて、大容量のデータを格納するために開発され、
2008年にソースコードが公開されました。
その後FacebookがGoogleのBigtableをモデルとした別プロダクトであるHBaseを採用した動きから採用する企業は限定的でしたが、近年AppleやNetflixといった企業が可用性などの観点から自社の大規模システムにCassandraを採用したこともあり、再び注目を浴びています。
Cassandraはオープンソースプロジェクトであるため、無償でのソースコード取得・本番利用などが可能ですが、テスト済みでサポートを受けることが可能なDataStax社による商用製品版も存在します。
2021年7月にメジャーリリースである4.0.0がリリースされました。
このメジャーリリースでは
- Java11や一時レプリケーションの実験的サポートの追加
- メトリックやYAML構成情報の公開するVirtual Tables機能の追加
- コンプライアンスやデバッグに有用な監査ログ機能の追加
- ライブトラフィックのキャプチャやリプレイのためのFull Query Logging(FQL)機能の追加
- ノード間メッセージプロトコルの最適化
- クラスタノードのデータ交換で利用されるストリーミングの改善
Cassandraの主な特徴
Cassandraの主な特徴は以下の通りです。
マスターレス方式
データベースのクラスタアーキテクチャとしては「マスタスレーブ方式」の採用が
大半を占めていますが、Cassandraは「マスターレス方式」を採用しています。
この方式では各ノードが等価であり、ノードを統括するマスタは存在しません。
そのため、単一障害点が存在しません。加えて、レプリケーション設定により
各ノードに登録されたデータはそれぞれ自動で別ノードに伝播されるため、
高い可用性を実現する事が可能です。
データの分散配置
Cassandraはコンシステント・ハッシュ法というパーティションキーに基づいて、データをクラスタ内の各ノードに分割して配置するハッシュ法を採用しているため、一部のノードがダウンした場合やスケールアウトするような場合でも、サービスを継続して利用することが可能です。
スキーマ定義がある
MongoDBなどのドキュメントDBや、RedisなどのKey-Valueストアと異なり、
Cassandraにはスキーマ定義があります。これによってアプリケーションの
開発や運用時に開発者・運用者にてデータ内容の把握が容易になります。
加えて、CassandraはRDBと異なり、スキーマに完全に依存しているわけ
ではなく、一つのカラムに対して複数の値を挿入するなどある程度自由な
テーブル構成を実現することができます。
性能が線形にスケールする
Cassandraは、ノードを追加することで処理をスケールさせることができます。
Cassandraは公式で性能が線形にスケールすることを謳っており、
Netflix(http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html)が実施したベンチマークもそれを裏付けています。
AppleのiCloudなど、大規模なシステムでCassandraが採用されている理由の一端としては、
このようなスケール性能があると考えられます。
SQLに似たクエリが利用可能(CQL)
Cassandraでは、CQL(Cassandra Query Language)というSQLライクなクエリで 操作を行うことが出来ます。
SELECTやUPDATE、DELETEなど、基本的なクエリはSQL ほぼそのままで実行することができます。GROUP BYはバージョン3.4.3から実装されサポートされています。 ただしJOINなどの集約は実装されていません。
また、関数やORDER BYなどの並び替えについても制限がかかっているため、注意が必要です。
Cassandraのライセンス
Cassandraのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、
誰でも自由かつ無償で利用・改変・再配布できるようになっています。
Cassandraの動作環境
CassandraはJavaアプリケーションです。
- Oracle Java Standard Edition 8またはOpenJDK8の最新バージョンが必要となります。(Java 11はまだ実験的サポートであり、プロダクション環境での利用は推奨されません)
- cqlshを利用するためにはPython3.6以上の最新バージョンが必要となります。
Cassandraのダウンロード
http://cassandra.apache.org/download/
Cassandraのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。