Cassandra データ構造
Cassandraのデータ構造について記述する。
データアーキテクチャ
Cassandraは、APアーキテクチャである。
CAP定理のAvailability、Partition Toleranceに注力している。
- ハイパフォーマンス
- 分散システム
- シングルポイントでのダウンがない
- 高可用性
RDBMSとCassandraを比較する。
RDBMS | Cassandra |
---|---|
横型データとなり、パフォーマンスはそこまで高くない。 | 縦型データとなり、パフォーマンスが高い。 |
シングルノードでのデータ構造。 | マルチノードによる分散データ構造。 |
データ管理がしやすい。 | Aデータ管理がしずらい。 |
複数テーブルを跨ぐトランザクションサポート。 | 単一テーブルのトランザクションのみサポート。 |
シングルポイント障害点。 | シングルポイントではく、マルチポイント。 |
大規模データに未対応。 | 大規模データに対応。 |
シングルノード。 | マルチノード。 |
シングルノードで永続化。 | マルチノードで永続化。 |
シャーディングによるReadのみのスケールができる。 | Read・Write問わずにスケールできる。 |
サーバのスペックのスケールのみ。 | サーバの台数のスケールできる。 |
アーキテクチャ
マスターレスなアーキテクチャ。
Cassandraは、マスターレスをコンセプトに作られている。
ただ、クラスタ構築するときには一時的にコンタクト通信するためのSeedノードを定義する必要はある。
ゴシップ通信で全てのノードが通信している。
クラスタ構成の全体容量をあげたいときは、システムを停止せずに、既存のクラスターに新しいノードを追加するだけで可能。
読み込みと書き込み
Read、Write両方ハイパフォーマンスのシステム。
- Commit LogへのRead・Writeで高速化
- MemTableを利用
- MemTableとSSTaleの最適化
データの分散
クラスタ内でパーティションキー単位でデータを分散する。
また、Cassandraはコンパクションにより、自動でデータの偏りをなくして、データの分散を行う。
レプリケーション
Cassandraは複数の物理データセンターでのクラスタ構築が可能である。
また、内部的に仮想データセンターの定義ができる。
SimpleStrategy
データセンターは1つ、論理ラックは1つしかないポリシー。
Partitionerによって決定されたノードに最初のレプリカを配置し、以降のノードは、リングに時計回りに配置される。
NetworkTopologyStrategy
複数のデータセンター、複数のラックがあるポリシー。
クラスターを作成する際、データセンターまたはラックが1つしかない場合でも、将来的に増加する可能性がある場合はこのStrategyにするべきである。
トランザクション
Cassandraは、RDBMSのACIDをサポートしていない。
AIDのサポートである。
Cassandraは、Atomic、Isolated、Durableが強い。
また、Cassandraは一貫性レベルをコントロールすることができる。
強い一貫性が必要な場合は、強くすることができ、強い一貫性が必要なければ、設定しないことができる。