Azure Storage-bővítmény az Azure Database for PostgreSQL-ben – rugalmas kiszolgáló
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
A Microsoft-ügyfelek gyakran használják az adatok importálását és exportálását az Azure Blob Storage és egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldány között. A rugalmas Azure Database for PostgreSQL-kiszolgálón található Azure Storage-bővítmény (azure_storage
) leegyszerűsíti ezt a használati esetet.
Azure Blob Storage
Az Azure Blob Storage felhőalapú objektumtárolási megoldás. A Blob Storage nagy mennyiségű strukturálatlan adat tárolására van optimalizálva. A strukturálatlan adatok olyan adatok, amelyek nem követnek egy adott adatmodellt vagy -definíciót, például szöveges vagy bináris adatok.
A Blob Storage három típusú erőforrás-hierarchiát kínál:
A tárfiók egy rendszergazdai entitás, amely olyan elemek szolgáltatásait tárolja, mint a blobok, fájlok, üzenetsorok, táblák vagy lemezek.
Amikor létrehoz egy tárfiókot az Azure-ban, egyedi névteret kap a tárerőforrásokhoz. Ez az egyedi névtér az URL-cím részét képezi. A tárfiók nevének egyedinek kell lennie az Azure összes meglévő tárfióknevében.
A tároló egy tárfiókban található. A tárolók olyanok, mint a blobokat tároló mappák.
Megadhatja a biztonsági szabályzatokat, és szabályzatokat rendelhet a tárolóhoz. Ezek a szabályzatok kaszkádolt az összes blobra a tárolóban.
A tárfiókok korlátlan számú tárolót tartalmazhatnak. Minden tároló korlátlan számú blobot tartalmazhat, legfeljebb 500 TB tárfiókméretig.
Miután egy blobot egy tárfiókon belüli tárolóba helyezett, a blobra az alábbi formátumú URL-cím használatával hivatkozhat:
protocol://<storage_account_name>/blob.core.windows.net/<container_name>/<blob_name>
.A blobok olyan adatok, amelyek a tárolóban találhatók.
Az alábbi ábra az ezen erőforrások közötti kapcsolatot mutatja be.
Az adatok blobként való tárolásának főbb előnyei az Azure Blob Storage-ban
Az Azure Blob Storage a következő előnyöket nyújtja:
- Ez egy méretezhető és költséghatékony felhőalapú tárolási megoldás. Segítségével bármilyen méretű adatot tárolhat, és igény szerint fel- vagy leskálázható.
- Biztonsági rétegeket biztosít az adatok védelme érdekében, például inaktív és átvitel alatt lévő titkosítást.
- Kommunikál más Azure-szolgáltatásokkal és partneralkalmazásokkal. Sokoldalú megoldás számos használati esethez, például biztonsági mentéshez és vészhelyreállításhoz, archiváláshoz és adatelemzéshez.
- Költséghatékony megoldás nagy mennyiségű adat felhőben való kezelésére és tárolására, legyen szó akár kisvállalatról, akár nagyvállalatról. Csak a szükséges tárhelyért kell fizetnie.
Adatok importálása az Azure Blob Storage-ból rugalmas Azure Database for PostgreSQL-kiszolgálóra
Az Azure Blob Storage-ból való adatok betöltéséhez engedélyeznie kell a azure_storage
PostgreSQL-bővítményt. Ezután a következő paranccsal telepítheti a bővítményt az CREATE EXTENSION
adatbázisban:
CREATE EXTENSION azure_storage;
Tárfiók létrehozásakor az Azure két 512 bites tárfiók hozzáférési kulcsot hoz létre az adott fiókhoz. Ezekkel a kulcsokkal engedélyezheti a tárfiók adataihoz való hozzáférést megosztott kulcsok engedélyezésén keresztül.
Az adatok importálása előtt le kell képeznie a tárfiókot a account_add
módszerrel. Adja meg a fiók létrehozásakor definiált fiókelérési kulcsot. Az alábbi példakód leképi a tárfiókot mystorageaccount
, és a sztringet SECRET_ACCESS_KEY
használja a hozzáférési kulcs paramétereként:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
A tárterület leképezése után listázhatja a tárfiók tartalmát, és kiválaszthatja az importáláshoz szükséges adatokat. Az alábbi példa feltételezi, hogy létrehozott egy nevű mystorageaccount
tárfiókot és egy blobtárolót:mytestblob
SELECT path, bytes, pg_size_pretty(bytes), content_type
FROM azure_storage.blob_list('mystorageaccount','mytestblob');
Ennek az utasításnak a kimenetét egy normál SQL WHERE
záradék vagy a prefix
metódus paramétere blob_list
használatával szűrheti. A tároló tartalmának listázásához fiókra és hozzáférési kulcsra vagy engedélyezett névtelen hozzáféréssel rendelkező tárolóra van szükség.
Végül az COPY
utasítással vagy a függvénnyel adatokat importálhat az blob_get
Azure Blob Storage-ból egy meglévő rugalmas Azure Database for PostgreSQL-kiszolgálótáblába.
Adatok importálása COPY utasítással
Az alábbi példa egy olyan employee.csv fájlból származó adatok importálását mutatja be, amely ugyanabban mystorageaccount
az Azure Storage-fiókban található blobtárolóban mytestblob
található a COPY
parancson keresztül:
Hozzon létre egy céltáblát, amely megfelel a forrásfájl sémájának:
CREATE TABLE employees ( EmployeeId int PRIMARY KEY, LastName VARCHAR ( 50 ) UNIQUE NOT NULL, FirstName VARCHAR ( 50 ) NOT NULL );
COPY
Egy utasítással adatokat másolhat a céltáblába. Adja meg, hogy az első sor fejléc legyen.COPY employees FROM 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee.csv' WITH (FORMAT 'csv', header);
Adatok importálása a blob_get függvény használatával
A blob_get
függvény lekéri a fájlt a Blob Storage-ból. Annak érdekében, hogy blob_get
az adatok elemezhetők legyenek, átadhat egy értéket a fájl oszlopainak megfelelő típussal, vagy explicit módon definiálhatja a FROM
záradék oszlopait.
A függvényt a blob_get
következő formátumban használhatja:
azure_storage.blob_get(account_name, container_name, path)
A következő példa ugyanazt a műveletet mutatja be ugyanabból a forrásból ugyanarra a célra a blob_get
függvény használatával:
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))
A COPY
parancs és blob_get
a függvény az alábbi fájlkiterjesztéseket támogatja az importáláshoz:
Fájlformátum | Leírás |
---|---|
.csv | A PostgreSQL által használt vesszővel tagolt értékek formátuma COPY |
.tsv | Tabulátorral tagolt értékek, az alapértelmezett PostgreSQL-formátum COPY |
bináris | Bináris PostgreSQL COPY formátum |
text | Egyetlen szöveges értéket tartalmazó fájl (például nagy JSON vagy XML) |
Adatok exportálása rugalmas Azure Database for PostgreSQL-kiszolgálóról az Azure Blob Storage-ba
Ha rugalmas Azure Database for PostgreSQL-kiszolgálóról szeretne adatokat exportálni az Azure Blob Storage-ba, engedélyeznie kell a azure_storage
bővítményt. Ezután telepítse a azure_storage
PostgreSQL-bővítményt az adatbázisba a CREATE EXTENSION
következő paranccsal:
CREATE EXTENSION azure_storage;
Tárfiók létrehozásakor az Azure két 512 bites tárfiók hozzáférési kulcsot hoz létre az adott fiókhoz. Ezekkel a kulcsokkal engedélyezheti a tárfiókban lévő adatokhoz való hozzáférést megosztott kulcsok engedélyezésével, vagy a megosztott kulccsal aláírt közös hozzáférésű jogosultságkód (SAS) jogkivonatok használatával.
Az adatok importálása előtt le kell képeznie a tárfiókot a account_add
módszerrel. Adja meg a fiók létrehozásakor definiált fiókelérési kulcsot. Az alábbi példakód leképi a tárfiókot mystorageaccount
, és a sztringet SECRET_ACCESS_KEY
használja a hozzáférési kulcs paramétereként:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Az utasítással vagy a blob_put
függvénnyel adatokat exportálhat COPY
egy Azure Database for PostgreSQL-táblából az Azure Blob Storage-ba. Az alábbi példa egy alkalmazotti tábla adatainak exportálását mutatja be egy employee2.csv nevű új fájlba a COPY
parancson keresztül. A fájl ugyanabban mystorageaccount
az Azure Storage-fiókban található a blobtárolóbanmytestblob
.
COPY employees
TO 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee2.csv'
WITH (FORMAT 'csv');
Hasonlóképpen exportálhat adatokat egy alkalmazotti táblából a blob_put
függvényen keresztül, ami még végesebb vezérlést biztosít az exportált adatok felett. Az alábbi példa csak a tábla két oszlopát exportálja, EmployeeId
és LastName
a . Kihagyja az oszlopot FirstName
.
SELECT azure_storage.blob_put('mystorageaccount', 'mytestblob', 'employee2.csv', res) FROM (SELECT EmployeeId,LastName FROM employees) res;
A COPY
parancs és a függvény az blob_put
alábbi fájlkiterjesztéseket támogatja az exportáláshoz:
Fájlformátum | Leírás |
---|---|
.csv | A PostgreSQL által használt vesszővel tagolt értékek formátuma COPY |
.tsv | Tabulátorral tagolt értékek, az alapértelmezett PostgreSQL-formátum COPY |
bináris | Bináris PostgreSQL COPY formátum |
text | Egyetlen szöveges értéket (például nagy JSON-t vagy XML-t) tartalmazó fájl |
Objektumok listázása az Azure Storage-ban
Az Azure Blob Storage-objektumok listázásához engedélyeznie kell a azure_storage
bővítményt. Ezután telepítse a azure_storage
PostgreSQL-bővítményt az adatbázisba a CREATE EXTENSION
következő paranccsal:
CREATE EXTENSION azure_storage;
Tárfiók létrehozásakor az Azure két 512 bites tárfiók hozzáférési kulcsot hoz létre az adott fiókhoz. Ezekkel a kulcsokkal engedélyezheti a tárfiókban lévő adatokhoz való hozzáférést megosztott kulcsok engedélyezésével vagy a megosztott kulccsal aláírt SAS-jogkivonatokon keresztül.
Az adatok importálása előtt le kell képeznie a tárfiókot a account_add
módszerrel. Adja meg a fiók létrehozásakor definiált fiókelérési kulcsot. Az alábbi példakód leképi a tárfiókot mystorageaccount
, és a sztringet SECRET_ACCESS_KEY
használja a hozzáférési kulcs paramétereként:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Az Azure Storage-bővítmény egy metódust blob_list
biztosít. Ezzel a módszerrel az alábbi formátumban listázhatja a Blob Storage objektumait:
azure_storage.blob_list(account_name, container_name, prefix)
Az alábbi példa az Azure Storage-ban található objektumok listáját mutatja be egy blob_list
névvel ellátott mystorageaccount
tárfiók és egy nevű mytestbob
blobtároló metódusával. A tárolóban lévő fájlok sztringgel employee
rendelkeznek.
SELECT path, size, last_modified, etag FROM azure_storage.blob_list('mystorageaccount','mytestblob','employee');
Engedélyek hozzárendelése nemminisztratív fiókhoz az Azure Storage-ból származó adatok eléréséhez
Alapértelmezés szerint csak a azure_pg_admin rendszergazdai szerepkör adhat hozzá fiókkulcsot, és hozzáférhet a tárfiókhoz a rugalmas Azure Database for PostgreSQL-kiszolgálón.
A rugalmas Azure Database for PostgreSQL-kiszolgálófelhasználók számára az Azure Storage-adatokhoz való hozzáféréshez kétféleképpen adhat engedélyeket az engedélyek részletességétől függően:
Hozzárendelés
azure_storage_admin
a nemminisztratív felhasználóhoz. Ez a szerepkör az Azure Storage-bővítmény telepítésével lesz hozzáadva. Az alábbi példa ezt a szerepkört egy nemminisztratív, úgynevezettsupport
felhasználónak adja:-- Allow adding/list/removing storage accounts GRANT azure_storage_admin TO support;
Hívja meg a függvényt
account_user_add
. Az alábbi példa engedélyeket ad hozzá a szerepkörhözsupport
a rugalmas Azure Database for PostgreSQL-kiszolgálón. Ez egy végesebb engedély, mivel csak egy Azure Storage-fiókhozmystorageaccount
biztosít hozzáférést a felhasználóknak.SELECT * FROM azure_storage.account_user_add('mystorageaccount', 'support');
A rugalmas Azure Database for PostgreSQL-kiszolgáló rendszergazdai felhasználói lekérhetik a függvény kimenetében account_list
található tárfiókok és engedélyek listáját. Ez a függvény az összes definiált hozzáférési kulcsú fiókot megjeleníti.
SELECT * FROM azure_storage.account_list();
Amikor a rugalmas Azure Database for PostgreSQL-kiszolgáló rendszergazdája úgy dönt, hogy a felhasználónak többé nem kell hozzáféréssel rendelkeznie, a rendszergazda a metódussal vagy funkcióval eltávolíthatja ezt a account_user_remove
hozzáférést. Az alábbi példa eltávolítja a szerepkört support
a tárfiókhoz mystorageaccount
való hozzáférésből:
SELECT * FROM azure_storage.account_user_remove('mystorageaccount', 'support');