在 cassandra 中,您可以拥有宽行,每行最多 2B 列......如果这对于实体的累积列表项目来说已经足够了,您可以将整个实体的列表存储在一行中,然后将它们一起检索。使用 cassandra 的“复合列”,您可以按顺序存储每个列表的元素并按顺序存储,并且可以在需要时删除单个列(列表项),并且在插入时只需要插入一列...
像这样的东西:(!)
|list_1_Id : item1Id |list_1_Id : item2Id | list_2_Id : item1Id |...| list_n_Id : item3Id |
entity| item1Value | item2Value | item1Value |...| item3Value |
所以实际上你处理的是列(=项目)而不是列表......它使你的工作更容易。取决于您的列表大小考虑器,使用将实体的行拆分为多行......像这样:(!)
| item1Id | item2Id | item3Id | item4Id |...
entiId_list_1_Id | item1Value | item2Value | item3Value | item4Value |...
| item1Id | item2Id | item3Id | item4Id |...
entiId_list_2_Id | item1Value | item2Value | item3Value | item4Value |...
...
并且您可以将 itemValue 放在列名中并将列值留空以减小大小...例如,您可以通过简单地插入一个新项目: //如果它们有任何插入 entityList[entityId][ 的列,则按它们的 id 排序listId][itemId] = 项目值;或 //列按其值排序插入 entityList[entityId][listId][itemvalue] = nothing; 和删除:从 entityId='d' 和 listId='o' 和 itemId='n' 的 entityList 中删除;
或者通过您的应用程序,您可以使用像Hector这样的富客户端来完成...