Cassandra-create-keyspace

提供:Dev Guides
移動先:案内検索

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ステートメントには、 replicationdurable_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