Apache Cassandraについて

Apache CassandraのスケーラブルなオープンソースNoSQLデータベースの機能をインストール、構成、および使用する方法についての開発者および管理者向けのドキュメント。

Apache Cassandra™は非常にスケーラブルなオープンソースNoSQLデータベースです。Cassandraは複数のデータ・センターやクラウドにまたがる大量の構造化データ、半構造化データ、および非構造化データを管理するのに最適です。Cassandraは、多数のコモディティ・サーバーを使用して継続的可用性、リニアなスケーラビリティ、および簡潔な運用を実現し、単一障害点がなく、柔軟性を最大限に高め応答時間を迅速化するために設計された強力なデータ・モデルを備えています。

Cassandraの仕組み

Cassandraの規模に合わせて構築されるアーキテクチャーは、ペタバイトの情報および1秒あたり数千の同時ユーザー/操作を処理できることを意味します。

Cassandraは、パーティションされた行ストア・データベースです

Cassandraのアーキテクチャーでは、権限を与えられたすべてのユーザーが、CQL言語を使用して任意のデータ・センターの任意のノードに接続し、データにアクセスできます。使い勝手がいいように、CQLはSQLと同じような構文を使用します。Cassandraと対話する最も基本的な方法は、CQLシェルのcqlshを使用することです。cqlshを使用すると、キースペースやテーブルの作成、テーブルの挿入やクエリーをはじめとする多くの操作ができます。グラフィカル・ツールを希望する場合は、DataStax DevCenterを使用できます。実稼働の場合は、CQL文をクライアントとクラスター間で受け渡しできるように、DataStaxでは多数のドライバーが提供されています。他の管理タスクはOpsCenterを使用して実行できます。

自動データ分散

Cassandraは、「リング」、つまりデータベース・クラスターに参加するすべてのノードにわたって自動的にデータを分散します。データはクラスター内のノード全体に透過的にパーティション分割されるため、クラスターにデータを分散するために開発者または管理者が実施するプログラム関連の操作もコードもありません。

組み込みレプリケーションとカスタマイズ可能なレプリケーション

また、Cassandraはカスタマイズ可能な組み込みレプリケーション機能を備えており、Cassandraリングに参加するノード全体で横断的にデータの冗長コピーを格納します。つまり、クラスター内の任意のノードが停止した場合でも、クラスター内の他のマシンにあるそのノードのデータの1つまたは複数のコピーが依然として利用できます。レプリケーションは、1つのデータ・センター、複数のデータ・センター、および複数のクラウド・アベイラビリティー・ゾーンで機能するように構成できます。

Cassandraはリニアなスケーラビリティを実現

Cassandraはリニアなスケーラビリティを実現しています。つまり、新しいノードをオンラインで追加するだけで、容量を簡単に追加できます。たとえば、2つのノードが1秒あたり100,000件の処理を行うことができる場合、4つのノードでは1秒あたり200,000件の処理を、8つのノードでは1秒あたり400,000件の処理を行うことができます。

 

Cassandraとリレーショナル・データベースとの相違点

Cassandraは、ピアツーピア通信機能を備えた分散データベースとして基礎から設計されています。ベスト・プラクティスとして、テーブルあたり1つのクエリーが必要です。これを可能にするために、データが非正規化されます。そのため、クライアント側の結合はアプリケーションで使用できますが、テーブル間の結合の概念は存在しません。

NoSQLとは

最も一般的な訳語は、「Not only SQL(SQLだけではない)」です。リレーショナル・データベース、つまりSQLデータベースとは異なるストレージの方法を使用するデータベースを意味します。さまざまなタイプのNoSQLデータベースがあるため、最も一般に使用されているタイプを直接比較するのは有益ではありません。今日のデータベース管理者は、多言語に通じていなければなりません。そのため、さまざまなRDBMSおよびNoSQLデータベースの操作方法を知っている必要があります。

CQLとは

Cassandra Query Language(CQL)は、Cassandra DBMSの主たるインターフェイスです。CQLの使用法はSQL(Structured Query Language)の使用法と似ています。CQLとSQLは、カラムと行で構成されたテーブルという抽象概念を共有しています。SQLとの主な相違点は、Cassandraが結合やサブクエリーをサポートしていないことです。その代わり、Cassandraはスキーマレベルで指定されたコレクションやクラスター化などのCQL機能を通じて非正規化を強調します。

CQLはCassandraとの対話に推奨される方法です。従来のCassandra APIと比較すると、新しいCassandraはCQLを読んだり使ったりするときのパフォーマンスと簡潔さに優れています。

CQLのドキュメントには、データ・モデリング・トピック、例、およびコマンド・リファレンスが記載されています。

Cassandraとの対話方法

Cassandraと対話する最も基本的な方法は、CQLシェルのcqlshを使用することです。 cqlshを使用すると、キースペースやテーブルの作成、テーブルの挿入やクエリーをはじめとする多くの操作ができます。グラフィカル・ツールを希望する場合は、DevCenterを使用できます。実稼働の場合は、CQL文をクライアントとクラスター間で受け渡しできるように、DataStaxではさまざまなプログラミング言語のドライバーが数多く提供されています。その他の管理タスクは、OpsCenterを使用して実行できます。

Cassandraとの間でデータを移行する方法

CQL INSERTコマンド、CQL COPYコマンド、およびCSVファイル(sstableloader)を使用してデータを挿入します。しかし実際には、クライアント・アプリケーションがテーブルのクエリーを実行し、まずデータ・モデリングを実行する方法を検討する必要があります。リレーショナルとNoSQL間のパラダイム・シフトは、RDBMSデータベースからCassandraへのデータの直線移動が失敗に終わることを意味します。

Cassandraに付属しているその他のツール

Cassandraでは、nodetoolが自動的にインストールされます。これは、Cassandraの有益なコマンドライン管理ツールです。負荷ストレスおよび基本ベンチマークのためのツールであるcassandra-stressもデフォルトでインストールされます。

Cassandraを実行するために必要なハードウェア/クラウド環境の種類

Cassandraは、一般的な仕様のコモディティ・ハードウェアで実行するよう設計されています。クラウドでは、Cassandraは最も一般的な製品に適応します。