针对多个与单个扩展 Cassandra table

Scaling Cassandra for Multiple vs Single table

我有一个要存储用户活动的用例。

我正在考虑 2 种方法

  1. 为每个用户创建table
  2. 正在创作一首单曲table。

现在,与我们将为所有用户存储数据的第二种方法相比,第一种方法在性能方面更容易为单个用户获取数据。

我们在 Cassandra 中可以拥有的 table 数量有限制吗?

我读过 post 其他关系数据库,他们不建议使用多个 table。

我在 Cassandra 中尝试了单个 table 和多个 table 的方法。

对于多个 table 我担心数据库中的 tables 增加。

对于单个 table 我担心行数增加超过十亿。

谁能建议我应该使用哪种方法。

NoSQL 数据库旨在实现更好的横向可扩展性。如果您对 cassandra 进行任何基准测试,它将证明其水平扩展能力。

方法一:

虽然您的 table 增加了,但您可以将它们放在不同的服务器上(分片)。你不必担心。将来如果您的用户增加到非常多的数量,那么为每个用户创建一个新的 table 可能不可行(至少从性能角度来看不可行。)考虑好的分片策略(基于区域、数据大小等)

方法二:

在单个 table 十亿行的情况下不是问题(这也将提供良好的性能。)具有良好配置和适当数据库调整(缓冲区、索引、查询)的单个服务器也将提供良好的结果.

恕我直言,从当前和未来的角度根据易于编码和使用以及可维护性来选择策略(我认为如果用户数量较少且随着时间的推移保持不变,则第二种选择更好)。

我不知道有任何数据库系统设计用于处理数百万 tables。这可能是个坏主意,因为每个 table 都必须通过关联一些元信息(名称、数据位置、访问控制等)来管理。在横向扩展时,仅仅管理大量 table 的工作量可能会成为一个大问题。使用单个 table.

您可以使用单个 table 并使用用户 ID 作为主键。所以Cassandra会根据主键分区物理存储你的数据。在那种情况下,您总是必须在 select 查询中传递 userid,例如

select * from tbl_user_data where userid = 'shahid'