2017-12-14 2 views
3

in der Dokumentation zu Daten für Cassandra auslaufenden (here) wird erwähnt, dassWie funktioniert der Daten-Overhead mehrerer Spalten mit TTL in Cassandra?

Auslaufende Daten einen zusätzlichen Overhead von 8 Bytes im Speicher und auf der Festplatte (den TTL und Ablaufzeit aufzuzeichnen) im Vergleich zu Standard-Daten .

Wenn man einen TTL (time-to-live) auf einem Tisch Pegel setzt, bedeutet das, dass für jeden Dateneintrag gibt es einen Overhead von 8 Bytes mehr im Speicher und auf der Festplatte durch die Anzahl von Spalten multipliziert oder ist es unabhängig von der Anzahl der Spalten?

Zum Beispiel findet man in der Dokumentation auch das Beispiel here zur Ermittlung der TTL für eine Spalte, obwohl Daten in mehr als 1 Spalte eingefügt werden und TTL für den eigentlichen einzufügenden Dateneintrag definiert ist, nicht für ein pro -Säulenbasis.

Antwort

2

Nein, nicht mehr mindestens. Diese Dokumentation ist veraltet und nur vor 3.0 relevant.

Derzeit, wenn alle Spalten in einer Partition oder einer Zeile in einer Partition dieselbe TTL-Einstellung bei der Einfügung haben, wird nur einmal für sie festgelegt. Wenn sie gespeichert sind, werden sie delta-codiert von stables minTimestamp als eine vorzeichenlose Variable int geschrieben, nicht 8 Bytes.

2

Cassandra Nach documentation, auf dem Tisch Abschnitt erstellen heißt es:

default_time_to_live

TTL in Sekunden (Time To Live), wo Null deaktiviert ist. Wenn angegeben, wird der Wert für den Time To Live (TTL) Marker für jede Spalte in der Tabelle festgelegt; Standardwert: 0. Wenn die TTL-Tabelle überschritten wird, wird die Tabelle vertont.

Was bedeutet, dass, wenn man eine TTL für die Tabelle zu definieren, ist es für jede Spalte (mit Ausnahme des Primärschlüssels) gültig ist.

+0

Also würde das bedeuten, dass wir für jede Zeile 8 Bytes mehr Overhead multipliziert mit der Anzahl der Spalten haben? (Nach diesem Gedankengang) –

+0

Ja, außer für die Spalten, aus denen der Primärschlüssel besteht. –

Verwandte Themen