keyspace是应用程序数据的容器,相当于关系数据库中的schema.它用来分组column family.一个集群中的每一个应用只有一个keyspace.

创建keyspace时候可以指定replication_factor,从而表示有几个副本:

创建方法:

(方法1:使用opscenter中的"DATA MODELING")

Cassandra 中keyspace_第1张图片

 

也可以使用命令行 cassandra-cli:

   
   
   
   
  1. CREATE KEYSPACE Charles_Learn_Cassandra  WITH placement_strategy='SimpleStrategy' AND strategy_options={replication_factor:2}; 

结果显示:SchemaDisagreementException,这是因为cluster在多个节点之间没同步。

 

我们敲入 describe cluster:

Cassandra 中keyspace_第2张图片

从这里我们可以发现,我们的cluster有2个版本,192.168.129,39和192.168.129.35是一个版本,而192.168.129.34是新加的节点,是另外一个版本,我们只要将他们同步就可以了。

 

我们到 192.168.129.34上Cassandra的data 目录中的system keyspace,我们是~/datastax/cassandra-data/system

我们删除所有的Schema开头的和Migration开头的表:

Cassandra 中keyspace_第3张图片

然后重启Cassandra 实例。

现在终于发现这3个节点schema一致了。

Cassandra 中keyspace_第4张图片

 

于是,现在可以正确创建keyspace了:

 

我们到opscenter中去检验,果然刚才才创建的名字叫Charles_Learn_Cassandra的keyspace被看到了。

Cassandra 中keyspace_第5张图片

 

另外,在cassandra-cli中使用命令 show keyspaces 可以看到所有的key space。如下,我们刚创建的Charles_Learn_Cassandra被显示了:

Cassandra 中keyspace_第6张图片