Database design 在Cassandra中使用多个键空间是否是一种良好的做法?

Database design 在Cassandra中使用多个键空间是否是一种良好的做法?,database-design,cassandra,replication,nosql,Database Design,Cassandra,Replication,Nosql,我在Amazon EC2上配置了Cassandra,在单个集群中有3个节点(实例)。现在,我想做的是通过为单个集群中的每个集群创建单独的键空间,在Cassandra上为我的客户提供一些空间。客户端的数量将一天比一天增加,所以我不能假设创建了固定数量的键空间 如果在单个集群中创建过多的键空间,是否会出现性能问题 如果这不是一个好的做法,那么是否有其他的解决方法来满足我的需要?我不想配置Cassandra的多个实例。视情况而定。取决于您最终希望拥有多少个客户机(例如,我们谈论的是成百上千个客户机?)

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

如果在单个集群中创建过多的键空间,是否会出现性能问题


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

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

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

卡桑德拉的数千张桌子将如何运作?有公开的bug报告表明,拥有数千个表中的大量表可能会导致高CPU利用率和更长的启动时间

贝莱德的兰迪·弗雷登(Randy Fraden)在2015年卡桑德拉峰会上作了精彩的演讲。如上所述,多租户的通常建议是将租户id放入分区键中。贝莱德随后使用自定义IAAuthenticator和IAAuthorizer模块在分区级别强制实施租户安全性


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

将会有成千上万的客户。我不确定桌子的数量。解决我的需求的最佳方法是什么?每个用户将保留多少数据?非常大的东西?是的,那会很大。