Erweiterungen (Datenshards)

Tabellen werden in Erweiterungen oder Datenshards partitioniert. Jede Erweiterung ist ein horizontales Segment der Tabelle, das Daten und Metadaten wie die Erstellungszeit und optionale Tags enthält. Die Union all dieser Erweiterungen enthält das gesamte Dataset der Tabelle. Erweiterungen sind gleichmäßig auf Knoten im Cluster verteilt und werden sowohl in der lokalen SSD als auch im Arbeitsspeicher zwischengespeichert, um die Leistung zu optimieren.

Erweiterungen sind unveränderlich, was bedeutet, dass sie abgefragt, einem anderen Knoten neu zugewiesen oder aus der Tabelle entfernt, aber nie geändert werden können. Datenänderungen erfolgen, indem neue Erweiterungen erstellt und alte Erweiterungen transaktionsweise durch die neuen Blöcke ausgetauscht werden. Die Unveränderlichkeit von Erweiterungen bietet Vorteile wie eine höhere Robustheit und eine einfache Umstellung auf frühere Momentaufnahmen.

Erweiterungen enthalten eine Sammlung von Datensätzen, die physisch in Spalten angeordnet sind, wodurch eine effiziente Codierung und Komprimierung der Daten ermöglicht wird. Um die Abfrageeffizienz zu gewährleisten, werden kleinere Ausdehnungen gemäß der konfigurierten Mergerichtlinie und Shardingrichtlinie in größere Ausdehnungen zusammengeführt. Das Zusammenführen von Erweiterungen reduziert den Verwaltungsaufwand und führt zu einer Indexoptimierung und verbesserter Komprimierung.

Der allgemeine Ausdehnungslebenszyklus sieht wie folgt aus:

  1. Der Umfang wird durch einen Erfassungsvorgang erstellt.
  2. Der Umfang wird mit anderen Erweiterungen zusammengeführt.
  3. Die zusammengeführte Ausdehnung (möglicherweise eine, die ihre Herkunft auf andere Ausdehnungen nachverfolgt) wird schließlich aufgrund einer Aufbewahrungsrichtlinie gelöscht.

Erstellungszeit des Umfangs

Zwei datetime-Werte werden pro Ausdehnung nachverfolgt: MinCreatedOn und MaxCreatedOn. Diese Werte sind zunächst identisch, können sich jedoch ändern, wenn der Umfang mit anderen Erweiterungen zusammengeführt wird. Wenn der Umfang mit anderen Ausdehnungen zusammengeführt wird, entsprechen die neuen Werte den ursprünglichen Mindest- und Höchstwerten der zusammengeführten Ausdehnungen.

Die Erstellungszeit eines Umfangs wird für folgende Zwecke verwendet:

  • Aufbewahrung: Zuvor erstellte Erweiterungen werden zuvor gelöscht.
  • Zwischenspeicherung: Kürzlich erstellte Erweiterungen werden im heißen Cache gespeichert.
  • Stichprobenentnahme: Aktuelle Erweiterungen werden bevorzugt, wenn Abfragevorgänge wie take verwendet werden.

Um die Erstellungszeit eines Bereichs zu überschreiben, stellen Sie eine Alternative creationTime in den Datenerfassungseigenschaften bereit. Dies kann für Aufbewahrungszwecke nützlich sein, z. B. wenn Sie Daten erneut erfassen möchten, aber nicht möchten, dass sie so aussehen, als ob sie zu spät eingetroffen wären.

Hinweis

Die Berechnung für das Entfernen eines Bereichs basierend auf der Zeit verwendet die Erstellungszeit des neuesten Ausmasss innerhalb des zusammengeführten Umfangs.