Cassandraアーキテクチャの説明:包括的なチュートリアル
公開: 2021-03-10Facebookでの開始以来、Cassandraは最も人気のあるApacheプロジェクトの1つになりました。 これは、広く使用されているオープンソースの高性能分散データベースであり、ソフトウェアエンジニア、データサイエンティスト、およびWeb開発者の生活を楽にします。
この堅牢なデータベースソリューションのユーザーには、IBM、Facebook、Reddit、eBay、Twitterなどが含まれます。
ただし、Cassandraに慣れるためには、そのアーキテクチャーについて知っておく必要があります。ApacheCassandraアーキテクチャーは、理解するのが少し難しい場合があります。
そのため、Cassandraアーキテクチャに関する次の入門ガイドを作成しました。 これにより、Cassandraアーキテクチャーの必要なすべての概念に精通することができます。
目次
Cassandraアーキテクチャの基本
Apache Cassandraアーキテクチャには、マスターノードまたはスレーブノードがありません。 代わりに、ノードがリング内に論理的に分散されているリングのようなアーキテクチャを備えています。 このアーキテクチャにより、データをすべてのノードに自動的に分散できます。 HDFSと同様に、Cassandraのデータは冗長性のためにノード間で複製され、メモリに保存されます。 キーのハッシュ値を使用して、クラスター内のノード間でデータを分散します。
Cassandraアーキテクチャにより、システムは単一障害点に関係なく機能できます。 つまり、クラスターに100個のノードがあり、そのうちの1つに障害が発生した場合でも、クラスターは実行されたままになります。 一方、Hadoopでは、ネームノードに障害が発生するとシステム全体に障害が発生します。
Cassandraアーキテクチャーは高いスケーラビリティーを提供するため、クラスターは数千のノードを持つこともできます。 さらに、クラスターの操作を中断することなく、クラスターに新しいノードを追加できます。
上記で説明した機能とは別に、Apache Cassandraアーキテクチャは複数のデータセンターもサポートし、データセンター間でのデータレプリケーションを可能にします。
トポロジーと設計
Cassandraアーキテクチャは、分散システムアーキテクチャに基づいています。 最も単純なバージョンのCassandraは、1台のマシンで実行でき、基本的なテストでうまく機能します。 1つのCassandraインスタンスはノードと呼ばれます。
Cassandraは、クラスターのコンポーネントとして複数のノードを追加できる水平スケーラビリティを提供します。 これは、各ノードが他のすべてのノードに接続されているピアツーピアアーキテクチャで機能します。 すべてのCassandraノードは、マスターノードなしですべてのデータベース操作とサーバークライアント要求を実行します。
このピアツーピア分散アーキテクチャにより、単一障害点によってシステム全体に障害が発生することはありません。 Cassandraのクラスターは、さまざまな機能のために相互に通信できます。 このようなコミュニケーションには、次の概念が不可欠です。
ゴシップ
Gossipは、ノードがピアツーピア通信に使用するCassandraプロトコルです。 他のノードの状態についてノードに通知します。 毎秒、1つのノードが最大3つの他のノードとゴシップを実行し、すべてのゴシップメッセージは、通信を効率的に保つために特定の形式とバージョン番号に従います。
シード
Cassandraのすべてのノードは、他のノードのリストであるシードのリストを構成します。 シードノードには、ノードが最初にクラスターに参加するときにノードをブートストラップする以外の目的はありません。 ブートストラップ後、ノードは再起動時にシードを必要としません。 Cassandraデータセンターごとに2つまたは3つのシードノードを使用し、シードリストを均一に保つのが最善です。
データベース構造
Cassandraでは、データはテーブルに格納され、すべてのテーブルが行と列に編成されます。 さらに、Cassandraのテーブルはキースペースにグループ化されます。たとえば、顧客データのテーブルはすべて1つのキースペースにグループ化でき、ビジネストランザクションのテーブルは別のキースペースに保存できます。
すべてのテーブルには、クラスタリング列とパーティションキーに分割された主キーがあります。 クラスタリング列はオプションであることに注意してください。 Cassandraは、パーティションキーを使用してデータにインデックスを付けます。 共通のパーティションキーを持つすべての行は、データパーティションの基本単位である1つのデータパーティションを構成します。
Cassandraでのパーティショニング
Cassandraでは、パーティショナーがパーティションキーをトークンに変換します。 Murmur3PartitionerがデフォルトであるCassandraには複数のパーティショナーオプションがあります。 すべてのトークンには、-2^63から+2^ 63-1までの整数値が割り当てられ、この範囲の名前はトークン範囲です。
すべてのカサンドラはこの範囲の一部を所有しており、主に範囲に関連するデータを所有しています。 トークンを使用して、ノード間でデータを正確に特定します。
この概念で所有権システムを理解できます。クラスターにノードが1つしかない場合、そのノードは完全なトークン範囲を所有します。 ノードを追加すると、それに応じてトークン範囲の所有権が分割されます。
仮想ノード
Cassandraは、Vnodeとも呼ばれる仮想ノードを使用することにより、トークンの計算と割り当ての課題を簡素化します。
クラスターを多数の仮想ノードに分割してトークンを割り当て、すべての物理ノードが同数のVノードを取得します。 ノードが所有するVnodeのデフォルト数は256です。num_tokensプロパティを使用して同じように設定できます。 クラスタに新しいノードを追加すると、トークン割り当てアルゴリズムはVnodeを使用して必要なトークンを割り当てます。
レプリケーション
Cassandraは、すべてのキースペースに存在するデータをレプリケーション係数でレプリケートします。 データの1つのプライマリレプリカはトークン所有者ノードに残り、残りはレプリカ配置戦略を通じて特定のノードにCassandraによって配置されます。 ほとんどのデータベース操作では、すべてのレプリカが同じように重要であることに注意してください。
Cassandraでのレプリカの配置には、スニッチとレプリケーション戦略の2つの設定が影響します。 Snitchは、ノードが属するデータセンターとラックを決定します。 彼らは、物事を効率的に保つためのトポロジーについてカサンドラに通知する責任があります。
レプリケーション戦略はキースペースレベルで設定され、NetworkTopologyStrategyとsimplestrategyの2つがあります。 前者はラックとデータセンターを認識しますが、後者は認識しません。
CAP定理
すべての分散システムは、CAP定理に基づいて機能します。 この定理によれば、分散システムは、一貫性、可用性、およびパーティション許容度の3つのプロパティのうちの任意の2つを適切に提供できます。
Cassandraでは、可用性と一貫性のどちらかを選択できます。 これは、データの整合性が高く、可用性が低いか、可用性が高く、整合性が低い可能性があることを意味します。
特定の数の確認応答を要求するという概念は、調整可能な整合性と呼ばれ、個々のクエリレベルで適用できます。
書き込みプロセス
このプロセスでは、データはディスク上のコメントログに書き込まれ、ハッシュ値に従って担当ノードに送信されます。
その後、ノードはmemtableと呼ばれるメモリ内のテーブルにデータを書き込み、そこからデータはメモリ内の「安定した」ものに書き込まれます。 次に、実際のテーブルに更新されます。
責任のあるノードが何らかの理由でダウンしている場合、データは別のノードに書き込まれます。
Cassandraアーキテクチャの詳細
Apache Cassandraアーキテクチャを理解すると、このソリューションがどのように機能するかを理解するのに役立ちます。 これまでに、Cassandraが競合他社で際立っている理由と、それが非常に人気がある理由もご存知でしょう。
データベースについて詳しく知りたい場合は、次のリソースを確認してください。
データサイエンスのためのSQL:なぜSQL、利点とコマンドのリスト
20の最も一般的なSQLインタビューの質問と回答[新入生向け]
証明書付きSQL無料オンラインコース[2021]
一方、個別学習体験を探している場合は、データサイエンスコースを受講することをお勧めします。 upGradでは、データサイエンスのPGディプロマとデータサイエンスの理学修士を提供しています。 これらのコースでは、データサイエンスの専門家になるために必要なすべてのスキルを学びます。
結論
ビッグデータプログラムについて詳しく知りたい場合は、ビッグデータプログラムのソフトウェア開発スペシャライゼーションのPGディプロマをチェックしてください。これは、働く専門家向けに設計され、7つ以上のケーススタディとプロジェクトを提供し、14のプログラミング言語とツール、実用的なハンズをカバーしています。ワークショップでは、トップ企業との400時間以上の厳格な学習と就職支援。
upGradで他のソフトウェアエンジニアリングコースを確認してください。