我在Cassandra存储帐户信息。每个帐户都有与之关联的数据列表。例如,帐户可以具有朋友列表和喜欢的书籍列表。对帐户的查询将始终需要所有朋友或所有喜欢的书籍或两者兼而有之。两者都不需要过滤或搜索。朋友和书籍的列表可以增长和缩小。
在这种情况下使用set column type或composite列更好吗?
答案 0 :(得分:2)
我建议你不要使用套装
您担心磁盘空间(因为每个值在磁盘+数据空间中分配一个单元格,每个单元格的元数据为15字节,如果没有错误的话。现在,如果您的数据增长,这会消耗很多一个)。
每次都不会在该特定行中增加大量数据,而是从不同的sstable中提取单元格。
在这种情况下,更优选的选项是json数组。您应将其存储为文本并从中备份数据。
设置(或任何其他集合)用例被带入一个完全不同的视角。如果您在列表中有特定值或者必须在同一集合中频繁更新值,则应使用集合。
我对您的查询的看法就是这个。
将所有帐户特定信息存储在具有作为书籍列表值的朋友的json对象中。
答案 1 :(得分:1)
集合适用于较小的数据集合,如果您希望您的朋友/喜欢的图书列表不断增长并且变大(这里没有黄金数字)那么最好使用复合列,因为该模型可以扩展比集合更好,并允许直接查询与集合上需要二级索引相比。