はじめに
Cassandraは、NoSQLデータベースを管理するためのソフトウェアです。組織はこれを使用して、大量のデータを分散して処理します。このソフトウェアの人気は、可用性が高く、フォールトトレラントであるために増加しました。
これを実現するために、Cassandraはマスターノードまたは名前付きノードの概念から対称P2P分散ノードに移行しました。クラスタ内の各ノードには、データを含む1つ以上のキースペースがあります。
このガイドでは、キースペースとは何か、そのコンポーネント、およびキースペースを作成、変更、削除する方法を学びます。
前提条件
- カサンドラ システムにインストールされています
- 端末へのアクセス またはコマンドライン
- 必要な許可 CQLコマンドを実行するには
Cassandraのキースペースとは何ですか?
キースペースはデータコンテナです Cassandraでは、リレーショナルデータベース管理システム(RDMBS)のデータベースに似ています。クラスタには、要件とシステムの使用状況に応じて、アプリケーションごとに1つのキースペースが必要な数だけあります。キースペースは完全に別個のエンティティであり、キースペースに含まれるデータは互いに無関係です。
Cassandraクラスターでは、キースペースはデータがノード上でどのように複製されるかを決定する最も外側のオブジェクトです。キースペースは、列ファミリー(RDBMSのテーブルのような)と呼ばれるコアオブジェクト、キーによってインデックス付けされた行、データ型、データセンターの認識、レプリケーションファクター、およびキースペース戦略で構成されます。
Cassandraキースペースコンポーネント
キースペースを作成するときに指定する必要のある重要なキースペースコンポーネントがいくつかあります。これらのコンポーネントは次のとおりです。
複製戦略
キースペースを定義するとき、レプリケーション戦略はレプリカが配置されるノードを指定します。複数のノードを使用してレプリカを配置することにより、フォールトトレランス、高可用性、および信頼性を実現します。
考えられる戦略は2つあります。
- シンプルな戦略。 この戦略は、テスト環境と開発環境、およびクラスターを複数のデータセンターに展開する予定がない場合に使用します。レプリケーション係数はクラスター全体に適用されます。パーティショナーは、ノードの最初のレプリカを配置する場所を決定します。次に、データセンターや場所に関係なく、他のレプリカが次のノードに時計回りに分散されます。
- ネットワークトポロジ戦略。 この戦略は、クラスターを複数のデータセンターにデプロイする必要がある場合に適しています。ただし、単一のデータセンターでも使用できるため、後で拡張できます。ネットワークトポロジ戦略は、本番環境と開発環境の両方で機能します。 1つのラックがダウンした場合の問題を回避するために、同じラックにないノードにレプリカを配置する傾向があります。このオプションを使用すると、各データセンターに個別のレプリケーション係数を設定できます。
レプリケーションファクター
この設定は、各ノードに保存する行のレプリカの数を定義します。
最小値は、データセンターごとに2つのレプリカである必要があります。これは、1つのノードの障害がレプリケーショングループの動作に影響を与えないことを意味します。したがって、十分なフォールトトレランスを実現するには、各行のコピーを異なるノードに3つ配置することをお勧めします。
経験則では、レプリケーション係数をノードの数と同じに保つことです。
基本的なキースペース構文
さまざまなレプリケーション設定でキースペースを作成できます。キースペースを作成するための基本的な構文は次のとおりです。
CREATE KEYSPACE keypsace_name WITH replication = {properties};
プロパティには、レプリケーション戦略、ファクター、永続的な書き込みなどのさまざまな設定が含まれます。
Cqlshを使用してキースペースを作成する
キースペースを作成するには、CQLシェルを起動します。
cqlsh
次に、基本的な構文に従って、目的の名前とレプリケーション設定でキースペースを作成します。
この場合、 test_keyspaceを作成します SimpleStrategyを使用 およびreplication_factor3 :
CREATE KEYSPACE test_keyspace
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
複数のデータセンターに拡張する予定がない場合は、上記の例を使用してください。さらに、ノードが1つだけで、テストにCassandraを使用している場合は、 Replication_factorを設定できます。 1へ 。
本番環境および複数の場合 データセンター 、ネットワークトポロジレプリケーション戦略を使用してキースペースを作成します。
これを行うには、次のように入力します:
CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3};
デフォルトのデータセンター名はdatacenter1 。データセンターの名前を確認するには、CQLシェルを閉じて、 nodetoolを使用します :
nodetool status
複数のデータセンターがある場合は、それらすべてをそれぞれのレプリケーション係数とともにクエリにリストします。
たとえば、2つのデータセンターのクエリは次のようになります。
CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3, 'datacenter2' : 3};
キースペースの確認
キースペースの作成が成功した場合の出力には応答がないため、次のコマンドを使用して、キースペースがリストに含まれていることを確認します。
DESCRIBE KEYSPACES;
システムは、使用可能なすべてのCassandraキースペースのリストを返します。上記の例で作成した2つのキースペースを強調表示しました。 Cassandraのインストールに付属するデフォルトのキースペースがいくつかあります。
耐久性のある書き込みを無効にする
カサンドラでは、 durable_writes 構成はtrue デフォルトでは。無効にすることもできますが、NetworkTopologyStrategyの場合のみ 。このオプションは、Cassandraに commitlogを使用する必要があるかどうかを通知します 選択したキースペースを更新します。
durable_writesを無効にしようとしたとき SimpleStrategyを使用してキースペースを作成すると、作成しないようにという警告が表示されます。その理由は、 memtable からのデータを同期しなかった場合、データが失われる可能性があるためです。 安定 、およびデータセンターに障害が発生します。
durable_writesを無効にするには キースペースの作成中に、次のクエリを入力します:
CREATE KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = false;
耐久性のある書き込みを確認する
キースペースを記述することにより、キースペースの作成中に使用されたクエリを確認できます。 durable_writes 一部も表示されます:
DESCRIBE keyspace_durwrites
durable_writesを確認するには すべてのキースペースの設定、クエリ system_schema :
SELECT * FROM system_schema.keyspaces;
出力には、 durable_writes を含む、すべてのキースペースとその設定が表示されます。 。
キースペースの使用
Cassandraでキースペースを選択してアクションを実行するには、キーワード USE
を使用します。 。
構文は次のとおりです。
USE keyspace_name
例:
USE keyspace_durwrites;
CQLシェルは、指定したキースペースの名前に切り替わります。現在のキースペースを変更するには、同じコマンドを別の名前で使用します。
キースペースの変更
キースペースを作成した後、キーワード ALTER
を使用して構成を変更できます。 。
変更できないのはキースペース名だけです 。それ以外に、レプリケーション戦略、レプリケーションファクター、および永続的な書き込みを変更できます。
キースペースを変更するには、キースペースを作成するときと同じ構文に従いますが、 ALTER
を使用します。 CREATE
の代わりに 。必要な値を変更します。
例:
ALTER KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 2}
AND DURABLE_WRITES = true;
変更が有効になったことを確認するには、 DESCRIBE
を使用します キーワード:
上の画像は、変更前後のキースペース構成を示しています。
キースペースの削除または削除
キースペースを削除すると、システムから削除されます。 DROP
キーワードは、キースペースからすべての列ファミリー、およびインデックスとデータ型を削除します。
Cassandraのキースペースを削除するには、次の構文を使用します。
DROP keyspace_name;
例:
DROP keyspace_durwrites;
キースペースを確実に削除するには、 DESCRIBE
を使用します クエリ。