Apache Cassandra
Apache Cassandraとは、Key-Value Store型の分散データベース管理システムである。Facebook社が開発し、現在はApacheソフトウェア財団が開発しているオープンソースソフトウェアである。
インストール
Apache Cassandraのインストール方法
- WebブラウザでApache CassandraプロジェクトのWebサイトを開く。
http://cassandra.apache.org/
- ダウンロードページからCassandra Serverをダウンロードする。
- ダウンロードしたファイルを任意のフォルダに展開する。
- 環境変数を設定する。
Apache Cassandraの環境変数
環境変数 |
説明 |
JAVA_HOME |
Javaのホームディレクトリのパス |
CASSANDRA_HOME |
Cassandraを配置したディレクトリのパス |
- Cassandraの設定ファイル(%CASSANDRA_HOME%/conf/cassandra.yaml)を編集する。
cassandra.yamlの設定項目
項目 |
説明 |
cluster_name |
クラスタの名前 |
data_file_directories |
データを保存するディレクトリのパス |
commitlog_directory |
コミットログを保存するディレクトリのパス |
- Apache Log4jの設定ファイル(%CASSANDRA_HOME%/conf/log4j-server.properties)を編集する。
log4jの設定項目
項目 |
説明 |
log4j.appender.R.File |
システムログを保存するファイルのパス |
- 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