cassandra - 高效的 Cassandra 键空间设计

标签 cassandra

我有一个关于最佳 Cassandra 数据库设计的问题:有一个包含大量瘦行的表是否有效,或者有一个包含许多表的键空间是否有效?

上下文: 我正在尝试存储来自多个传感器的数据。一种方法是使用一个表来存储来自所有传感器的数据。另一种方法是每个传感器有一个表。哪个更好?

请指教。

最佳答案

出于多种原因,我会选择较少的 table :

  1. 正如 Andy Tolbert 在 his reply 中提到的那样,每个表都会引入一些开销,当您拥有 10 或 100 万个表时,这些开销会累积起来。将其视为增加您的管理费用/值(value)比率
  2. 如果您要处理大量表,您很可能会在应用程序的正常运行期间动态创建其中一些表。如果是这种情况,您可能会在 Cassandra 中看到错误,因为它在承受压力时可能无法在集群中传播某些新表的模式。我在 C* 2.0 中看到过这个问题,但我不确定它在最新版本中是否仍然是个问题。
  3. 多表架构的大部分好处都可以通过对单表数据建模进行额外思考来获得。话虽如此,在某些情况下,将数据分离到离散表中确实是最合适的解决方案。这方面的一个例子是在某些 Multi-Tenancy 系统中,出于监管原因,不同租户的数据需要在物理上分开并单独备份。

关于cassandra - 高效的 Cassandra 键空间设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30578441/

相关文章:

node.js - Cassandra 的类型 ORM

java - 如何用 Direct Spark Cassandra 表数据操作替换 JAVA 循环

algorithm - 解释 Merkle 树用于最终一致性

java - Hector - 使用复合键插入行

hadoop - Cassandras Map Reduce 支持

hadoop - M/R程序中的映射和归约任务数不变

python - 在 pycassa 中找不到 Cassandra 列族

database - Cassandra 约束

node.js - 如何使用 node.js 驱动程序设置 Cassandra 中的一致性级别?

c++ - 使用 C++ 驱动程序在 Cassandra 中配置连接池