簡體   English   中英

如何在Cassandra sstable上設置TTL

[英]How to set TTL on Cassandra sstable

我們將Cassandra 3.10與6個節點集群一起使用。

最近,我們注意到我們的數據量急劇增加,每個節點每天大約4GB。 我們希望實施一種更具侵略性的保留策略,在該策略中,我們將壓縮方式更改為1小時窗口大小的TWCS,並設置幾天的TTL,這可以通過表屬性來實現。

由於ETL為了減輕Cassandra的工作量應該是一個緩慢的過程,因此可能要等到TTL才能完成對所有數據的提取,所以我想知道ETL過程是否有辦法在整個SSTable上設置TTL = 0一旦提取完成?

TTL = 0被讀取為邏輯刪除。 下次壓縮時,將根據您的gc_grace將其寫入墓碑或清除。 除了進行邏輯刪除的寫操作之外,僅進行刪除或創建包含必要邏輯刪除的sstables可能比重寫所有現有的sstables容易。 是否更有效地進行范圍或點邏輯刪除取決於您的版本和架構。

可能最簡單的選擇是一起使用不同的壓縮策略,或者像https://github.com/protectwise/cassandra-util/tree/master/deleting-compaction-strategy這樣的自定義策略。 然后,您可以只清除已處理的壓縮數據。 這仍然很大程度上取決於您的架構,以標記要處理或未處理的內容有多困難。

您還應該在表和查詢級別上設置TTL 0。 TTL過期后,數據將轉換為邏輯刪除。 根據gc_grace_seconds的值,下一次壓縮將清除所有邏輯刪除。 您也可以運行大型壓實來清除墓碑,但是在基於壓縮策略的卡桑德拉中不建議這樣做。 如果運行健康壓縮需要STCS至少有50%的磁盤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM