如何检查我在cqlsh中创建一个cassandra宽行

时间:2013-10-03 20:21:18

标签: nosql cassandra cql cqlsh

我正在创建一个cassandra表(columnfamily),并想确认我的行是如何排列的。

DROP TABLE Message;
CREATE TABLE Message ( category_id varchar , msg_id varchar , msg blob , PRIMARY KEY ( category_id, msg_id ) );

我希望上面的表格能够将'msg'列存储在一个宽行中,以用于相同的?category_id“。

所需的表格结构:

category1 - > {msgid1:msg} | {msgid2:msg} | {msgid3:msg}
category2 - > {msgid1:msg} | {msgid2:msg}

我做得对吗?有什么方法可以在cqlsh中看到符合存储顺序吗?

感谢。

1 个答案:

答案 0 :(得分:4)

验证底层存储行是否符合要求的最简单方法是使用CLI进行测试。因此,如果我在CQL中执行以下操作:

cqlsh:test> CREATE TABLE Message (category_id varchar, msg_id varchar, msg varchar, PRIMARY KEY (category_id, msg_id));
cqlsh:test> INSERT INTO Message (category_id, msg_id, msg) VALUES ('catid1', 'msgid1', 'This is a test');
cqlsh:test> SELECT * FROM Message;

 category_id | msg_id | msg
-------------+--------+----------------
      catid1 | msgid1 | This is a test

(1 rows)

...然后我运行CLI(cassandra-cli),如下所示:

[default@test] assume Message validator as ascii;
Assumption for column family 'message' added successfully.
[default@test] list Message;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: catid1
=> (name=msgid1:, value=, timestamp=1380832937863000)
=> (name=msgid1:msg, value=This is a test, timestamp=1380832937863000)

您可以清楚地看到行看起来符合要求。您可以忽略顶部的空列,因为这是由Cassandra内部使用的。