高效的Cassandra键空间设计

高效的Cassandra键空间设计,cassandra,Cassandra,我有一个关于最佳Cassandra数据库设计的问题:拥有一个包含大量细行的表是有效的还是拥有一个包含许多表的键空间是有效的 背景: 我正在尝试存储来自多个传感器的数据。一种方法是使用一个表来存储来自所有传感器的数据。另一种方法是每个传感器有一个表。哪一个更好 请告知。为所有传感器提供一个表是更好的习惯做法。每个表都会引入一些开销(用于度量、文件等的MXBean),所以您不需要太多 当你说“大量的瘦行”时,我并不认为这是一个问题,你可以有许多唯一的键/分区(一些非常大的数字)。我会选择较少的表,原

我有一个关于最佳Cassandra数据库设计的问题:拥有一个包含大量细行的表是有效的还是拥有一个包含许多表的键空间是有效的

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


请告知。

为所有传感器提供一个表是更好的习惯做法。每个表都会引入一些开销(用于度量、文件等的MXBean),所以您不需要太多


当你说“大量的瘦行”时,我并不认为这是一个问题,你可以有许多唯一的键/分区(一些非常大的数字)。

我会选择较少的表,原因有很多:

  • 正如Andy Tolbert在中提到的,每个表都会引入一些开销,当您有10或100个数千个表时,这些开销会累积到一个很大的数额。可以将其视为增加你的管理费用/价值比率
  • 如果您正在处理大量的表,那么很可能会在应用程序的正常运行时间内动态创建其中的一些表。如果是这样的话,您可能会在Cassandra中看到错误,因为它在压力下可能无法在集群中传播一些新表的模式。我在C*2.0中看到过这一点,但我不确定这在最新版本中是否仍然是一个问题
  • 多表模式的大部分好处都可以从对单表数据建模的额外考虑中获得。尽管如此,在某些情况下,将数据分离到离散表中确实是最合适的解决方案。这方面的一个例子是在某些多租户系统中,出于管理原因,不同租户的数据需要在物理上保持分离并进行隔离备份

  • 我认为“疯狂大数”是2^127或170141183460469231731687303715884105728,听起来不错(而且疯狂大!),这是来自分区器的唯一哈希数吗?我认为对于Murruit3,它使用了散列的前半部分,所以我认为它是2^63(我可能错了)。是的,我认为2^127来自随机分割者时代。我认为你是对的,杂音3有点像-2^63到+2^63;也就是2^63*2。与2^127不太一样,但仍然非常大!英雄联盟