0

下面是我需要在我的 Cassandra Column Family 中表示的数据。

rowKey           e1_name                    e1_schemaname                   e1_last_modified_date
123             (ByteArray value)           abc (some string)               some_date

userIdrowKey这里。和e1_name和是专门用于 的e1_schemaname列。所有这三列都包含专门用于列的值。以同样的方式,我将有其他列,如下所示。e1_last_modified_datee1e1

 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_namee1_schemanamee1_last_modified_date放在一个列e1中,并将这三者的复合值存储在一起,而不是单独存储。

如果是,任何人都可以帮助我为此设计列族吗?我将使用 Astyanax 客户端插入到上面的列族中。

4

1 回答 1

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 本地传输:

https://github.com/datastax/java-driver

于 2013-09-21T22:25:25.730 回答