2011-01-13 61 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