2011-01-13 79 views
9

我想大家一起玩过卡桑德拉已经阅读this文章。映射卡桑德拉超级列

我试图在CassandraCli上创建我的模式,但是我遇到了很多问题,有人能够以正确的方式引导我吗?我正在尝试创建类似于文章中的评论列家族的结构。

在CassandraCli终端I型:

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

它工作正常,没有DOC告诉我,如果我加入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字符串:身体

我猜是因为我选择了subcomparator是类型timeuuid和身体是一个字符串,它应该是一个timeuuid,因此如何我的超级列内的类是timeuuid的列可以保存包含字符串类型名称的列作为文章的评论创建?

感谢

+0

+1对于代表1的人提出一个关于卡桑德拉的问题。看到对SQL以外的其他东西感兴趣的人很新鲜... – SyntaxT3rr0r 2011-01-13 23:10:02

回答

0

你尝试引用'body'

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

我想你改变了compare_type和subcomparator_type的作用。在超级列族中,comparator_type应用于超级列名称,subcombparator_type应用于子列名称。

切换比较器类型,你的第一个例子应该工作。

0

我想:

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

它的工作...

1

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

正确的答案应该是。

:p