以下是我需要在Cassandra Column Family中表示的数据。
rowKey e1_name e1_schemaname e1_last_modified_date
123 (ByteArray value) abc (some string) some_date
userId
在这里是rowKey
。 e1_name
,e1_schemaname
和e1_last_modified_date
是专门用于e1
的列。所有这三列都包含专门用于e1
列的值。以同样的方式,我将有另一个列,如下面。
e2_name e2_schemaname e2_last_modified_date
(ByteArray value) abc (some string) some_date
e3_name e3_schemaname e3_last_modified_date
(ByteArray value) abc (some string) some_date
现在我在想 - 有没有办法将这三件事e1_name
,e1_schemaname
和e1_last_modified_date
分组到一个列e1
中并存储复合值一起为所有三个,而不是分开存储。
如果是的话,有人可以帮我设计列系列吗?我将使用Astyanax客户端插入上面的列族。
答案 0 :(得分:1)
如果我理解正确,您可以按以下方式设计架构:
列:
user_id,record_type,name,schemaname,last_modified_date
user_id是您的行键(分区键)
如果e1,e2在单个用户中是唯一的,则record_type左右(e1,e2)可能是群集密钥。否则,您的群集密钥可能是复合的,包括用于创建唯一密钥的字段集
在第一种情况下PRIMARY_KEY(user_id,record_type)
e1 e2
123 : {name, schemaname, date } | {name, schemaname, date }
第二个例子可能是PRIMARY_KEY(user_id,record_type,name)
e1|name e2|name
123 : {schemaname, date } | {schemaname, date }
听起来不错吗?
最后我要说有一个非常好的官方Datastax驱动程序用于cassandra本地传输: