时间:2010-07-23 13:56:14

标签: nosql cassandra bigtable datamodel

2 个答案:

答案 0 :(得分:2)

由于我没有Cassandra或类似数据库的实际操作经验,所以你需要我的答案:*)

如果您将每个映射存储为列,使用电子邮件地址作为列名称,则这意味着包含大量列的单行。根据维基百科 [1]

  

无论要读取或写入多少列,单个行键下的每个操作都是每个副本的原子操作。

如果所有映射都存储在一行中,这可能会导致显着的锁定开销。

Cassandra Wiki声明 [2]

  

行键是决定存储机器数据的因素。

这使我相信基于行键而不是列名进行查找更有效。根据这些信息,我建议使用电子邮件地址作为行密钥,并将GUID存储在列中。

答案 1 :(得分:2)

尼尔斯是对的​​;每个用户一行是手动执行此操作的正确方法。

我有资格证明这一点,因为在0.7中,您可以在行中包含一个包含其余UEDID用户数据的电子邮件列,并要求Cassandra将其编入索引:http://www.riptano.com/blog/whats-new-cassandra-07-secondary-indexes