Verwenden von temporären und transienten Tabellen

Neben permanenten Tabellen, die der Standardtabellentyp beim Erstellen von Tabellen sind, unterstützt Snowflake auch das Definieren von temporären und transienten Tabellen. Diese Tabellentypen sind besonders nützlich zum Speichern von Daten, die nicht über längere Zeiträume verwaltet werden müssen (z. B. vorübergehende Daten).

Unter diesem Thema:

Temporäre Tabellen

Snowflake unterstützt das Erstellen temporärer Tabellen zum Speichern nicht permanenter, vorübergehender Daten (z. B. ETL-Daten, sitzungsspezifische Daten). Temporäre Tabellen sind nur in der Sitzung vorhanden, in der sie erstellt wurden, und sie bestehen nur für die Dauer der Sitzung. Daher sind sie für andere Benutzer oder Sitzungen nicht sichtbar und unterstützen einige Standardfunktionen wie das Klonen nicht. Nach Beendigung der Sitzung werden die in der Tabelle gespeicherten Daten vollständig aus dem System gelöscht und können daher weder vom Benutzer, der die Tabelle erstellt hat, noch von Snowflake wiederhergestellt werden.

Bemerkung

Neben Tabellen unterstützt Snowflake auch das Erstellen bestimmter anderer Datenbankobjekte als temporär (z. B. Stagingbereiche). Diese Objekte folgen derselben Semantik (d. h. sie sind sitzungsbasiert und bestehen nur für die Dauer der Sitzung).

Datenspeichernutzung von temporären Tabellen

Während der Dauer des Bestehens einer temporären Tabelle tragen die in der Tabelle gespeicherten Daten zu den Speichergesamtgebühren bei, die Snowflake Ihrem Konto in Rechnung stellt. Um unerwartete Speicheränderungen zu vermeiden, insbesondere wenn Sie in Sitzungen, die länger als 24 Stunden bestehen, große temporäre Tabellen erstellen, empfiehlt Snowflake, diese Tabellen explizit zu löschen, sobald sie nicht mehr benötigt werden. Sie können die Sitzung, in der die Tabelle erstellt wurde, auch explizit beenden, um sicherzustellen, dass keine zusätzlichen Kosten anfallen.

Weitere Details dazu finden Sie unter Vergleich von Tabellentypen (unter diesem Thema).

Potenzielle Namenskonflikte mit anderen Tabellentypen

Ähnlich wie die anderen Tabellentypen (transient und permanent) gehören temporäre Tabellen zu einer angegebenen Datenbank und einem angegebenen Schema. Da sie jedoch sitzungsbasiert sind, sind sie nicht an die gleichen Eindeutigkeitsanforderungen gebunden. Dies bedeutet, dass Sie temporäre und nicht temporäre Tabellen mit demselben Namen innerhalb desselben Schemas erstellen können.

Beachten Sie jedoch, dass die temporäre Tabelle in der Sitzung Vorrang vor allen anderen Tabellen mit demselben Namen in demselben Schema hat. Dies kann zu potenziellen Konflikten und unerwartetem Verhalten führen, insbesondere wenn DDL auf temporären und nicht temporären Tabellen ausgeführt wird. Beispiel:

  • Sie können eine temporäre Tabelle mit demselben Namen wie eine vorhandene Tabelle in demselben Schema erstellen, wodurch die vorhandene Tabelle effektiv ausgeblendet wird.

  • Sie können eine Tabelle erstellen, die denselben Namen wie eine vorhandene temporäre Tabelle in demselben Schema hat. Die neu erstellte Tabelle wird jedoch von der temporären Tabelle ausgeblendet.

Alle in der Sitzung auf der Tabelle ausgeführten Abfragen und anderen Operationen wirken sich dann nur auf die temporäre Tabelle aus.

Wichtig

Dieses Verhalten muss unbedingt beachtet werden, wenn Sie eine Tabelle in einer Sitzung löschen und dann Time Travel verwenden, um die Tabelle wiederherzustellen. Das Verhalten muss außerdem beachtet werden, wenn zum Erstellen einer Tabelle CREATE OR REPLACE verwendet wird, denn dabei wird im Wesentlichen eine Tabelle gelöscht (sofern vorhanden) und eine neue Tabelle mit der angegebenen Definition erstellt.

Erstellen einer temporären Tabelle

Um eine temporäre Tabelle zu erstellen, geben Sie einfach das Schlüsselwort TEMPORARY (oder die Abkürzung TEMP) in CREATE TABLE an. Beispiel:

CREATE TEMPORARY TABLE mytemptable (id NUMBER, creation_date DATE);

Bemerkung

Nach dem Erstellen können temporäre Tabellen nicht in einen anderen Tabellentyp konvertiert werden.

Transiente Tabellen

Snowflake unterstützt das Erstellen von transienten Tabellen, die bestehen bleiben, bis sie explizit gelöscht werden, und die allen Benutzern mit den entsprechenden Berechtigungen zur Verfügung stehen. Transiente Tabellen ähneln permanenten Tabellen mit dem Unterschied, dass sie keine Fail-safe-Frist haben. Infolgedessen sind transiente Tabellen speziell für vorübergehende Daten konzipiert, die über eine Sitzung hinaus verfügbar sein müssen (im Gegensatz zu temporären Tabellen), aber nicht dasselbe Datenschutz- und Wiederherstellungsniveau wie permanente Tabellen benötigen.

Datenspeichernutzung von transienten Tabellen

Ähnlich wie bei permanenten Tabellen tragen transiente Tabellen zu den gesamten Speichergebühren bei, die Snowflake Ihrem Konto in Rechnung stellt. Da transiente Tabellen jedoch kein Fail-safe benötigen, entstehen keine entsprechenden Kosten (d. h. Kosten für die Verwaltung der Daten, die für die ausfallsichere Notfallwiederherstellung erforderlich sind).

Weitere Details dazu finden Sie unter Vergleich von Tabellentypen (unter diesem Thema).

Transiente Datenbanken und Schemas

Snowflake unterstützt auch die Erstellung transienter Datenbanken und Schemas. Alle in einem transienten Schema erstellten Tabellen sowie alle in einer transienten Datenbank erstellten Schemas sind per Definition transient.

Erstellen einer transienten Tabelle, eines transienten Schemas oder einer transienten Datenbank

Um eine transiente Tabelle, ein transientes Schema oder eine transiente Datenbank zu erstellen, geben Sie beim Erstellen des Objekts einfach das Schlüsselwort TRANSIENT an:

So erstellen Sie beispielsweise eine transiente Tabelle:

CREATE TRANSIENT TABLE mytranstable (id NUMBER, creation_date DATE);

Bemerkung

Nach dem Erstellen können transiente Tabellen nicht in einen anderen Tabellentyp konvertiert werden.

Vergleich von Tabellentypen

Die folgende Tabelle fasst die Unterschiede zwischen den drei Tabellentypen zusammen, insbesondere im Hinblick auf ihre Auswirkungen auf Time Travel und Fail-safe:

Typ

Persistenz

Unterstützt das Klonen

Aufbewahrungsfrist für Time Travel (Tage)

Fail-safe-Frist (Tage)

Temporär

Dauer der Sitzung

0 oder 1 (Standardeinstellung ist 1)

0

Transient

Bis explizit gelöscht

0 oder 1 (Standardeinstellung ist 1)

0

Permanent (Standard Edition)

Bis explizit gelöscht

0 oder 1 (Standardeinstellung ist 1)

7

Permanent (Enterprise Edition und höher)

Bis explizit gelöscht

0 bis 90 (Standard ist konfigurierbar)

7

Hinweise zu Time Travel

  • Die Time Travel-Aufbewahrungsfrist einer Tabelle kann beim Erstellen der Tabelle oder zu einem beliebigen Zeitpunkt angegeben werden. Innerhalb der Aufbewahrungsfrist können alle Time Travel-Operation auf den Daten in der Tabelle (z. B. Abfragen) und auf der Tabelle selbst (z. B. Klonen und Wiederherstellen) ausgeführt werden.

  • Temporäre Tabellen können eine Time Travel-Aufbewahrungsfrist von 1 Tag haben. Eine temporäre Tabelle wird jedoch gelöscht, sobald die Sitzung (in der die Tabelle erstellt wurde) endet. Die tatsächliche Aufbewahrungsfrist beträgt also 24 Stunden oder den Rest der Sitzung, je nachdem, welcher Zeitraum kürzer ist.

Hinweise zu Fail-safe

  • Die Fail-safe-Frist ist bei keinem Tabellentyp konfigurierbar.

  • Transiente und temporäre Tabellen haben keine Fail-safe-Frist. Daher fallen nach der Time Travel-Aufbewahrungsfrist keine zusätzlichen Gebühren für die Datenspeicherung an.

Wichtig

Da transiente Tabellen keine Fail-safe-Periode haben, stellen sie eine gute Option für die Verwaltung der Kosten sehr großer Tabellen dar, die zum Speichern transienter Daten verwendet werden. Die Daten in diesen Tabellen können jedoch nach Ablauf der Time Travel-Aufbewahrungsfrist nicht mehr wiederhergestellt werden.

Wenn beispielsweise nach 1 Tag ein Systemfehler auftritt, bei dem eine transiente Tabelle gelöscht wird oder verloren geht, können die Daten weder von Ihnen noch von Snowflake wiederhergestellt werden. Daher empfehlen wir die Verwendung von transienten Tabellen nur für Daten, die nicht vor Ausfällen geschützt werden müssen, oder für Daten, die außerhalb von Snowflake wiederhergestellt werden können.

Weitere Details dazu finden Sie unter Hinweise zur Datenspeicherung.