Cassandra,设计用户喜欢项目表

时间:2015-12-06 15:06:07

标签: database-design cassandra database nosql

我有一个项目列表,我想知道当前用户是否喜欢其中一些。我想知道如何设计我的桌子,因为它是我在C *中做的第一个。所以我想知道我是否朝着正确的方向前进:

我在考虑将userID作为主键,并将项目作为聚类列。

我看到的问题是,如果用户喜欢这么多东西,分区就不适合节点(所以我丢失了数据?)。我不知道用户需要多少项才能实现,但我的猜测是它对人类来说甚至都不可行。事情是,可能性仍然存在,它困扰着我。另外,如果一个节点上已有很多数据,这是否意味着用户必须喜欢的项目数量较少,以便分区对于一个节点而言太大(因为那里可用内存较少)?

1 个答案:

答案 0 :(得分:2)

当您说所有数据都在单个节点中并且如果该节点上的空间不足时,写入将失败,那么您的陈述是正确的。如果您担心这一点,您还可以添加类似" timestamp"或"桶"列到主键,以减少分区的大小。

Cassandra每个分区有20亿个单元的硬限制但实际上我认为建议是在Cassandra 2.0及更早版本中保持分区<100 MB,在Cassandra 2.1及更高版本中保持<200-300 MB。如果我是你,我会做一些计算,看看一个人为了接近这些限制需要多少项目,并决定这是否是你愿意接受的限制。您可以很好地描述如何执行此操作here