Cassandra中的预配置写容量

时间:2018-10-28 21:00:30

标签: cassandra time-series amazon-dynamodb

我需要在Cassandra中捕获时间序列传感器数据。在DynamoDB中处理时间序列数据的最佳做法如下:

  1. 每个时间段创建一张表,其表的写容量小于1,000个写容量单位(WCU)。
  2. 在每个时间段结束之前,为下一个时间段预先构建表格。
  3. 一旦不再写入表,请减少其预配置的写入容量。随着年龄的增长,还应减少早期表的预配置读取容量,并归档或删除那些很少或永远不需要其内容的表。

现在,我想知道如何在Cassandra中实现相同的概念!有没有办法在Cassandra中手动配置写/读容量?

2 个答案:

答案 0 :(得分:1)

对于cassandra,只需制作一个表,但在分区键中包含一些时间段(这样,分区就不会无限增长并变得太大)。没有表维护和读写能力实际上更多地取决于工作负载和架构,集群的大小等,但除了调整集群的大小外,实际上不必担心。

答案 1 :(得分:1)

这实际上取决于您需要与开发等进行讨论的需求。

在Cassandra中有几种处理时间序列数据的方法:

  1. 为所有物品配备一张桌子。正如克里斯所说,只需将时间部分包括在分区键中(例如一天),并按传感器/天存储数据。如果数据不会被更新,并且您事先知道它们将保留多长时间,那么可以将TTL设置为数据,则可以使用TimeWindowCompactionStrategy。这种方法的优点是您只有一个表,不需要维护多个表,这使得开发和维护变得更加容易。
  2. 与您描述的方法相同-为一段时间(例如一个月)创建一个单独的表,然后将数据写入其中。在这种情况下,当数据“到期”时,您可以有效地删除整个表。使用这种方法,您可以根据需要更新数据,而无需在数据上设置TTL。但这需要开发和运维团队进行更多工作,因为您需要访问多个表。另外,还要考虑到集群中表的数量存在一些限制-建议每个表的数量不要超过200个,因为每个表都需要一个内存来保存元数据等。尽管有些东西(例如Bloom Bloom过滤器)可以进行调整,以减少很少读取的表占用的内存。