Konfigurieren einer internen Postgres-Speicherintegration für Snowflake Postgres¶
Eine interne Snowflake Postgres-Speicherintegration ermöglicht es Ihnen, in dem verwalteten Speicher zu lesen und zu schreiben, der mit einer Snowflake Postgres-Instanz verbunden ist. Dieses Feature ermöglicht nahtlose Datenbewegungen zwischen Snowflake und Ihren Postgres-Instanzen über einen externen Stagingbereich. Die vollständige SQL-Syntax finden Sie unter CREATE STORAGE INTEGRATION (Postgres Internal Storage).
Postgres-Instanzen in Snowflake verfügen über verwalteten Speicher, der von der Postgres-Instanz zugewiesen wird. Während Benutzer bereits auf diesen Speicher zugreifen können, um Dateien über Iceberg-Tabellen mit einer Snowflake Postgres-Katalogintegration zu lesen, bietet eine Speicherintegration einen Pfad zum Schreiben von Daten aus Snowflake in den von Postgres verwalteten Bucket.
Bemerkung
Interne Postgres-Speicherintegrationen werden derzeit nur auf AWS und Azure unterstützt.
Voraussetzungen¶
Ein Snowflake-Konto mit aktiviertem Snowflake-Postgres-Feature.
Eine Postgres-Instanz mit dem Status READY. Um eine Postgres-Instanz zu erstellen, siehe CREATE POSTGRES INSTANCE.
Die Rolle, die die Speicherintegration erstellt, muss über die folgenden Berechtigungen verfügen:
OWNERSHIPfür die Postgres-Instanz.CREATE INTEGRATIONfür das Konto.
Hinweise¶
Beachten Sie Folgendes, wenn Sie eine interne Postgres-Speicherintegration verwenden:
Unterstützung von Cloudanbietern: Dieses Feature unterstützt derzeit nur AWS und Azure.
Stagingeinschränkungen: Beim Erstellen eines Stagingbereichs (siehe CREATE STAGE), der eine interne Postgres-Speicherintegration verwendet, sind die Stagingbereichseigenschaften
URL,ENCRYPTIONundDIRECTORYnicht zulässig.Pfadkonfiguration: Die Integration hängt automatisch einen
/files-Unterpfad zum Basisspeicherort an, der von der Postgres-Instanz abgerufen wird.
Erstellen einer Speicherintegration für internen Postgres-Speicher¶
Um eine Speicherintegration für internen Postgres-Speicher zu erstellen, verwenden Sie den Befehl CREATE STORAGE INTEGRATION (Postgres Internal Storage) mit TYPE = POSTGRES_INTERNAL_STORAGE.
Beispiel:
Wobei:
TYPE = POSTGRES_INTERNAL_STORAGE: Gibt den Integrationstyp für den von Postgres verwalteten Speicher an. Erforderlich.POSTGRES_INSTANCE = '<instance_name>': Gibt den Namen der Snowflake Postgres-Instanz an. Erforderlich.
Die vollständige Syntax- und Parameterreferenz finden Sie unter CREATE STORAGE INTEGRATION (Postgres Internal Storage).
Erstellen eines Stagingbereichs für den Postgres-Speicher¶
Nachdem Sie die Integration erstellt haben, können Sie einen externen Stagingbereich erstellen, um mit dem Speicher zu interagieren. Verwenden Sie die RELATIVE_URL-Eigenschaft, um ein vom Benutzer gewähltes Pfadpräfix unter dem verwalteten Postgres-Speicher anzugeben, auf den dieser Stagingbereich verweisen soll. Dieser Wert ist ein beliebiger Pfad, den Sie definieren, um Dateien innerhalb des verwalteten Speicherorts zu organisieren.
Beispiel:
Verschieben von Daten zwischen Snowflake und Postgres¶
Sie können den Befehl COPY FILES zum Verschieben von Daten zwischen Snowflake-Stagingbereichen und Ihrem verwalteten Postgres-Speicher verwenden. Diese Beispiele gehen davon aus, dass Sie zusätzlich zu dem oben erstellten Postgres-Stagingbereich bereits einen separaten Snowflake-Stagingbereich erstellt haben.
Snowflake zu Postgres (Schreiben)¶
So verschieben Sie Daten aus einem bestehenden Snowflake-Stagingbereich in den von Postgres verwalteten Speicher:
Wobei <source_stage> sich auf einen bereits vorhandenen Snowflake-Stagingbereich bezieht, der die Dateien enthält, die Sie verschieben möchten, und <postgres_stage> der im vorherigen Schritt erstellte Postgres-Stagingbereich ist.
Auf der Postgres-Seite können Sie dann die Daten laden:
Wobei @STAGE ein vorkonfigurierter Platzhalter für den Speicherort des Stagingbereichs auf der Postgres-Seite ist.
Postgres zu Snowflake (Lesen)¶
So verschieben Sie von Postgres geschriebene Daten zurück in einen bestehenden Snowflake-Stagingbereich:
Wobei <destination_stage> sich auf einen bereits vorhandenen Snowflake-Stagingbereich bezieht, in den Sie die Dateien kopieren möchten, und <postgres_stage> der zuvor erstellte Postgres-Stagingbereich ist.
Zugriffssteuerung¶
Es gilt das Standard-Berechtigungsmodell für die Snowflake-Speicherintegration:
Eigentümerschaft: Die Rolle, die die Integration erstellt, muss Eigentümer der zugehörigen Postgres-Instanz sein.
Verwendung: Um die Integration zum Erstellen eines Stagingbereichs zu verwenden, muss eine Rolle die
USAGE-Berechtigung für das Integrationsobjekt haben.Berechtigungen für Stagingbereiche: Benutzer benötigen Standardberechtigungen (z. B.
READ,WRITE) für den Stagingbereich selbst, um Datenbewegungsoperationen auszuführen.
So erteilen Sie beispielsweise einer anderen Rolle die Berechtigung, Stagingbereiche unter Verwendung der Speicherintegration zu erstellen: