アーキテクチャーの概要
DataStax Enterpriseを理解して使用するための基本情報。
cassandra.yaml
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra.yaml |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra.yaml |
このページでは、DataStax Enterpriseを理解して使用するための基本情報について説明します。DataStax Enterpriseはリレーショナル・データベースとは異なるため、このページの各セクションを読んで理解しておくと、多くの時間を節約できます。
DataStax Enterpriseの仕組み
DataStax Enterprise(DSE)バージョン6.7は、ハイブリッド・クラウド向けに設計された業界で最も優れた分散クラウド ・データベースです。オンプレミス、リージョン全体、クラウドなど、必要に応じてどこでも実行できる唯一のActive Everywhere(どこでもアクティブ)なデータベース・プラットフォームを容易にデプロイします。Apache Cassandra™の優れたディストリビューションのすべての機能と共に、プロダクション・クラウド・アプリケーションに必要なエンタープライズ・ツールや専門家のサポートを利用できます。
DSEは、単一障害点なしで複数のノードにわたってビッグ・データのワークロードを処理するように設計されています。そのアーキテクチャーは、システムおよびハードウェアには障害が発生するものだということを前提にしています。
DSEは、クラスター内のすべてのノードにデータが分散されるピアツーピア分散システムを同種ノードに横断的に採用することによって障害の問題に対処します。各ノードは、ピアツーピアのゴシップ通信プロトコルを使用して、クラスター全体でそれ自体および他のノードに関する状態情報を頻繁に交換します。各ノードでシーケンシャルに書き込まれるコミット・ログにより、データの永続性を保証するために書き込みアクティビティが捕捉されます。データは、その後インデックスが付けられ、memtableと呼ばれるライトバック・キャッシュに似たインメモリー構造に書き込まれます。
メモリー構造が満杯になると、データはSSTableデータ・ファイル形式でディスクに書き込まれます。すべての書き込みは自動的にパーティションされ、クラスター全体にレプリケーションされます。DSEは、コンパクションを使用して、定期的にSSTableを統合し、トゥームストーンによって削除とマークされた古いデータを破棄します。トゥームストーンは、カラムが削除されることを示す、行内のマーカーです。コンパクションの際に、マークが付いたカラムは削除されます。クラスター全体のデータの整合性を確保するために、さまざまなリペア・メカニズムが採用されています。
DSEデータベースは、行ストア・データベースにパーティションされます。ここで、行は必要なプライマリ・キーを使用してテーブルに構成されています。データベースのアーキテクチャーでは、権限を与えられたすべてのユーザーが、CQL言語を使用して任意のデータ・センターの任意のノードに接続し、データにアクセスできます。使い勝手がいいように、CQLはSQLと同じような構文を使用し、テーブル・データと連動します。開発者は、CQLシェル(cqlsh)コマンド、DataStax Studioを介して、およびアプリケーション言語用のドライバーを使用して、CQLにアクセスできます。通常、クラスターには、さまざまなテーブルで構成されたアプリケーションごとに1つのキースペースがあります。
クライアントの読み取りまたは書き込み要求は、クラスター内の任意のノードに送信できます。要求を持つクライアントがノードに接続されると、そのノードは、クライアントの特定の操作のコーディネーター・ノードとしての役目を果たします。コーディネーターは、クライアント・アプリケーションと、要求されたデータを所有するノード間で、代理人としての役目を果たします。コーディネーターは、クラスターがどのように構成されているかに基づいて、リングのどのノードが要求を受け取るかを決定します。
主な構成要素
- ノード
- データの格納先。これは基本的なデータベース・インフラストラクチャー・コンポーネントです。
- クラスター
- データを格納するための分散ノードのグループ。クラスターは、1つのノード、1つのデータ・センター、または複数のデータ・センターを持つことができます。
- データ・センター
- レプリケーションを目的にクラスター内でまとめて構成された関連ノードのグループ。データ・センターは、物理的なデータ・センターまたは仮想データ・センターが可能です。別々のデータ・センターを使用することで、トランザクションが他のワークロードの影響を受けるのを防ぎ、レイテンシーを低くします。レプリケーション係数に基づいて、複数のデータ・センターにデータが書き込まれます。データ・センターが複数の物理的な所在地をまたぐことがあってはなりません。
- レプリケーション
- 複数のノードにあるデータのコピーを格納するプロセス。レプリケーションにより、信頼性とフォールト・トレランスが確保されます。コピーの数はレプリケーション係数により設定されます。
- コミット・ログ
- すべてのデータは、永続性のためにまずコミット・ログに書き込まれます。そのすべてのデータがSSTableにフラッシュされた後、コミット・ログをアーカイブ、削除、または再利用できます。
- SSTable
- ソート済み文字列テーブル(SSTable)は、データベースがmemtableを定期的に書き込む不変データ・ファイルです。SSTableは追加書き込みのみで、ディスクにシーケンシャルに格納され、データベース・テーブルごとに維持されます。
- トゥームストーン
- カラムが削除されることを示す、行内のマーカーです。コンパクションの際に、マークが付いたカラムは削除されます。
- CQLテーブル
- テーブル行単位でフェッチされる、順序付きのカラムの集まりです。テーブルはカラムから構成され、プライマリ・キーを持ちます。
DataStax Enterpriseを構成するための主なコンポーネント
- ゴシップ
- DSEクラスターに属する他のノードの場所と状態の情報を探して共有するピアツーピア通信プロトコルです。ゴシップ情報は、ノードが再起動されるとすぐに使用できるように、各ノードによってローカルに保持されます。
- パーティショナー
- パーティショナーは、ロード・バランス機能のために、クラスター内のノード全体にデータを均等に分散します。
- レプリケーション係数
- レプリケーションは、複数のノードにあるデータのコピーを格納するプロセスです。レプリケーションにより、信頼性とフォールト・トレランスが確保されます。コピーの数はレプリケーション係数により設定されます。
- レプリカ配置ストラテジ
- レプリケーション・ストラテジは、レプリカをどのノードに配置するかを決定します。データの最初のレプリカは、単に最初のコピーであるということだけです。いかなる意味合いにおいても独自性を持つわけではありません。将来拡張する必要が生じたときに、複数のデータ・センターに拡張するのが簡単なため、ほとんどのデプロイには、NetworkTopologyStrategyを強く推奨します。
- スニッチ
- スニッチは、ノードのIPアドレスから、ラックやデータ・センターなどの物理位置および仮想位置にマップします。スニッチは、データベースに対してネットワーク・トポロジーを伝えることで、要求を効率的にルーティングさせ、マシンをデータ・センターおよびラックにグループ分けしてデータベースがレプリカを分散できるようにします。
- cassandra.yaml構成ファイル
- クラスターの初期化プロパティの設定、テーブルのキャッシング・パラメーター、調整およびリソース利用のプロパティ、タイムアウト設定、クライアント接続、バックアップ、およびセキュリティのためのメインの構成ファイルです。デフォルトでは、ノードは管理対象のデータをcassandra.yaml ファイルに設定されているディレクトリーに格納するように構成されます。
- dse.yaml構成ファイル
- DSE Advanced Security(DSE拡張セキュリティ)、DSE Search、DSE Graph、およびDSE Analytics用の構成ファイル。
- システム・キースペース・テーブルのプロパティ
- ストレージ構成属性は、プログラムで、またはCQLシェル(cqlsh)などのクライアント・アプリケーションを使用して、キースペースまたはテーブルごとに設定します。
- データのロードとアンロード
- DataStax Bulk Loaderツールを使用して、DSEデータを効率的にロードおよびアンロードします。このツールは、別のDSEまたはApache Cassandra™クラスターからDSEにデータを移行します。
- Cassandra 2.1以降のすべてのデータ・ソースからデータをアンロードします
- DSE 5.0以降にデータをロードします
- CSV形式とJSON形式をサポートします
データ・モデリングの基本概念
- データ・モデルの設計
- データ・モデルの設計は、リレーショナル・データベースで行うような実体と関係のモデリングではなく、実行するクエリーに基づいています。
- キースペース
- リレーショナル・データベースのスキーマに類似した、データの最も外側のグループ化。すべてのテーブルはキースペースに属します。キースペースは、レプリケーション用の定義コンテナーです。
- テーブル
- テーブルにはプライマリ・キーに基づいてデータが格納されます。プライマリ・キーは、パーティション・キーとオプションのクラスター化カラムで構成されます。マテリアライズド・ビューは、カーディナリティが高いデータ用に追加することもできます。
- パーティション・キーは、データが格納されるノードを定義し、データを論理グループに分割します。データを均等に分散し、特定のクエリーを満たすパーティション・キーを定義します。複数のパーティション間でのクエリーと書き込み要求は、可能なら避けてください。
- クラスター化カラムは、パーティション内での行のソート順序を定義します。クラスター化カラムを定義するときは、データの目的を考慮してください。たとえば、日付順にソートされた最新のトランザクションを降順に取得します。
- マテリアライズド・ビューとは、別のテーブルのデータから、新しいプライマリ・キーと新しいプロパティを使用して構築したテーブルのことです。クエリーはプライマリ・キー定義によって最適化されます。マテリアライズド・ビューのデータは、ソース・テーブルを変更すると自動的に更新されます。
注: 以前のバージョンのDataStax EnterpriseとApache Cassandra™では、カラム・ファミリーは多くの点でテーブルと同義でした。 - データ・モデリングに関するその他の情報
-
- CQLドキュメントのデータ・モデリングの概念。
- CQLドキュメントのCQLを使用する。
- CQLドキュメントのマテリアライズド・ビューの作成。
- 「時系列データ・モデリングの概要」ホワイト・ペーパー。
- 「ユーザー・プロファイル・データ・モデリングの概要」ホワイト・ペーパー。
- 「スーパー・モデラーになる」ウェビナー。
- 「使用されないデータ・モデル、有効期間の長いデータ・モデル」ウェビナー。