Cassandra データ構造

2017/12/10

Cassandra データ構造

Cassandraのデータ構造について記述する。

データアーキテクチャ

Cassandraは、APアーキテクチャである。
CAP定理のAvailability、Partition Toleranceに注力している。

  • ハイパフォーマンス
  • 分散システム
  • シングルポイントでのダウンがない
  • 高可用性



RDBMSとCassandraを比較する。

RDBMS Cassandra
横型データとなり、パフォーマンスはそこまで高くない。 縦型データとなり、パフォーマンスが高い。
シングルノードでのデータ構造。 マルチノードによる分散データ構造。
データ管理がしやすい。 Aデータ管理がしずらい。
複数テーブルを跨ぐトランザクションサポート。 単一テーブルのトランザクションのみサポート。
シングルポイント障害点。 シングルポイントではく、マルチポイント。
大規模データに未対応。 大規模データに対応。
シングルノード。 マルチノード。
シングルノードで永続化。 マルチノードで永続化。
シャーディングによるReadのみのスケールができる。 Read・Write問わずにスケールできる。
サーバのスペックのスケールのみ。 サーバの台数のスケールできる。

アーキテクチャ

マスターレスなアーキテクチャ。



Cassandraは、マスターレスをコンセプトに作られている。
ただ、クラスタ構築するときには一時的にコンタクト通信するためのSeedノードを定義する必要はある。

ゴシップ通信で全てのノードが通信している。

クラスタ構成の全体容量をあげたいときは、システムを停止せずに、既存のクラスターに新しいノードを追加するだけで可能。

読み込みと書き込み

Read、Write両方ハイパフォーマンスのシステム。

  1. Commit LogへのRead・Writeで高速化
  2. MemTableを利用
  3. MemTableとSSTaleの最適化

データの分散

クラスタ内でパーティションキー単位でデータを分散する。

また、Cassandraはコンパクションにより、自動でデータの偏りをなくして、データの分散を行う。

レプリケーション

Cassandraは複数の物理データセンターでのクラスタ構築が可能である。
また、内部的に仮想データセンターの定義ができる。

SimpleStrategy

データセンターは1つ、論理ラックは1つしかないポリシー。
Partitionerによって決定されたノードに最初のレプリカを配置し、以降のノードは、リングに時計回りに配置される。

NetworkTopologyStrategy

複数のデータセンター、複数のラックがあるポリシー。
クラスターを作成する際、データセンターまたはラックが1つしかない場合でも、将来的に増加する可能性がある場合はこのStrategyにするべきである。

トランザクション

Cassandraは、RDBMSのACIDをサポートしていない。
AIDのサポートである。

Cassandraは、AtomicIsolatedDurableが強い。
また、Cassandraは一貫性レベルをコントロールすることができる。
強い一貫性が必要な場合は、強くすることができ、強い一貫性が必要なければ、設定しないことができる。