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.
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'
};
| Option | Standardwert | Bedeutung |
|---|---|---|
window_size | 1h | Breite eines Fensters. SSTables werden anhand des maximalen Zeitstempels einem Fenster zugeordnet |
freeze_after | 2h | Nach dem Schließen des Fensters vergeht diese Zeit, bis es eingefroren wird. Das ist der Spielraum für verspätete Daten |
retention | Keine | Fenster, die älter als dieser Wert sind, werden vollständig gelöscht. Wenn nicht angegeben, läuft nichts ab |
max_future_window | 1d | Fenster, die weiter in der Zukunft liegen, werden aus allen automatischen Pfaden ausgeschlossen |
timestamp_resolution | MICROSECONDS | Einheit für Zell-Zeitstempel. Änderungen sind hier selten erforderlich |
window_size an das Abfragemuster anpassenWenn 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
- Mehrstufige Speicherung — für die zusätzliche Komprimierung alter Fenster
- Überblick über die Zeitserien-Datenbank