In diesem Thema werden die zwei Rollover-Mechanismen beschrieben. Die Datenbank operiert als FIFO-Warteschlange (First In, First Out). Neue Daten werden immer an die Datenbank angehängt und die ältesten Daten werden bei Bedarf automatisch entfernt. Daten in der Mitte der Datenbank sind unveränderbar und können nicht modifiziert werden.
Es gibt zwei Mechanismen für das Rollover: synchron und asynchron.
Synchrones Rollover
Das synchrone Rollover bezieht sich auf Rollover-Einstellungen, die als Reaktion auf einen Schreibvorgang in der Datenbank angewendet werden. Das bedeutet, dass Daten direkt deshalb aus der Datenbank entfernt werden, weil neue Daten geschrieben werden müssen. Das synchrone Rollover wird konfiguriert, indem Sie Größenwerte bei der Konfiguration für packet.dir
, meta.dir
, session.dir
und index.dir
festlegen.
Das synchrone Rollover in den Paket-, Meta- und Sitzungsdatenbanken kann innerhalb jedes beliebigen Schreibvorgangs auftreten. Das synchrone Rollover beim Index findet statt, wenn der Index gespeichert wird.
Asynchrones Rollover
Beim asynchronen Rollover wird die Datenbankdatei entfernt; er tritt auf, wenn ein expliziter Rollover-Befehl an die Datenbank ergeht. In der Regel wird diese Art des Rollover mithilfe der integrierten Planungsfunktion des Core-Service regelmäßig ausgeführt. Der Benutzer kann ihn auch ausdrücklich anfordern.
Der Befehl für das asynchrone Rollover ist die Meldung sizeRoll
in den Nodes /index
und /database
der Konfigurationsstruktur. Die Meldung auf dem Node /database
bewirkt ein Größen-Rollover ausschließlich an Paket-, Meta- und Sitzungsdatenbanken, während die Meldung auf dem Node /index
simultane Rollover sowohl am Index als auch an Paket-, Meta- und Sitzungsdatenbanken durchführen kann.
Der Befehl sizeRoll
hat die folgende Parametersyntax:
size-roll-params = {type-param, space}, (max-size-param | min-free-param | max-percent-param), {max-size-warm-param, space} type-param = "type=", {type-flag} , { ",", type-flag } ; type-flag = "packet" | "meta" | "session" ; max-size-param = "maxSize=", number, {space}, unit ; max-percent-param = "maxPercent=", number, {space}, unit ; min-free-param = "minFree=", number, {space}, unit ; max-size-warm-param = "maxSizeWarm=", number, {space}, unit ; unit = "t" | "TB" | "g" | "GB" | "m" | "MB" ; number = ? decimal number ? ; percentage = ? number between 0 and 100 ? ;
Der Parameter type
steuert die Datenbanken dahingehend, dass die Entfernung der ältesten Daten basierend auf der Gesamtgröße oder dem verbleibenden Speicherplatz in Erwägung gezogen wird. Wenn „type“ beim /index
sizeRoll nicht angegeben ist, wird für die Rollover-Vorgänge nur der Index berücksichtigt.
Der Parameter maxSize
legt eine aktuelle Maximalgröße für die Datenbank oder den Index fest. Wenn die Datenbank größer als dieser Wert ist, werden die ältesten Daten zuerst gelöscht (oder abhängig von der Konfiguration in den Warm oder Cold Tier verschoben), bis die Gesamtgröße unter maxSize
sinkt. Der sizeRoll
-Vorgang stellt fest, welche Daten basierend auf Sitzungs-IDs die ältesten aus allen Datenbanken und dem Index sind. Sitzungen oder Indexeinträge mit den niedrigsten Sitzungs-IDs werden zuerst gelöscht und möglicherweise werden auch Meta- und Paketdatenbanken entfernt, die durch die Entfernung der Einträge aus der Sitzungsdatenbank verwaist sind. Für die Indexdaten wird ein Rollout durchgeführt, wenn die Sitzungen, auf die sie sich beziehen, entfernt werden.
Der Parameter maxSizeWarm
legt eine aktuelle Maximalgröße auf dem Warm Tier fest, verhält sich jedoch ansonsten genau wie der Parameter maxSize
. Wenn für die Daten ein Rollout aus dem Warm Tier durchgeführt wird, werden sie in den Cold Tier verschoben (sofern konfiguriert) oder gelöscht.
Der Parameter maxPercent
legt einen kombinierten maximalen Prozentsatz aller Volumes aller Datenbanken fest, die im Parameter type
übergeben werden. Bei Überschreitung des Grenzwerts werden die ältesten Daten zuerst gelöscht, bis die Gesamtgröße unterhalb des maximalen Prozentsatzes für alle Volumes liegt.
Der Parameter minFree
legt einen Mindestwert für den freien Speicherplatz fest, der in Volumes erlaubt ist, bevor die ältesten Daten gelöscht werden.
Jeder Aufruf an den sizeRoll-Vorgang sorgt für einen einzigen Durchgang durch die Datenbank zum Löschen von Dateien. Wenn der Vorgang abgeschlossen ist, erfüllt die aktuelle Größennutzung der Datenbank die von den Parametern maxSize
, maxPercent
oder minFree
und dem optionalen maxSizeWarm
angegebenen Kriterien. Deshalb kann dieser Vorgang regelmäßig eingeplant werden, um sicherzustellen, dass die Datenbank ohne Unterbrechung operieren kann.
Beispiel
Im folgenden Beispiel wird ein typischer sizeRoll-Planungseintrag für einen Archiver gezeigt:
pathname=/index minutes=5 msg=sizeRoll params="type=meta,session,packet maxSize=25TB maxSizeWarm=150TB"
Dieser Planungseintrag gibt an, dass die Datenbank alle fünf Minuten sicherstellt, dass die Maximalgröße der Meta-, Sitzungs-, Paket- und Indexdaten 25 Terabyte auf dem Hot-Tier und 150 Terabyte auf dem Warm-Tier nicht überschreitet.