Apache Cassandra

Apache Cassandraとは、Key-Value Store型の分散データベース管理システムである。Facebook社が開発し、現在はApacheソフトウェア財団が開発しているオープンソースソフトウェアである。

インストール

Apache Cassandraのインストール方法

  1. WebブラウザでApache CassandraプロジェクトのWebサイトを開く。
    http://cassandra.apache.org/
  2. ダウンロードページからCassandra Serverをダウンロードする。
  3. ダウンロードしたファイルを任意のフォルダに展開する。
  4. 環境変数を設定する。
    Apache Cassandraの環境変数
    環境変数 説明
    JAVA_HOME Javaのホームディレクトリのパス
    CASSANDRA_HOME Cassandraを配置したディレクトリのパス
  5. Cassandraの設定ファイル(%CASSANDRA_HOME%/conf/cassandra.yaml)を編集する。
    cassandra.yamlの設定項目
    項目 説明
    cluster_name クラスタの名前
    data_file_directories データを保存するディレクトリのパス
    commitlog_directory コミットログを保存するディレクトリのパス
  6. Apache Log4jの設定ファイル(%CASSANDRA_HOME%/conf/log4j-server.properties)を編集する。
    log4jの設定項目
    項目 説明
    log4j.appender.R.File システムログを保存するファイルのパス
  7. Cassandraのバッチファイル(%CASSANDRA_HOME%/bin/cassandra.bat)を編集する。(-Xmsプロパティなど)

cassandra.yaml

cassandra.yaml はApache Cassandraの設定ファイルである。

cluster_name
クラスタの名前
num_tokens
他のノードと比較してトークンの数が多いほど、このノードが保存するデータの割合が大きくなる。ハードウェアの性能が同じであれば、すべてのノードが同じ数のトークンを持つようにするのがよい。
allocate_tokens_for_keyspace
このノードに対して num_tokens 個のトークンの自動割り当てをトリガする。
allocate_tokens_for_local_replication_factor
キースペースやデータセンターに関係なく、Replica factorが明示的に設定される。NTSのようなデータセンター内のレプリカファクターである。
initial_token
トークンを手動で指定することができる。
hinted_handoff_enabled
グローバルに有効にするには、"true "または "false "のいずれかを指定する。
hinted_handoff_disabled_datacenters
trueの場合、hinted handoffを実行しないデータセンターのブラックリストが表示される。
max_hint_window
死んだホストがヒントを生成できる最大時間を定義する。この時間死んでいると、生きているのが確認されて再びダウンするまで、そのホストに対する新しいヒントは作成されない。
hinted_handoff_throttle
配信スレッドごとの最大スロットル(KB/秒)。これはクラスタ内のノード数に比例して減少する。
max_hints_delivery_threads
ヒントの配信に使用するスレッド数
hints_directory
Cassandraがヒントを保存するためのディレクトリ。設定されていない場合、デフォルトのディレクトリは $CASSANDRA_HOME/data/hints である。
hints_flush_period
内部バッファからディスクにヒントをフラッシュする頻度を指定する。
max_hints_file_size
1つのヒントファイルの最大サイズ(単位:メガバイト)
max_hints_size_per_host
到達不能なホストのヒントを保存するためのファイルサイズの上限をmebibytesで指定する。
auto_hints_cleanup_enabled
有効期限切れや孤立したヒントファイルの自動クリーンアップを有効/無効にする。ディスク上のヒントを保存するには、このオプションを無効にする。
hints_compression
ヒントファイルに適用する圧縮。省略した場合、ヒントファイルは無圧縮で書き込まれる。LZ4、Snappy、Deflateの各圧縮方式がサポートされている。
hint_window_persistent_enabled
持続的なヒントウィンドウを有効または無効にする。

trueを指定すると、max_hint_windowより前に保存されたヒントがない場合、ヒントは保存される。これは、ノードが再起動し続け、ヒントがまだ配信されていない場合、そのノードのヒントを無期限に保存することになるためである。

falseに設定すると、ヒントの対象である各ノードがmax_hint_window以下にダウンした場合のみ、ヒントが保存される。

Amazon Keyspaces

Amazon Keyspaces (Apache Cassandra 用) は、Apache Cassandra 互換のマネージド・データベース・サービスである。

事例

イギリスの銀行であるMonzoは、ほぼすべての永続的なデータストレージにCassandraを使用している。

NetflixはストリーミングサービスのバックエンドデータベースとしてCassandraを使用している。

参考文献

The Apache Software Foundation (2022) Apache Cassandra

Monzo Bank Limited (2022) We secured thousands of Cassandra clients to keep Monzo's data safe

Netflix, Inc. (2022) NoSQL at Netflix