我有一个用例,我将存储用户的活动。
我正在考虑两种方法
与我们将为所有用户存储数据的第二种方法相比,在第一种方法中,单一用户的性能提取数据变得更容易。
我们在Cassandra的桌子数量是否有限制?
我已阅读其他关系数据库的帖子,他们不建议使用多个表。
我在Cassandra中尝试了单表和多表的方法。
对于多表,我担心db中的表增加。
对于单一表格,我担心行数增加超过十亿。
请有人建议我应该使用哪种方法。
答案 0 :(得分:3)
我不知道任何专为处理数百万个表而设计的数据库系统。它可能是一个坏主意,因为每个表都必须通过将几个元信息与它相关联来管理(名称,数据位置,访问控制,......)。在扩展时,仅管理大量表格的工作量可能会成为一个大问题。使用单个表格。
答案 1 :(得分:2)
NoSQL DB旨在提高水平可伸缩性。如果你采用cassandra的任何基准测试,它将证明它的水平扩展能力。
方法1:
虽然您的表增加了,但您可以将它们放在不同的服务器上(分片)。你不用担心。将来,如果您的用户增加到非常高的容量,那么为每个用户创建一个新表可能是不可行的(至少从性能角度来看)。考虑好的分片策略(基于Region,数据大小等)
方法2:
如果单个表亿行不是问题(这也会提供良好的性能。)具有良好配置和正确的数据库调优(缓冲区,索引,查询)的单个服务器也将提供良好的结果。
恕我直言根据当前和未来视角的编码,使用和可维护性的易用性来选择策略(我认为如果用户数量较少并且随着时间的推移不变,则第二选项会更好)。
答案 2 :(得分:0)
您可以使用单个表并使用userid作为主键。因此,Cassandra将根据主键分区物理存储您的数据。在这种情况下,您始终必须在选择的查询中传递userid,例如
select * from tbl_user_data where userid = 'shahid'