Cassandra アーキテクチャ

目次

本項では Apache 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

©2020 株式会社INTHEFOREST