Cassandra アーキテクチャ
概要
Apache Cassandra はオープンソースの分散型 NoSQL データベースであり、Eventual Consistency(結果整合性)を実現し、パーテーション化された、キーバリュー型データ構造と列指向データストアを合わせ持つ。
Apache Cassandra は当初、Staged Event-Driven Architecture(SEDA)を使用して、Amazon の Dynamo 分散ストレージおよびレプリケーション技術と Google の Bigtable データおよびストレージエンジンモデルを組み合わせて、Facebook で設計・実装された。Dynamo と Bigtable は両者とも、スケーラブルで信頼性が高く可用性の高いストレージシステムを必要とする要件を満たすために開発されたが、それぞれ改善の余地を残した。
Cassandra は両方のシステムの長所の組み合わせとして、データ量とクエリ量の両方に対する大規模ストレージ要件を満たすために設計された。様々なアプリケーションがグローバルレプリケーション、高可用性、低レイテンシーの読み取りと書き込みを必要とし始め、当時のリレーショナルデータベースシステムではこのグローバルスケールなアプリケーションが求める要件を満たす事が出来ず、新しい種類のデータベースモデルを設計することが不可欠となった。
Cassandra のようなシステムは、これらの課題に対応出来るよう設計されてあり、以下の設計目標を追求する:
-
完全なマルチマスターレプリケーション
-
低レイテンシーでのグローバルな可用性
-
低スペックハードウェアでのスケーラビリティ
-
プロセッサーの追加毎にリニアなスループット増加
-
オンラインでのロードバランシングおよびクラスター増加
-
パーテーション化されたキー指向クエリ
-
柔軟なスキーマ
機能
Cassandra はデータベーススキーマの作成および更新、データへのアクセスをするための SQL に似た言語である Cassandra Query Language(CQL)を提供している。CQL はノードのクラスター内で以下を使用してデータの整理を可能とする:
-
キースペース:データセットのレプリケーションを定義する。例えば、レプリケーションが行われるデータセンターとコピーされる数。キースペースはテーブルを含む。
-
テーブル:パーテーションのまとまりに対する型付けされたスキーマを定義する。Cassandra のテーブルはダウンタイム無しでカラムを追加できる。テーブルはパーテーションを含み、パーテーションは行を含み、行はカラムを含む。
-
パーテーション:Cassandra のすべての行が持たなければならないプライマリキーの必須部分を定義する。パフォーマンスの良いクエリはパーテーションキーをクエリに含む。
-
行:パーテーションキーと任意な一つ以上のクラスタリングキーより作成される一意なプライマリキーにより識別されるひとまとまりのカラムを含む。
-
カラム:行に含まれる、データ型が定義されている一つのデータ。
CQL はパーテーション化されたデータセットに対して以下のような多数の高度な機能をサポートする:
本ドキュメントに関するお問い合わせ
株式会社INTHEFOREST