【问题标题】:Is it good practice to have multiple keyspaces in Cassandra?在 Cassandra 中拥有多个键空间是一种好习惯吗?
【发布时间】:2016-12-22 16:39:09
【问题描述】:

我在 Amazon EC2 上配置了 Cassandra,在 单个集群 中有 3 个节点(实例)。现在我想做的是通过为 单个集群中的每个人创建单独的 keyspace,为我的客户在 Cassandra 上提供一些空间。客户端的数量将每天增加,因此我可以假设创建的密钥空间没有固定数量。

如果我在单个集群中创建太多键空间,会不会出现性能问题?

如果这不是好的做法,那么还有其他解决方法可以满足我的需要吗?我不想配置多个 Cassandra 实例。

【问题讨论】:

    标签: database-design cassandra replication nosql


    【解决方案1】:

    少量单独的键空间是可以的,但是使用大量的键空间会导致性能问题。问题不在于键空间,而在于每个键空间中重复的大量表。 Cassandra 需要每个表的开销,例如保留 1 MB 的堆。好的建议是不要超过几百张桌子。

    Cassandra 中的数千个表将如何执行?有公开的错误报告表明,成千上万的表会导致 CPU 使用率过高CASSANDRA-10588 和更长的启动时间CASSANDRA-794

    贝莱德的 Randy Fraden 在 Multi-Tenancy in Cassandra at BlackRock 的 2015 Cassandra 峰会上做了出色的演讲。如上所述,多租户的通常建议是将tenant_id 放在分区键中。 BlackRock 然后使用自定义 IAuthenticator 和 IAuthorizer 模块在分区级别强制执行租户安全。

    对于那些需要在多个键空间中使用相同表的情况,有一个功能请求允许模板表CASSANDRA-7662 这将添加一些语法糖以简化创建类似表的任务。

    【讨论】:

      【解决方案2】:

      这取决于。取决于您最终希望拥有多少客户(例如,我们谈论的是数百还是数千?),每个键空间中有多少表,以及它们是如何使用的。更多键空间 x 更多表 = 更多要保存在内存中的内存表。不同 cassandra 版本的表开销也不同。如果它只是一个标准的“多租户”,那么您可以考虑将tenant_id 列添加到分区键。

      还可以查看similar posts 询问表的数量。

      【讨论】:

      • 会有成千上万的客户。我不确定桌子的数量。解决我的需求的最佳方法是什么?
      • 每个用户会保留多少数据?非常大的东西?
      • 是的,那将是巨大的。
      猜你喜欢
      • 1970-01-01
      • 2014-07-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2019-11-07
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多