映射Cassandra超级列

时间:2011-01-13 23:02:51

标签: cassandra super-columns

我想与Cassandra一起玩过的每个人都已经阅读了this篇文章。

我试图在CassandraCli上创建我的架构,但是我遇到了很多问题,有人可以指引我走向正确的方向吗?我正在尝试创建一个类似于文章中的注释列族的结构。

在CassandraCli终端中输入:

create column family posts with column_type = ‘Super’ and comparator = ‘AsciiType’ and subcomparator = TimeUUIDType;

它工作正常,没有文档告诉我,如果我添加一个column_metadata属性那些将用于超级列因为我的列族是超类型,我找不到它是否为真所以:

create column family posts with column_type = ‘Super’ and comparator = ‘AsciiType’ and subcomparator = ‘TimeUUIDType’ and column_metadata = [{column_name:'body'}];

我正在尝试创建与文章的评论列系列相同的内容,但是当我尝试填充

set posts['post1'][timeuuid()][body] = ‘Hello I am Goku!’;
我得到了:

  

无效的UUID字符串:正文

我猜是因为我选择的子计算器是timeuuid类型,而body是一个字符串,它应该是一个timeuuid,所以我的列里面的超级列是timeuuid类型可以保存带有字符串类型名称的列作为注释这篇文章是创建的吗?

由于

4 个答案:

答案 0 :(得分:5)

我认为你切换了comparator_type和subcomparator_type适用的内容。在超级列族中,comparator_type适用于超级列名称,subcombparator_type适用于子列名称。

切换比较器类型,您的第一个示例应该有效。

答案 1 :(得分:1)

set posts[1][timeuuid()][utf8('body')] = 'Hello I am Goku!';

正确答案应该是。

:P

答案 2 :(得分:0)

您是否尝试引用'body'

set posts['post1'][timeuuid()]['body'] = ‘Hello I am Goku!’;

答案 3 :(得分:0)

我试过了:

set posts[1][timeuuid()]['body'] = 'Hello I am Goku!';

它有效......