2

我是 cassandra 的新手,我试图创建一个模式,让我有一行

users: {
    name: <value>,
    ...
    phone_numbers:1: <value>,
    phone_numbers:2: <value>,
    ...
    phone_numbers: <value>
 }

我一直在阅读有关复合列的内容,并且只能找到主键是复合列的示例。那么是否有可能在一个 CF 中包含上述内容?

我的尝试是:-

create column family users with comparator=AsciiType
and key_validation_class=AsciiType
and column_metadata=[
{column_name: name, validation_class: AsciiType, index_type: KEYS},
{column_name: phone_numbers, validation_class: CompositeType(AsciiType, IntegerType), index_type: KEYS}];

以上失败。任何帮助表示赞赏干杯

4

2 回答 2

1

cassandra 中的 CompositeType 可以用作comparator[列名称的类型] 或key_validation_class[行键的类型],但不能用作default_validation_class[列值的类型]

create column family users with 
comparator='CompositeType(UTF8Type, IntegerType)' 
and key_validation_class='UTF8Type'

应该为你工作。我分享了一篇关于cassandra 中的复合类型的详细帖子

于 2012-10-22T14:10:40.437 回答
1

在 cql 3 中,您可以将其声明为:(为简单起见,使用 ascii 类型)

创建具有紧凑存储的表用户(用户 ascii,phoneid ascii,phonenumber ascii,主键(user,phonenumber));

填写为

插入用户(用户、电话号码、电话号码值('john smith'、'home'、'555-121345')

插入用户(用户、电话号码、电话号码值('john smith'、'office'、'555-121346')

并将其检索为

从 user = 'john smith' 的用户中选择 *

用户,电话号码,电话号码

'约翰史密斯','家','555-121345'

'约翰史密斯','办公室','555-121346'

希望能帮助到你

于 2012-10-23T06:48:56.463 回答