高效的Cassandra键空间设计

时间:2015-06-01 16:21:58

标签: cassandra

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

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

请告知。

2 个答案:

答案 0 :(得分:3)

由于种种原因,我会选择较少的桌子:

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

答案 1 :(得分:2)

为所有传感器设置1个表是更好和惯用的。每个表都会引入一些开销(mxbeans用于指标,文件等),因此您不需要太多。

如果你说'大量的瘦行',我不认为这是一个问题,你可以有许多独特的键/分区(一些疯狂的大号)。