Megosztás a következőn keresztül:


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.

Példa a tárolási erőforrásokra.

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:

  1. 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
    );
    
  2. 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 LastNamea . 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ű mytestbobblobtároló metódusával. A tárolóban lévő fájlok sztringgel employeerendelkeznek.

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, úgynevezett supportfelhaszná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öz support a rugalmas Azure Database for PostgreSQL-kiszolgálón. Ez egy végesebb engedély, mivel csak egy Azure Storage-fiókhoz mystorageaccountbiztosí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 mystorageaccountvaló hozzáférésből:

SELECT * FROM azure_storage.account_user_remove('mystorageaccount', 'support');

Következő lépések

  • Ha nem látja a használni kívánt bővítményt, tudassa velünk. Szavazzon a meglévő kérelmekre, vagy hozzon létre új visszajelzési kéréseket a visszajelzési fórumunkban.