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 のようなクエリで操作できる。 SELECTUPDATEDELETE など基本的なクエリは 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/