Zum Hauptinhalt springen

Zeitserien-Kompaktierung (TSCS)

Eine Kompaktierungsstrategie, die SSTables in festen Zeitfenstern bündelt: Das aktuelle Fenster wird wie gewohnt kompaktiert, geschlossene Fenster werden pro Fenster eingefroren, und Fenster, deren Aufbewahrungsfrist abgelaufen ist, werden ohne Kompaktierung vollständig gelöscht.

Unabhängig von der mehrstufigen Speicherung

TSCS ist eine Kompaktierungsstrategie, während die mehrstufige Speicherung eine Tabellenerweiterung darstellt. Man kann nur eine davon aktivieren, und TSCS zuerst zu aktivieren, birgt das geringere Risiko.

Konfiguration​

ALTER TABLE pp.tm_tag_point WITH compaction = {
'class': 'TimeSeriesCompactionStrategy',
'window_size': '1d',
'freeze_after': '2d',
'retention': '3650d'
};
OptionStandardwertBedeutung
window_size1hBreite eines Fensters. SSTables werden anhand des maximalen Zeitstempels einem Fenster zugeordnet
freeze_after2hNach dem Schließen des Fensters vergeht diese Zeit, bis es eingefroren wird. Das ist der Spielraum für verspätete Daten
retentionKeineFenster, die älter als dieser Wert sind, werden vollständig gelöscht. Wenn nicht angegeben, läuft nichts ab
max_future_window1dFenster, die weiter in der Zukunft liegen, werden aus allen automatischen Pfaden ausgeschlossen
timestamp_resolutionMICROSECONDSEinheit für Zell-Zeitstempel. Änderungen sind hier selten erforderlich
window_size an das Abfragemuster anpassen

Wenn das Dashboard tägliche Ansichten nutzt, ist 1d naheliegend. Zu kleine Fenster erhöhen nur die Anzahl der SSTables und den Verwaltungsaufwand — bei 10 Jahren Aufbewahrung und 1h Fenstern ergibt das 87.600 Fenster.

Lebenszyklus eines Fensters​

[현재 창] [닫힘, freeze_after 이내] [동결됨] [만료]
────────────────┼───────────────────────────┼─────────────────┼──────────────
UCS 에 위임 여전히 UCS 창당 1 SSTable 통째로 삭제
(평소 컴팩션) (지각 데이터 흡수) 이후 손대지 않음 (컴팩션 없음)

Das aktuelle Fenster und das gerade geschlossene Fenster werden an die internen UnifiedCompactionStrategy delegiert — bei aktiven Schreibvorgängen verhält sich dieser Bereich weiterhin wie ein vorgeschalteter UCS.

🔴 Die Ablaufsteuerung übernimmt retention — nicht die TTL​

Wenn retention nicht gesetzt wird, läuft nichts ab. Auch wenn eine TTL auf Zeilenebene konfiguriert ist, ist das eine andere Sache als die Fensterlöschung von TSCS.

Der Vorteil der Löschung auf Fensterebene liegt darin, dass Dateien ohne Kompaktierung gelöscht werden. Bei einer TTL-basierten Ablaufsteuerung müssen Tombstones erzeugt und durch Kompaktierung entfernt werden — für Daten wie Zeitreihen, bei denen «Altes komplett verworfen wird», ist dieser Aufwand unnötig.

Isolation verspäteter Daten​

Selbst wenn ein Edge nach einem Verbindungsausfall mehrere Tage Daten auf einmal überträgt, werden Flush und Streaming an den Fenstergrenzen getrennt. Verspätete Daten landen daher separat in ihrem ursprünglichen vergangenen Fenster, ohne das aktuelle Fenster zu beeinflussen und eine erneute Kompaktierung auszulösen. Alte SSTables, die mehrere Fenster umfassen, werden automatisch aufgeteilt.

Geparkte Fenster — Fenster ohne Fortschritt​

Ein Fenster, das nicht in den Einfrierzustand übergehen kann und stehen bleibt, wird als «geparkt» bezeichnet. Die Ursache ist eine einzige — Routing-Puffer-Überlauf. Diagnose und Werteanpassung finden Sie in der Bedienerdokumentation.

Überprüfung​

-- 지금 이 테이블에 걸린 컴팩션 설정
SELECT compaction FROM system_schema.tables
WHERE keyspace_name = 'pp' AND table_name = 'tm_tag_point';

Siehe auch​