我们计划使用Cassandra 3.1作为我们的数据存储。数据模型将使用user_uuid作为分区键/主键,而不使用集群键。查询模式是访问特定用户的user_uuid并用各种数据更新该行。目的不是简单地添加更多的列,而是完全覆盖值/列,例如。时间戳,版本和用户的其他各个方面。预计每天将有大约一百万个不同的用户在写,每个用户每天可以写几千次。Cassandra覆盖/更新行的最佳做法?
这是一种使用Cassandra作为数据存储的有效方式吗?通过研究,我发现在Cassandra中更新一行并不会创建墓碑,而是会创建“阴影”,当SSTable变得紧凑时会被删除。
因此,如果它不创建墓碑,那么这是一个安全和有效的方式来存储特定用户的数据?
“每天有大约一百万个不同的用户在写,每个用户每天可以写几千次”如果我们的一个应用团队向我寻求新的clust呃并且说*那*,我的答案是那个**不**,这对于Cassandra来说不是一个好主意。 – Aaron
感谢您的回复。什么特别会让你说这不是一个好主意? – Ste
我担心的是,更新值经常(10k/day ea)会在下面创建如此之多的过时数据,以至于您的分区会变得太大而且不好看。当然压实会收回,但每天更新列值的10k次就太多了。 – Aaron