防止时间序列工作负载的最佳方法是什么? 我们使用scylla,但与Cassandra相同 Doc关于TWC说: 警告 不惜一切代价避免覆盖数据并明确删除数据,因为这可能会阻止过期的sstable

问题描述 投票:0回答:1
caution

避免覆盖数据并不惜一切代价明确删除数据,因为由于执行的检查以避免数据复活而进行的检查,这可能会阻止过期的Sstable被清除。

线 data模型类似:

CREATE TABLE telemetry ( device_id text, date text, occurred_on timestamp, PRIMARY KEY ((device_id, date), occurred_on) )

使用TWC时,最好的方法是防止上升的方法?我知道一些方法,但是权衡太多:

使用轻量级交易 - 听起来不错,但插入工作负载的性能会急剧下降 使用timeuuid for fosted_on而不是时间戳来保证独特的行 - 但通常不是出于此目的提议(不知道为什么,可能是在从timeuid到select加载数据的时间上的timeuuid上的开销太多?)

Maybe存在着另一个选择,最好是什么?
	

这似乎有点误会。 “防止UPSERTS”是指该应用程序不应发行序列,因为它应该是时间序列用例。实施LWT或使用时间uuid而不是时间戳无关

    TimeWindowCompactionStrategy
  1. (TWC)是为真正的时间序列工作负载而设计的尚未到期的数据。 在某些情况下,时间窗口很小(例如5分钟),并且延迟插入数据可能会插入一个小时,因为这意味着数据只需要额外几个小时才能到期。但是,在数据到达数天甚至几周迟到的情况下,直到所有数据过期之前,都不能在数周或数月内删除。
  2. 这可能会导致节点上的高磁盘使用情况,这些节点主要是过期的数据,这些数据无法清除,因为它需要等待所有这些数据过期。如果这种情况是根据业务需求不可接受的,那么TWC可能不合适。相反,请考虑其他压实策略,例如
  3. SizeTieredCompactionStrategy(STC)或新的UnifiedCompactionStrategy
  4. (UCS)。
对于一些背景,

UnifiedCompactionStrategy
cassandra time-series scylla
1个回答
0
投票
是最初为

astradb

(cassandra-as-a-service)开发的功能,然后添加到商业发行版

DatastaxEnterprise(dse)

和hyper-concoteded数据库(HCD)
。在2022年,DataStax将UCS捐赠给Apache软件基金会(

CEP-26

),在该基金会中,将其添加为Apache Cassandra5.0

Cassandra-18397

)中的新功能。为了进行全面披露,我是Apache Cassandra委员会,并且在DataStax工作。欢呼!
	

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.