Azure Storage-Erweiterung in Azure Database for PostgreSQL – Flexibler Server
GILT FÜR: Azure Database for PostgreSQL – Flexibler Server
Ein häufiger Anwendungsfall von Microsoft-Kunden ist die Möglichkeit, Daten zwischen Azure Blob Storage und einer Instanz von Azure Database for PostgreSQL – Flexibler Server zu importieren und zu exportieren. Die Azure Storage-Erweiterung (azure_storage
) in Azure Database for PostgreSQL – Flexibler Server vereinfacht diesen Anwendungsfall.
Azure Blob Storage
Azure Blob Storage ist eine Objektspeicherlösung für die Cloud. Blob Storage ist für die Speicherung großer Mengen unstrukturierter Daten optimiert. Unstrukturierte Daten sind Daten, die keinem bestimmten Datenmodell und keiner bestimmten Definition entsprechen (also beispielsweise Text- oder Binärdaten).
Blob Storage bietet eine Hierarchie von drei Ressourcentypen:
Das Speicherkonto ist eine administrative Entität, die Dienste für Elemente wie Blobs, Dateien, Warteschlangen, Tabellen oder Datenträger enthält.
Wenn Sie ein Speicherkonto in Azure erstellen, erhalten Sie den eindeutigen Namespace für Ihre Speicherressourcen. Dieser eindeutige Namespace bildet einen Teil der URL. Der Name des Speicherkontos sollte für alle vorhandenen Speicherkontonamen in Azure eindeutig sein.
Ein Container befindet sich in einem Speicherkonto. Ein Container ähnelt einem Ordner, in dem Blobs gespeichert werden.
Sie können Sicherheitsrichtlinien definieren und dem Container Richtlinien zuweisen. Diese Richtlinien werden an alle Blobs im Container weitergegeben.
Ein Speicherkonto kann eine unbegrenzte Anzahl von Containern enthalten. Jeder Container kann eine unbegrenzte Anzahl von Blobs (bis zur maximalen Speicherkontogröße von 500 TB) enthalten.
Nachdem Sie ein Blob in einem Container platziert haben, der sich in einem Speicherkonto befindet, können Sie mithilfe einer URL in diesem Format auf das Blob verweisen:
protocol://<storage_account_name>/blob.core.windows.net/<container_name>/<blob_name>
.Ein Blob ist ein Teil der Daten, die sich im Container befinden.
Im folgenden Diagramm ist die Beziehung zwischen diesen Ressourcen dargestellt.
Wichtige Vorteile des Speicherns von Daten als Blobs in Azure Blob Storage
Azure Blob Storage kann folgende Vorteile bieten:
- Es handelt sich um eine skalierbare und kostengünstige Cloudspeicherlösung. Sie können sie verwenden, um Daten beliebiger Größe zu speichern und basierend auf Ihren Anforderungen hoch- oder herunterskalieren.
- Sie bietet verschiedene Sicherheitsebenen zum Schutz Ihrer Daten, z. B. Verschlüsselung im Ruhezustand und während der Übertragung.
- Sie kommuniziert mit anderen Azure-Diensten und Partneranwendungen. Es handelt sich um eine vielseitige Lösung für eine breite Palette von Anwendungsfällen, z. B. Sicherung und Notfallwiederherstellung, Archivierung und Datenanalyse.
- Es handelt sich um eine kostengünstige Lösung zum Verwalten und Speichern riesiger Datenmengen in der Cloud, unabhängig davon, ob es sich bei der Organisation um ein kleines oder ein großes Unternehmen handelt. Sie bezahlen nur für den benötigten Speicher.
Importieren von Daten aus Azure Blob Storage aus Azure Database for PostgreSQL – Flexibler Server
Um Daten aus Azure Blob Storage zu laden, müssen Sie die PostgreSQL-Erweiterung azure_storage
auf die Positivliste setzen. Anschließend installieren Sie die Erweiterung mithilfe des Befehls CREATE EXTENSION
in der Datenbank:
CREATE EXTENSION azure_storage;
Wenn Sie ein Speicherkonto erstellen, generiert Azure zwei 512-Bit-Speicherkonto-Zugriffsschlüssel für dieses Konto. Mit diesen Schlüsseln können Sie den Zugriff auf Daten in Ihrem Speicherkonto per gemeinsam verwendetem Schlüssel autorisieren.
Bevor Sie die Daten importieren können, müssen Sie das Speicherkonto mithilfe der account_add
-Methode zuordnen. Geben Sie den Kontozugriffsschlüssel an, der beim Erstellen des Kontos definiert wurde. Das folgende Codebeispiel ordnet das Speicherkonto mystorageaccount
zu und verwendet die Zeichenfolge SECRET_ACCESS_KEY
als Parameter für den Zugriffsschlüssel:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Nach dem Zuordnen des Speichers können Sie Speicherkontoinhalte auflisten und Daten für den Import auswählen. Im folgenden Beispiel wird davon ausgegangen, dass Sie ein Speicherkonto mit dem Namen mystorageaccount
und einen Blobcontainer mit dem Namen mytestblob
erstellt haben:
SELECT path, bytes, pg_size_pretty(bytes), content_type
FROM azure_storage.blob_list('mystorageaccount','mytestblob');
Sie können die Ausgabe dieser Anweisung mithilfe einer regulären SQL WHERE
-Klausel oder des prefix
-Parameters der blob_list
-Methode filtern. Für das Auflisten von Containerinhalten sind ein Konto und ein Zugriffsschlüssel oder Container mit aktiviertem anonymem Zugriff erforderlich.
Schließlich können Sie entweder die COPY
-Anweisung oder die Funktion blob_get
verwenden, um Daten aus Azure Blob Storage in eine vorhandene Tabelle in Azure Database for PostgreSQL – Flexibler Server zu importieren.
Importieren von Daten mithilfe einer COPY-Anweisung
Das folgende Beispiel zeigt den Import von Daten aus einer Datei vom Typ employee.csv, die sich im Blobcontainer mytestblob
im selben Azure-Speicherkonto (mystorageaccount
) befindet, über den Befehl COPY
:
Erstellen Sie eine Zieltabelle, die dem Quelldateischema entspricht:
CREATE TABLE employees ( EmployeeId int PRIMARY KEY, LastName VARCHAR ( 50 ) UNIQUE NOT NULL, FirstName VARCHAR ( 50 ) NOT NULL );
Verwenden Sie eine
COPY
-Anweisung, um Daten in die Zieltabelle zu kopieren. Geben Sie an, dass die erste Zeile Kopfzeilen enthält.COPY employees FROM 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee.csv' WITH (FORMAT 'csv', header);
Importieren von Daten mithilfe der Funktion „blob_get“
Die Funktion blob_get
ruft eine Datei aus Blob Storage ab. Damit blob_get
die Daten parsen kann, können Sie entweder einen Wert mit einem Typ übergeben, der den Spalten in der Datei entspricht, oder die Spalten in der FROM
-Klausel explizit definieren.
Sie können die Funktion blob_get
im folgenden Format verwenden:
azure_storage.blob_get(account_name, container_name, path)
Das nächste Beispiel zeigt die gleiche Aktion von der gleichen Quelle zum gleichen Ziel mithilfe der blob_get
-Funktion:
INSERT INTO employees
SELECT * FROM azure_storage.blob_get('mystorageaccount','mytestblob','employee.csv',options:= azure_storage.options_csv_get(header=>true)) AS res (
CustomerId int,
LastName varchar(50),
FirstName varchar(50))
Der Befehl COPY
und die Funktion blob_get
unterstützen die folgenden Dateierweiterungen für den Import:
Dateiformat | Beschreibung |
---|---|
.csv | Format mit durch Trennzeichen getrennten Werten, das von PostgreSQL COPY verwendet wird |
.tsv | Durch Tabstopp getrennte Werte – das Standardformat für PostgreSQL COPY |
binary | Binäres Format für PostgreSQL COPY |
Text | Datei mit einem einzelnen Textwert (z. B. große JSON- oder XML-Datei) |
Exportieren von Daten aus der Azure Database for PostgreSQL – Flexible Server in Azure Blob Storage
Zum Exportieren von Daten aus der Azure Database for PostgreSQL – Flexibler Server in Azure Blob Storage müssen Sie die Erweiterung azure_storage
auf die Positivliste setzen. Anschließend installieren Sie die PostgreSQL-Erweiterung azure_storage
mithilfe des Befehls CREATE EXTENSION
in der Datenbank:
CREATE EXTENSION azure_storage;
Wenn Sie ein Speicherkonto erstellen, generiert Azure zwei 512-Bit-Speicherkonto-Zugriffsschlüssel für dieses Konto. Sie können diese Schlüssel verwenden, um den Zugriff auf Daten in Ihrem Speicherkonto über die Autorisierung mit gemeinsam genutztem Schlüssel oder über SAS-Token (Shared Access Signature) zu autorisieren, die mit dem gemeinsam genutzten Schlüssel signiert sind.
Bevor Sie die Daten importieren können, müssen Sie das Speicherkonto mithilfe der account_add
-Methode zuordnen. Geben Sie den Kontozugriffsschlüssel an, der beim Erstellen des Kontos definiert wurde. Das folgende Codebeispiel ordnet das Speicherkonto mystorageaccount
zu und verwendet die Zeichenfolge SECRET_ACCESS_KEY
als Parameter für den Zugriffsschlüssel:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Sie können entweder die Anweisung COPY
oder die Funktion blob_put
verwenden, um Daten aus einer Azure Database for PostgreSQL-Tabelle in Azure Blob Storage zu exportieren. Das folgende Beispiel zeigt den Export von Daten aus einer Mitarbeitertabelle in eine neue Datei mit dem Namen employee2.csv über den Befehl COPY
. Die Datei befindet sich im Blobcontainer mytestblob
im selben Azure-Speicherkonto namens mystorageaccount
.
COPY employees
TO 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee2.csv'
WITH (FORMAT 'csv');
Ebenso können Sie Daten aus einer Mitarbeitertabelle über die blob_put
-Funktion exportieren, wodurch Sie noch bessere Kontrolle über die exportierten Daten erhalten. Im folgenden Beispiel werden nur zwei Spalten der Tabelle exportiert: EmployeeId
und LastName
. Die Spalte FirstName
wird übersprungen.
SELECT azure_storage.blob_put('mystorageaccount', 'mytestblob', 'employee2.csv', res) FROM (SELECT EmployeeId,LastName FROM employees) res;
Der Befehl COPY
und die Funktion blob_put
unterstützen die folgenden Dateierweiterungen für den Export:
Dateiformat | Beschreibung |
---|---|
.csv | Format mit durch Trennzeichen getrennten Werten, das von PostgreSQL COPY verwendet wird |
.tsv | Durch Tabstopp getrennte Werte – das Standardformat für PostgreSQL COPY |
binary | Binäres Format für PostgreSQL COPY |
Text | Eine Datei mit einem einzelnen Textwert (z. B. große JSON- oder XML-Datei) |
Auflisten von Objekten in Azure Storage
Um Objekte in Azure Blob Storage auflisten zu können, müssen Sie die Erweiterung auf die Positivliste setzenazure_storage
. Anschließend installieren Sie die PostgreSQL-Erweiterung azure_storage
mithilfe des Befehls CREATE EXTENSION
in der Datenbank:
CREATE EXTENSION azure_storage;
Wenn Sie ein Speicherkonto erstellen, generiert Azure zwei 512-Bit-Speicherkonto-Zugriffsschlüssel für dieses Konto. Sie können diese Schlüssel verwenden, um den Zugriff auf Daten in Ihrem Speicherkonto über die Autorisierung mit gemeinsam genutztem Schlüssel oder über SAS-Token zu autorisieren, die mit dem gemeinsam genutzten Schlüssel signiert sind.
Bevor Sie die Daten importieren können, müssen Sie das Speicherkonto mithilfe der account_add
-Methode zuordnen. Geben Sie den Kontozugriffsschlüssel an, der beim Erstellen des Kontos definiert wurde. Das folgende Codebeispiel ordnet das Speicherkonto mystorageaccount
zu und verwendet die Zeichenfolge SECRET_ACCESS_KEY
als Parameter für den Zugriffsschlüssel:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Die Azure Storage-Erweiterung stellt eine blob_list
-Methode bereit. Mit dieser Methode können Sie Objekte in Blob Storage im folgenden Format auflisten:
azure_storage.blob_list(account_name, container_name, prefix)
Das folgende Beispiel zeigt das Auflisten von Objekten in Azure Storage mithilfe der blob_list
-Methode aus einem Speicherkonto namens mystorageaccount
und einem Blobcontainer namens mytestbob
. Dateien im Container enthalten die Zeichenfolge employee
.
SELECT path, size, last_modified, etag FROM azure_storage.blob_list('mystorageaccount','mytestblob','employee');
Zuweisung von Berechtigungen an ein nicht-administratives Konto für den Zugriff auf Daten von Azure Storage
Standardmäßig kann nur die administrative Rolle azure_pg_admin einen Kontoschlüssel hinzufügen und auf das Speicherkonto in Azure Database for PostgreSQL – Flexibler Server zugreifen.
Sie können die Berechtigung zum Zugriff auf Daten in Azure Storage für nicht-administrative Benutzer von Azure Database for PostgreSQL – Flexibler Server kann je nach Granularität der Berechtigung auf zwei Arten erteilen:
Weisen Sie
azure_storage_admin
dem nicht-administrativen Benutzer zu. Diese Rolle wird bei der Installation der Azure Storage-Erweiterung hinzugefügt. Das folgende Beispiel gewährt diese Rolle einem nicht-administrativen Benutzer namenssupport
:-- Allow adding/list/removing storage accounts GRANT azure_storage_admin TO support;
Rufen Sie die Funktion
account_user_add
auf. Im folgenden Beispiel werden der Rollesupport
in Azure Database for PostgreSQL – Flexibler Server Berechtigungen hinzugefügt. Es handelt sich um eine begrenzte Berechtigung, da der Benutzer nur Zugriff auf ein Azure-Speicherkonto mit dem Namenmystorageaccount
erhält.SELECT * FROM azure_storage.account_user_add('mystorageaccount', 'support');
Administratoren von Azure Database for PostgreSQL – Flexibler Server können eine Liste der Speicherkonten und Berechtigungen in der Ausgabe der account_list
-Funktion abrufen. Diese Funktion zeigt alle Konten mit definierten Zugriffsschlüsseln an.
SELECT * FROM azure_storage.account_list();
Wenn der Administrator von Azure Database for PostgreSQL – Flexibler Server beschließt, dass Benutzer keinen Zugriff mehr haben sollten, kann er diesen mit der account_user_remove
-Methode oder -Funktion den Zugriff entziehen. Im folgenden Beispiel wird die Rolle support
aus dem Zugriff auf das Speicherkonto mystorageaccount
entfernt:
SELECT * FROM azure_storage.account_user_remove('mystorageaccount', 'support');
Nächste Schritte
- Wenn eine Erweiterung fehlt, die Sie verwenden möchten, lassen Sie es uns wissen. Stimmen Sie in unserem Feedbackforum für vorhandene Anfragen ab, oder geben Sie uns weiteres Feedback.