cassandra中的时间序列配置写容量

83qze16e  于 2021-06-15  发布在  Cassandra
关注(0)|答案(2)|浏览(389)

我需要在Cassandra采集时间序列传感器数据。dynamodb中处理时间序列数据的最佳实践如下:
每个时间段创建一个表,设置的写容量小于1000个写容量单位(WCU)。
在每个时间段结束之前,为下一个时间段预构建表。
一旦一个表不再被写入,就减少其配置的写容量。此外,还可以随着早期表的老化而减少已配置的读取容量,并归档或删除那些内容很少或永远不需要的表。
现在我想知道如何在Cassandra实现同样的概念!在cassandra中是否也有手动配置写/读容量的方法?

fzwojiic

fzwojiic1#

对于cassandra来说,只需创建一个表,但在分区键中包含一些时间段(这样分区就不会无限期地增长并变得太大)。无表维护和读/写容量实际上更多地依赖于工作负载和模式、集群的大小等,但除了调整集群的大小之外,不必担心。

brvekthn

brvekthn2#

这实际上取决于您自己的需求,您需要与开发等部门讨论这些需求。
在cassandra中有几种处理时间序列数据的方法:
每样东西都有一张table。正如chris所提到的,只需将时间组件包括到分区键中,比如一天,并按传感器/天存储数据。如果数据不会被更新,并且您提前知道它们将被保留多长时间,那么您可以将ttl设置为data,然后您可以使用timewindowcompactionstrategy。这种方法的优点是您只有一个表,并且不需要维护多个表,这使得开发和维护更加容易。
与您描述的方法相同—为一段时间(如一个月)创建一个单独的表,并将数据写入其中。在这种情况下,您可以在数据“过期”时有效地删除整个表。使用这种方法,您可以在必要时更新数据,而不需要在数据上设置ttl。但是这需要开发和操作团队做更多的工作,因为您需要访问多个表。另外,考虑到集群中表的数量有一些限制-建议不要超过200个表,因为每个表都需要一个内存来保存元数据等。不过,对于很少读取的表,可以调整一些东西,如bloom过滤器,以占用较少的内存。

相关问题