Cassandra-アーキテクチャ
Cassandraの設計目標は、単一障害点なしで複数のノードにわたるビッグデータワークロードを処理することです。Cassandraは、ノード全体にピアツーピア分散システムを備えており、データはクラスター内のすべてのノードに分散されます。
クラスター内のすべてのノードは同じ役割を果たします。各ノードは独立しており、同時に他のノードに相互接続されています。
クラスター内の各ノードは、データがクラスター内の実際にどこにあるかに関係なく、読み取りおよび書き込み要求を受け入れることができます。
ノードがダウンすると、ネットワーク内の他のノードから読み取り/書き込み要求を処理できます。
Cassandraでのデータレプリケーション
Cassandraでは、クラスター内の1つ以上のノードが特定のデータのレプリカとして機能します。一部のノードが古い値で応答したことが検出された場合、Cassandraは最新の値をクライアントに返します。最新の値を返した後、Cassandraはread repair バックグラウンドで古い値を更新します。
次の図は、Cassandraがクラスター内のノード間でデータレプリケーションを使用して単一障害点がないことを確認する方法の概略図を示しています。
Note −Cassandraは Gossip Protocol バックグラウンドでノードが相互に通信し、クラスター内の障害のあるノードを検出できるようにします。
Cassandraのコンポーネント
カサンドラの主要コンポーネントは次のとおりです-
Node −データが保存される場所です。
Data center −関連するノードのコレクションです。
Cluster −クラスターは、1つ以上のデータセンターを含むコンポーネントです。
Commit log−コミットログは、Cassandraのクラッシュリカバリメカニズムです。すべての書き込み操作は、コミットログに書き込まれます。
Mem-table− mem-tableは、メモリに常駐するデータ構造です。コミットログの後、データはmem-tableに書き込まれます。単一列のファミリの場合、複数のメモリテーブルが存在する場合があります。
SSTable −内容がしきい値に達したときに、データがメモリテーブルからフラッシュされるディスクファイルです。
Bloom filter−これらは、要素がセットのメンバーであるかどうかをテストするための、迅速で非決定的なアルゴリズムに他なりません。これは特別な種類のキャッシュです。ブルームフィルターは、すべてのクエリの後にアクセスされます。
Cassandraクエリ言語
ユーザーは、Cassandra Query Language(CQL)を使用して、ノードを介してCassandraにアクセスできます。CQLはデータベースを扱います(Keyspace)テーブルのコンテナとして。プログラマーはcqlsh: CQLまたは個別のアプリケーション言語ドライバーを操作するためのプロンプト。
クライアントは、読み取り/書き込み操作のために任意のノードにアプローチします。そのノード(コーディネーター)は、クライアントとデータを保持しているノードの間でプロキシを再生します。
書き込み操作
ノードのすべての書き込みアクティビティは、 commit logsノードに書き込まれます。後でデータがキャプチャされ、に保存されますmem-table. mem-tableがいっぱいになると、データがに書き込まれます。 SStableデータファイル。すべての書き込みは自動的に分割され、クラスター全体に複製されます。Cassandraは定期的にSSTableを統合し、不要なデータを破棄します。
読み取り操作
読み取り操作中に、Cassandraはmem-tableから値を取得し、ブルームフィルターをチェックして、必要なデータを保持する適切なSSTableを見つけます。