针对多个与单个扩展 Cassandra table
Scaling Cassandra for Multiple vs Single table
我有一个要存储用户活动的用例。
我正在考虑 2 种方法
- 为每个用户创建table
- 正在创作一首单曲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'
我有一个要存储用户活动的用例。
我正在考虑 2 种方法
- 为每个用户创建table
- 正在创作一首单曲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'