Cassandra
Cassandra の概要
Cassandra(カサンドラ)は、高い拡張性と可用性を兼ね備えた OSS の分散データベース管理システムである。
Cassandra はもともと Facebook で大容量データを保存するために開発され、2008年にソースコードが公開された。
その後、Facebook が Google の Bigtable をモデルにした別製品である HBase を採用した流れから、採用する企業は限定的だったが、最近では Apple や Netflix などの企業が可用性などの観点から自社の大規模システムに Cassandra を採用した事例もあり、再び注目されている。
Cassandra はオープンソースプロジェクトであるため、無料でソースコード取得やプロダクション利用などが可能だが、テスト済みでサポートを受けられる DataStax 社による商用製品版も存在する。
2021年7月にメジャーリリースである 4.0.0 がリリースされた。
この主要リリースでは、以下のように機能が進化した。
- Java 11 および一時レプリケーションへの実験的サポートを追加
- メトリクスおよび YAML 構成情報を公開する Virtual Tables 機能を追加
- コンプライアンスおよびデバッグに有用な監査ログ機能を追加
- ライブトラフィックのキャプチャと再生のための Full Query Logging(FQL) 機能を追加
- ノード間メッセージプロトコルを最適化
- クラスターノード間のデータ交換に使用されるストリーミングを改善
Cassandra の主な特徴
Cassandra の主な特徴は次のとおりである。
マスターレス方式
データベースのクラスターアーキテクチャとしては「マスタースレーブ方式」が多いが、Cassandra は「マスターレス方式」になっている。
この方法では各ノードが等価であり、ノードを統括するマスターは存在しない。したがって、単一障害点が存在しない。また、レプリケーション設定により、各ノードに登録されたデータは自動的に他のノードへ伝播されるため、高い可用性を実現できる。
スキーマ定義がある
MongoDB のようなドキュメント DB や Redis のような Key-Value ストアとは異なり、Cassandra にはスキーマ定義がある。これにより、アプリケーションの開発や運用時に、開発者や運用者がデータ内容を把握しやすくなる。 また、Cassandra は RDB と異なりスキーマに完全には依存せず、1つの列に複数の値を挿入するなど、ある程度自由なテーブル構成ができる。
性能が線形にスケール
Cassandra はノードを追加して処理を拡張できる。
Cassandra は公式に性能が線形にスケールすると主張しており、Netflix が実施したベンチマーク がこれを裏付けている。
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 License version 2」に従って公開されており、営利、非営利を問わず誰でも自由かつ無料で利用、変更、再配布できる。
Cassandra の運用環境
Cassandra は Java アプリケーションである。
Oracle Java Standard Edition 8 または OpenJDK 8 の最新バージョンが必要である。Java 11 はまだ実験的サポートであり、プロダクション環境での使用は推奨されない。
cqlsh を使用するには Python 3.6 以上の最新バージョンが必要である。
Cassandra ダウンロード
http://cassandra.apache.org/download/