1. 序章

このチュートリアルでは、Cassandraのアーキテクチャを詳しく見ていきます。 分散アーキテクチャでのデータ格納について説明し、基本的なアーキテクチャコンポーネントについて説明します。

2. カサンドラの概要

Apache Cassandra は、NoSQLの分散データベース管理システムです。 Cassandraの主な利点は、コモディティサーバー全体で大量の構造化データを処理できることです。 さらに、高可用性を提供し、単一障害点を提供しません。 Cassandraは、最小の論理ユニットがノードであるリングタイプのアーキテクチャを使用してこれを実現します。 クエリを最適化するためにデータのパーティション化を使用します。

すべてのデータにはパーティションキーがあります。 すべての行のパーティションキーがハッシュされます。 その結果、すべてのデータに対して一意のトークンを取得します。 ノードごとに、トークンの範囲が割り当てられています。 したがって、同じトークンを持つデータは同じノードに保存されます。 ノードのリングアーキテクチャを以下に示します。

3. カサンドラコンポーネント

3.1. ノード

ノードは、Cassandraの基本的なインフラストラクチャコンポーネントです。 これは、高度な内部ネットワークを介してクラスター内の他のノードに接続する、完全に機能するマシンです。

このネットワークの名前はGossipProtocolです。 明確にするために、マシンは物理サーバー、 EC2 インスタンス、または仮想マシンにすることができます。 すべてのノードは、リングネットワークトポロジで編成されています。 重要なのは、すべてのノードが独立しており、リング内で同じ役割を果たしていることです。 Cassandraは、ノードをピアツーピア構造で配置します。ノードには実際のデータが含まれています。

クラスタ内の各ノードは、読み取りおよび書き込み要求を受け入れることができます。 したがって、データが実際にクラスター内のどこにあるかは問題ではありません。 常に最新バージョンのデータを取得します。

3.2. 仮想ノード

Cassandraの新しいバージョンは、仮想ノードまたは略してvnodesを使用します。 仮想ノードはサーバー内のデータストレージレイヤーです。

デフォルトでは、サーバーごとに256の仮想ノードがあります。 前の段落で説明したように、各ノードには一連のトークンが割り当てられています。 すべての仮想ノードは、それらが属するノードからのトークンのサブ範囲を使用します。

これらの仮想ノードは、システムの柔軟性を高めます。 したがって、Cassandraは、必要なときにクラスターに新しいノードを追加する方が簡単です。 データにノード間でトークンが不均等に分散されている場合、仮想ノードをより負荷の高いノードに拡張することで、ストレージ容量を簡単に拡張できます。

3.4. サーバ

サーバーという用語を使用する場合、Cassandraソフトウェアがインストールされた マシンを意味します。すべてのノードには、技術的にはサーバーであるCassandraの単一インスタンスがあります。 前に述べたように、Cassandraの各インスタンスは256の仮想ノードを含むように進化しました。 Cassandraサーバーはコアプロセスを実行します。 たとえば、ノードの周りにレプリカを拡散したり、リクエストをルーティングしたりするようなプロセス。

3.5. ラック

Cassandraラックは、リング内のノードの論理グループです。 つまり、ラックはサーバーの集合です。 データベースはラックを使用するため、レプリカが異なる論理グループに確実に分散されます。 その結果、1つのノードだけでなく操作を送信できます。 それぞれが別々のラックにある複数のノードは、より優れたフォールトトレランスと可用性を提供できます。

3.6. データセンター

データセンターは、論理的なラックのセットです。 データセンターには、少なくとも1つのラックが含まれている必要があります。  Cassandra Datacenterは、レプリケーションの目的でクラスター内に関連付けられ、構成されたノードのグループであると言えます。 したがって、レイテンシーを削減し、トランザクションが他のワークロードや関連する影響による影響を防ぐのに役立ちます。 さらに、レプリケーションファクターは、複数のデータセンターに書き込むように設定することもできます。 その結果、Cassandraは、アーキテクチャの設計と編成にさらなる柔軟性を提供できます。

3.7. 集まる

クラスターは、1つ以上のデータセンターを含むコンポーネントです。データベース内で最も外部のストレージコンテナーです。 1つのデータベースには1つ以上のクラスターが含まれます。 Cassandraクラスターの要素の階層は次のとおりです。

まず、データセンターで構成されるクラスターがあります。 データセンター内には、デフォルトで256の仮想ノードを含むノードがあります。

4. データレプリケーション

さて、カサンドラの基本的なコンポーネントを知ったとき。 Cassandraがその構造に沿ってデータを管理する方法について話しましょう。 一部のシステムでは、データの損失やデータ配信の中断を許容できません。 解決策は、問題が発生したときにバックアップを提供することです。 たとえば、ハードウェアの問題である可能性があります。または、データ処理中はいつでもリンクがダウンしている可能性があります。 Cassandraは、信頼性とフォールトトレランスを確保するために、データレプリカを複数のノードに保存します。

5.1. レプリケーションファクター

レプリカの数とその場所は、レプリケーションファクターとレプリケーション戦略によって決定できます。レプリケーションファクターは、クラスター全体のレプリカの総数です。 この係数を1に設定すると、各行のコピーが1つだけクラスターに存在することを意味しますこの係数は、データセンターレベルとラックレベルで設定できます。

5.1. レプリケーション戦略

レプリケーション戦略は、レプリカの選択方法を制御します。 レプリカの重要性は同じです。 Cassandraには、複製されたデータが含まれているノードを判別するための2つの戦略があります。 最初のものはSimpleStrategy、と呼ばれ、データセンターとラックのノードの論理的な分割を認識していません。 2つ目は、 NetworkTopologyStrategy がより複雑で、ラック対応とデータセンター対応の両方です。 NetworkTopologyStrategy を使用して、さまざまなデータセンターに配置されるレプリカの数を定義できます。 さらに、2つのレプリカが同じラックに配置される[X25X]状況を回避しようとします。

5. 結論

このチュートリアルでは、Cassandraのアーキテクチャの基本的なコンポーネントを紹介します。 このデータベースの高可用性とパーティション化の許容範囲を保証する主要な概念について説明しました。 また、データの分割とデータの複製についても話しました。