Cassandra 简明教程

Cassandra - Create Keyspace

Creating a Keyspace using Cqlsh

Apache Cassandra 中的键空间是一个命名空间,用于定义节点上数据复制。集群在每个节点上包含一个键空间。以下是使用语句 CREATE KEYSPACE 创建键空间的语法。

Syntax

CREATE KEYSPACE <identifier> WITH <properties>

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 and * durable_writes*。

Replication

复制选项用于指定需要的 Replica Placement strategy 和副本数。下表列出所有副本放置策略。

Strategy name

Description

Simple Strategy'

为集群指定简单的复制因子。

Network Topology Strategy

使用此选项,您可以独立设置每个数据中心 的复制因子。

Old Network Topology Strategy

这是一个旧版复制策略。

使用此选项,您可以指示 Cassandra 是在当前密钥空间上使用 commitlog 进行更新。此选项不是强制性的,并且默认情况下设置为 true。

Example

以下是创建 KeySpace 的示例。

  1. 这里我们创建一个名为 TutorialsPoint 的 KeySpace。

  2. 我们使用第一个副本放置策略,即 Simple Strategy

  3. 并且我们选择将复制因子为 1 replica

cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

Verification

您可以使用命令 Describe 验证是否创建了表格。如果您在键空间上使用此命令,它将显示创建的所有键空间,如下所示。

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

此处您可以观察新建的 KeySpace tutorialspoint.

Durable_writes

默认情况下,表的 durable_writes 属性被设置为 true, 然而,它也可以设置为 false。您无法将此属性设置为 simplex strategy.

Example

以下是关于如何使用 durable writes 属性的范例。

cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;

Verification

您可以通过查询系统 KeySpace 来验证 test KeySpace 的 durable_writes 属性是否被设置为 false。该查询将提供所有 KeySpace 及其属性。

cqlsh> SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------

           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}

 tutorialspoint |           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)

这里可以观察到 test KeySpace 的 durable_writes 属性被设置为 false。

Using a Keyspace

您可以使用关键字 USE 创建 KeySpace。其语法如下 −

Syntax:USE <identifier>

Example

在以下范例中,我们正在使用 KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Creating a Keyspace using Java API

您可以使用 Session 类的 execute() 方法来创建 Keyspace。按照以下步骤使用 Java API 创建 keyspace。

Step1: Create a Cluster Object

首先,像下面显示的那样创建 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();

您可以使用一行代码构建集群对象,如下所示。

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Step 2: Create a Session Object

使用 Cluster 类的 connect() 方法创建 Session 对象的实例,如下所示。

Session session = cluster.connect( );

此方法创建一个新会话并初始化它。如果您已经有了 keyspace,您可以通过将 keyspace 名称以字符串格式传递给此方法,将其设置为现有的 keyspace,如下所示。

Session session = cluster.connect(“ Your keyspace name ” );

Step 3: Execute Query

您可以使用 Session 类的 execute() 方法执行 CQL 查询。以字符串格式或 Statement 类对象的形式将查询传递给 execute() 方法。您以字符串格式传递给该方法的所有内容都将在 cqlsh 上执行。

在此范例中,我们创建一个名为 tp. 的 KeySpace。我们使用第一个副本放置策略,即简单策略,并选择副本数量为 1 个副本。

您必须将查询存储在一个字符串变量中,并将其传递给 execute() 方法,如下所示。

String query = "CREATE KEYSPACE tp WITH replication "
   + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);

Step4 : Use the KeySpace

您可以使用 execute() 方法使用已创建的 KeySpace,如下所示。

execute(“ USE tp ” );

以下是使用 Java API 在 Cassandra 中创建和使用 keyspace 的完整程序。

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