Externes Volume konfigurieren

Ein externes Volume ist ein benanntes Snowflake-Objekt auf Kontoebene, das Sie verwenden, um Snowflake mit Ihrem externen Cloudspeicher für Iceberg-Tabellen zu verbinden. Ein externes Volume speichert eine Identitäts- und Zugriffsverwaltungseinheit (IAM) für Ihren Speicherort. Snowflake verwendet die IAM-Entität, um eine sichere Verbindung zu Ihrem Speicher für den Zugriff auf Tabellendaten, Iceberg-Metadaten und Manifest-Dateien herzustellen, in denen das Tabellenschema, Partitionen und andere Metadaten gespeichert sind.

Ein einzelnes externes Volume kann eine oder mehrere Iceberg-Tabellen unterstützen.

Sie müssen ein externes Volume erstellen, bevor Sie in Snowflake eine Apache Iceberg™-Tabelle erstellen können.

Externes Volume erstellen

Die Schritte zur Erstellung eines externen Volumes hängen von Ihrem Cloudspeicheranbieter ab.

Anleitungen finden Sie unter den folgenden Themen:

Jedes externe Volume ist mit einem bestimmten Aktiver Speicherort verbunden, und ein einzelnes externes Volume kann mehrere Iceberg-Tabellen unterstützen. Die Anzahl der externen Volumes, die Sie benötigen, hängt jedoch davon ab, wie Sie Ihre Tabellendaten speichern, organisieren und sichern möchten.

Sie können ein einziges externes Volume verwenden, wenn Sie die Daten und Metadaten für alle Ihre Snowflake-Iceberg-Tabellen in Unterverzeichnissen unter demselben Speicherort (z. B. im selben S3 Bucket) haben möchten. Um diese Verzeichnisse für von Snowflake verwaltete Tabellen zu konfigurieren, siehe Daten- und Metadatenverzeichnisse.

Alternativ können Sie auch mehrere externe Volumes erstellen, um verschiedene Speicherorte unterschiedlich zu sichern. Sie könnten zum Beispiel die folgenden externen Volumes erstellen:

  • Ein externes Volume mit Lesezugriff für extern verwaltete Iceberg-Tabellen.

  • Ein externes Volume, das mit Lese- und Schreibzugriff für von Snowflake verwaltete Tabellen konfiguriert ist

Ein externes Volume überprüfen

Um zu überprüfen, ob Snowflake sich erfolgreich bei Ihrem Speicheranbieter über ein von Ihnen konfiguriertes externes Volume authentifizieren kann, rufen Sie die Funktion SYSTEM$VERIFY_EXTERNAL_VOLUME auf.

Geben Sie den Namen des externen Volumes an, das Sie überprüfen möchten.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

Externes Standardvolumen auf Konto-, Datenbank- oder Schema-Ebene festlegen

Um ein vorhandenes externes Volume als Standard für Iceberg-Tabellen festzulegen, können Sie den Parameter EXTERNAL_VOLUME auf den folgenden Ebenen einstellen:

Konto:

Kontoadministratoren können mit dem Befehl ALTER ACCOUNT die Parameter für das Konto festlegen. Wenn der Wert für das Konto festgelegt ist, werden die Lese- und Schreiboperationen aller im Konto erstellten Iceberg-Tabellen standardmäßig auf diesem externen Volume ausgeführt.

Objekt:

Benutzer können den entsprechenden CREATE <Objekt>- oder ALTER <Objekt>-Befehl ausführen, um den Parameterwert von EXTERNAL_VOLUME auf Datenbank- oder Schema-Ebene zu überschreiben. Es wird die Deklaration mit dem kleinsten Geltungsbereich verwendet: Schema > Datenbank > Konto.

Zusätzlich zu den Mindestberechtigungen, die für das Ändern eines Objekts mit dem entsprechenden ALTER <Objekttyp>-Befehl erforderlich sind, muss eine Rolle die USAGE-Berechtigung für das externe Volume haben.

Bemerkung

Änderungen am Parameter EXTERNAL_VOLUME gelten nur für Tabellen, die nach der Änderung erstellt wurden. Bestehende Tabellen verwenden weiterhin das externe Volume, das bei ihrer Erstellung angegeben wurde.

Beispiel

Mit der folgenden Anweisung wird ein externes Volume (my_s3_vol) für eine Datenbank namens my_database_1 festgelegt:

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

Nachdem Sie ein externes Volume auf Datenbankebene festgelegt haben, können Sie eine Iceberg-Tabelle in dieser Datenbank erstellen, ohne ein externes Volume angeben zu müssen. Mit der folgenden Anweisung wird eine Iceberg-Tabelle in my_database_1 erstellt, die Snowflake als Katalog und das für die Datenbank als Standard-Volume festgelegte externe Volume (my_s3_vol) verwendet.

CREATE ICEBERG TABLE iceberg_reviews_table (
  id STRING,
  product_name STRING,
  product_id STRING,
  reviewer_name STRING,
  review_date DATE,
  review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';
Copy