Cassandra-create-keyspace
Cassandra-キースペースの作成
Cqlshを使用してキースペースを作成する
Cassandraのキースペースは、ノード上のデータ複製を定義する名前空間です。 クラスターには、ノードごとに1つのキースペースが含まれます。 以下に、 CREATE KEYSPACE ステートメントを使用してキースペースを作成するための構文を示します。
構文
CREATE KEYSPACE <identifier> WITH <properties>
i.e.
CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’}
AND durable_writes = ‘Boolean value’;
CREATE KEYSPACEステートメントには、 replication と durable_writes の2つのプロパティがあります。
複製
レプリケーションオプションは、*レプリカ配置戦略*と必要なレプリカの数を指定することです。 次の表に、すべてのレプリカ配置戦略を示します。
Strategy name | Description |
---|---|
Simple Strategy' | Specifies a simple replication factor for the cluster. |
Network Topology Strategy | Using this option, you can set the replication factor for each data-center independently. |
Old Network Topology Strategy | This is a legacy replication strategy. |
このオプションを使用すると、現在のKeySpaceの更新に commitlog を使用するかどうかをCassandraに指示できます。 このオプションは必須ではなく、デフォルトではtrueに設定されています。
例
以下は、KeySpaceの作成例です。
- ここでは、 finddevguides という名前のKeySpaceを作成しています。
- 最初のレプリカ配置戦略、つまり Simple Strategy を使用しています。
- そして、複製係数を* 1レプリカ*に選択しています。
cqlsh.> CREATE KEYSPACE finddevguides
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
検証
コマンド Describe を使用して、テーブルが作成されているかどうかを確認できます。 このコマンドをキースペースに対して使用すると、以下に示すように作成されたすべてのキースペースが表示されます。
cqlsh> DESCRIBE keyspaces;
finddevguides system system_traces
ここで、新しく作成されたKeySpace finddevguides を確認できます。
Durable_writes
デフォルトでは、テーブルのpersistent_writesプロパティは true に設定されますが、falseに設定することもできます。 このプロパティを* simplex strategy。*に設定することはできません。
例
以下は、永続的な書き込みプロパティの使用方法を示す例です。
cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;
検証
System Keyspaceを照会することにより、テストKeySpaceのpersistent_writesプロパティがfalseに設定されているかどうかを確認できます。 このクエリは、すべてのキースペースとそのプロパティを提供します。
cqlsh> SELECT * FROM system_schema.keyspaces;
keyspace_name | durable_writes | strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
test | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}
finddevguides | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}
system | True | org.apache.cassandra.locator.LocalStrategy | { }
system_traces | True | org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}
(4 rows)
ここで、KeySpaceがfalseに設定されているテストのpersistent_writesプロパティを確認できます。
キースペースを使用する
キーワード USE を使用して、作成されたKeySpaceを使用できます。 その構文は次のとおりです-
Syntax:USE <identifier>
例
次の例では、KeySpace * finddevguides。*を使用しています。
cqlsh> USE finddevguides;
cqlsh:finddevguides>
Java APIを使用してキースペースを作成する
*Session* クラスの* execute()*メソッドを使用してキースペースを作成できます。 以下の手順に従って、Java APIを使用してキースペースを作成します。
ステップ1:クラスターオブジェクトを作成する
まず、以下に示すように com.datastax.driver.core パッケージの Cluster.builder クラスのインスタンスを作成します。
//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();
*Cluster.Builder* オブジェクトの* addContactPoint()*メソッドを使用して、接点(ノードのIPアドレス)を追加します。 このメソッドは *Cluster.Builder* を返します。
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
新しいビルダーオブジェクトを使用して、クラスターオブジェクトを作成します。 そのためには、 Cluster.Builder クラスに* build()*というメソッドがあります。 次のコードは、クラスターオブジェクトを作成する方法を示しています。
//Building a cluster
Cluster cluster = builder.build();
以下に示すように、1行のコードでクラスターオブジェクトを構築できます。
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
ステップ2:セッションオブジェクトを作成する
以下に示すように、 Cluster クラスの* connect()メソッドを使用して、 *Session オブジェクトのインスタンスを作成します。
Session session = cluster.connect( );
このメソッドは、新しいセッションを作成して初期化します。 キースペースがすでにある場合は、以下に示すように、キースペース名を文字列形式でこのメソッドに渡すことにより、既存のキースペースに設定できます。
Session session = cluster.connect(“ Your keyspace name ” );
ステップ3:クエリを実行する
*Session* クラスの* execute()*メソッドを使用して *CQL* クエリを実行できます。 クエリを文字列形式で、または *Statement* クラスオブジェクトとして* execute()*メソッドに渡します。 このメソッドに文字列形式で渡すものはすべて、 *cqlsh* で実行されます。
この例では、* tp。*という名前のKeySpaceを作成しています。最初のレプリカ配置戦略、つまりSimple Strategyを使用しており、1つのレプリカに対する複製係数を選択しています。
以下に示すように、クエリを文字列変数に保存し、execute()メソッドに渡す必要があります。
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);
ステップ4:キースペースを使用する
以下に示すように、execute()メソッドを使用して、作成されたKeySpaceを使用できます。
execute(“ USE tp ” );
以下は、Java APIを使用してCassandraでキースペースを作成および使用するための完全なプログラムです。
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
public class Create_KeySpace {
public static void main(String args[]){
//Query
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1};";
//creating Cluster object
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
//Creating Session object
Session session = cluster.connect();
//Executing the query
session.execute(query);
//using the KeySpace
session.execute("USE tp");
System.out.println("Keyspace created");
}
}
クラス名の後に.javaを付けて上記のプログラムを保存し、保存されている場所を参照します。 以下に示すように、プログラムをコンパイルして実行します。
$javac Create_KeySpace.java
$java Create_KeySpace
通常の状態では、次の出力が生成されます-
Keyspace created