使用Cqlsh创建Keyspace
Cassandra中的键空间是一个命名空间,用于定义节点上的数据复制.集群每个节点包含一个密钥空间.下面给出了使用语句 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语句有两个属性:复制和耐久性写入.
复制
复制选项用于指定副本放置策略以及所需的副本数量.下表列出了所有副本放置策略.
策略名称 | 描述 |
---|---|
简单策略' | 指定群集的简单复制因子. |
网络拓扑策略 | 使用此选项,您可以单独为每个数据中心设置复制因子. |
旧网络拓扑策略 | 这是一种传统的复制策略. |
使用此选项,您可以指示Cassandra是否使用 commitlog 进行当前KeySpace的更新.此选项不是必需的,默认情况下,它设置为true.
示例
以下是创建KeySpace的示例.
这里我们创建一个名为 TutorialsPoint 的KeySpace.
我们正在使用第一个副本放置策略,即简单策略.
我们选择复制因子为 1副本.
cqlsh.> CREATE KEYSPACE it1352WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
验证
您可以使用描述.如果在键空间上使用此命令,它将显示如下所示创建的所有键空间.
cqlsh> DESCRIBE keyspaces;it1352 system system_traces
在这里你可以观察到新创建的KeySpace it1352.
Durable_writes
默认情况下,表的durable_writes属性设置为 true,但是可以设置为false.您不能将此属性设置为单纯形策略.
示例
以下是演示持久写入用法的示例属性.
cqlsh> CREATE KEYSPACE test... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }... AND DURABLE_WRITES = false;
验证
您可以通过查询System Keyspace来验证测试KeySpace的durable_writes属性是否设置为false.此查询为您提供所有KeySpaces及其属性.
cqlsh> SELECT * FROM system.schema_keyspaces; keyspace_name | durable_writes | strategy_class | strategy_options----------------+----------------+------------------------------------------------------+---------------------------- test | False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"} it1352 | 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的的durable_writes属性设置为false.
使用Keyspace
您可以使用关键字 USE 来创建KeySpace.其语法如下 :
Syntax:USE
示例
在以下示例中,我们使用的是KeySpace it1352.
cqlsh> USE it1352;cqlsh:it1352>
使用Java API创建Keyspace
您可以使用 execute()创建一个Keyspace Session 类的方法.按照下面给出的步骤使用Java API创建密钥空间.
步骤1:创建集群对象
首先,创建一个
//创建Cluster.Builder对象 Cluster.Builder builder1 = Cluster.builder();
使用 Cluster.Builder的 addContactPoint()方法添加联系点(节点的IP地址)对象.此方法返回 Cluster.Builder .
//将联系人点添加到Cluster.Builder对象 Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");
使用新的构建器对象,创建一个集群对象.为此,您在 Cluster.Builder 类中有一个名为 build()的方法.以下代码显示了如何创建集群对象.
//构建集群Cluster cluster = builder.build();
您可以在一行代码中构建一个集群对象,如下所示.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
步骤2:创建会话对象
使用会话对象创建实例群集类的 connect()方法如下所示.
Session session = cluster.connect( );
此方法创建一个新会话并对其进行初始化.如果您已经有一个键空间,可以通过将字符串格式的键空间名称传递给此方法来将其设置为现有键空间,如下所示.
Session session = cluster.connect(" Your keyspace name " );
第3步:执行查询
您可以使用 CQL 查询> Session 类的execute()方法.将查询以字符串格式或 Statement 类对象传递给 execute()方法.无论你以字符串格式传递给这个方法的是什么都将在 cqlsh 上执行.
在这个例子中,我们创建了一个名为 tp的KeySpace./b>我们正在使用第一个副本放置策略,即简单策略,我们选择复制因子为1个副本.
您必须将查询存储在字符串变量中将它传递给execute()方法,如下所示.
String query = "CREATE KEYSPACE tp WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";session.execute(query);
步骤4:使用KeySpace
您可以使用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