Rozszerzenie usługi Azure Storage w usłudze Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Typowym przypadkiem użycia dla klientów firmy Microsoft jest możliwość importowania i eksportowania danych między usługą Azure Blob Storage a elastycznym wystąpieniem serwera usługi Azure Database for PostgreSQL. Rozszerzenie usługi Azure Storage (azure_storage
) na serwerze elastycznym usługi Azure Database for PostgreSQL upraszcza ten przypadek użycia.
Azure Blob Storage
Usługa Azure Blob Storage to rozwiązanie do magazynowania obiektów w chmurze. Usługa Blob Storage jest zoptymalizowana pod kątem przechowywania ogromnych ilości danych bez struktury. Dane bez struktury są danymi, które nie są zgodne z żadnym modelem lub definicją danych, jak na przykład dane tekstowe lub binarne.
Usługa Blob Storage oferuje hierarchię trzech typów zasobów:
Konto magazynu to jednostka administracyjna, która przechowuje usługi dla elementów, takich jak obiekty blob, pliki, kolejki, tabele lub dyski.
Podczas tworzenia konta magazynu na platformie Azure uzyskujesz unikatową przestrzeń nazw dla zasobów magazynu. Ta unikatowa przestrzeń nazw stanowi część adresu URL. Nazwa konta magazynu powinna być unikatowa we wszystkich istniejących nazwach kont magazynu na platformie Azure.
Kontener znajduje się wewnątrz konta magazynu. Kontener jest jak folder, w którym są przechowywane obiekty blob.
Możesz zdefiniować zasady zabezpieczeń i przypisać zasady do kontenera. Te zasady są kaskadowe dla wszystkich obiektów blob w kontenerze.
Konto magazynu może zawierać nieograniczoną liczbę kontenerów. Każdy kontener może zawierać nieograniczoną liczbę obiektów blob, maksymalnie maksymalnie 500 TB.
Po umieściniu obiektu blob w kontenerze, który znajduje się wewnątrz konta magazynu, możesz odwołać się do obiektu blob przy użyciu adresu URL w tym formacie:
protocol://<storage_account_name>/blob.core.windows.net/<container_name>/<blob_name>
.Obiekt blob to kawałek danych znajdujących się w kontenerze.
Na poniższym diagramie przedstawiono relacje między tymi zasobami.
Najważniejsze korzyści wynikające z przechowywania danych jako obiektów blob w usłudze Azure Blob Storage
Usługa Azure Blob Storage może zapewnić następujące korzyści:
- Jest to skalowalne i ekonomiczne rozwiązanie magazynu w chmurze. Służy do przechowywania danych o dowolnym rozmiarze i skalowaniu w górę lub w dół w zależności od potrzeb.
- Zapewnia ona warstwy zabezpieczeń, które ułatwiają ochronę danych, takich jak szyfrowanie magazynowane i przesyłane.
- Komunikuje się z innymi usługami platformy Azure i aplikacjami partnerskimi. Jest to uniwersalne rozwiązanie dla szerokiego zakresu przypadków użycia, takich jak tworzenie kopii zapasowych i odzyskiwanie po awarii, archiwizowanie i analiza danych.
- Jest to ekonomiczne rozwiązanie do zarządzania i przechowywania ogromnych ilości danych w chmurze, niezależnie od tego, czy organizacja jest małą firmą, czy dużym przedsiębiorstwem. Płacisz tylko za potrzebny magazyn.
Importowanie danych z usługi Azure Blob Storage do serwera elastycznego usługi Azure Database for PostgreSQL
Aby załadować dane z usługi Azure Blob Storage, musisz włączyć rozszerzenie PostgreSQL na liście dozwolonych azure_storage
. Następnie zainstaluj rozszerzenie w bazie danych przy użyciu CREATE EXTENSION
polecenia :
CREATE EXTENSION azure_storage;
Podczas tworzenia konta magazynu platforma Azure generuje dla tego konta dwa 512-bitowe klucze dostępu do konta magazynu. Za pomocą tych kluczy możesz autoryzować dostęp do danych na koncie magazynu za pośrednictwem autoryzacji klucza współużytkowanego.
Zanim będzie można zaimportować dane, musisz zamapować konto magazynu przy użyciu account_add
metody . Podaj klucz dostępu do konta, który został zdefiniowany podczas tworzenia konta. Poniższy przykład kodu mapuje konto mystorageaccount
magazynu i używa ciągu SECRET_ACCESS_KEY
jako parametru klucza dostępu:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Po zamapowania magazynu możesz wyświetlić listę zawartości konta magazynu i wybrać dane do zaimportowania. W poniższym przykładzie przyjęto założenie, że utworzono konto magazynu o nazwie i kontener obiektów blob o nazwie mystorageaccount
mytestblob
:
SELECT path, bytes, pg_size_pretty(bytes), content_type
FROM azure_storage.blob_list('mystorageaccount','mytestblob');
Dane wyjściowe tej instrukcji można filtrować przy użyciu klauzuli regularnej SQL WHERE
lub prefix
parametru blob_list
metody. Wyświetlanie zawartości kontenera wymaga konta i klucza dostępu lub kontenera z włączonym dostępem anonimowym.
Na koniec możesz użyć instrukcji COPY
lub blob_get
funkcji, aby zaimportować dane z usługi Azure Blob Storage do istniejącej elastycznej tabeli serwerów usługi Azure Database for PostgreSQL.
Importowanie danych przy użyciu instrukcji COPY
W poniższym przykładzie pokazano importowanie danych z pliku employee.csv znajdującego się w kontenerze mytestblob
obiektów blob na tym samym mystorageaccount
koncie usługi Azure Storage za pomocą COPY
polecenia :
Utwórz tabelę docelową zgodną ze schematem pliku źródłowego:
CREATE TABLE employees ( EmployeeId int PRIMARY KEY, LastName VARCHAR ( 50 ) UNIQUE NOT NULL, FirstName VARCHAR ( 50 ) NOT NULL );
COPY
Użyj instrukcji , aby skopiować dane do tabeli docelowej. Określ, że pierwszy wiersz to nagłówki.COPY employees FROM 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee.csv' WITH (FORMAT 'csv', header);
Importowanie danych przy użyciu funkcji blob_get
Funkcja blob_get
pobiera plik z usługi Blob Storage. Aby upewnić się, że blob_get
można przeanalizować dane, możesz przekazać wartość z typem odpowiadającym kolumnom w pliku lub jawnie zdefiniować kolumny w klauzuli FROM
.
Możesz użyć blob_get
funkcji w następującym formacie:
azure_storage.blob_get(account_name, container_name, path)
W następnym przykładzie pokazano tę samą akcję z tego samego źródła do tego samego obiektu docelowego przy użyciu blob_get
funkcji :
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))
Polecenie COPY
i blob_get
funkcja obsługują następujące rozszerzenia plików do importowania:
File format | opis |
---|---|
.Csv | Format wartości rozdzielanych przecinkami używany przez usługę PostgreSQL COPY |
.Tsv | Wartości rozdzielane tabulatorami, domyślny format bazy danych PostgreSQL COPY |
dane binarne | Format binarnej bazy danych PostgreSQL COPY |
text | Plik zawierający pojedynczą wartość tekstową (na przykład duży kod JSON lub XML) |
Eksportowanie danych z elastycznego serwera usługi Azure Database for PostgreSQL do usługi Azure Blob Storage
Aby wyeksportować dane z serwera elastycznego usługi Azure Database for PostgreSQL do usługi Azure Blob Storage, musisz zezwolić na azure_storage
listę rozszerzeń. Następnie zainstaluj azure_storage
rozszerzenie PostgreSQL w bazie danych przy użyciu CREATE EXTENSION
polecenia :
CREATE EXTENSION azure_storage;
Podczas tworzenia konta magazynu platforma Azure generuje dla tego konta dwa 512-bitowe klucze dostępu do konta magazynu. Za pomocą tych kluczy można autoryzować dostęp do danych na koncie magazynu za pośrednictwem autoryzacji klucza współużytkowanego lub tokenów sygnatury dostępu współdzielonego (SAS), które są podpisane za pomocą klucza współdzielonego.
Zanim będzie można zaimportować dane, musisz zamapować konto magazynu przy użyciu account_add
metody . Podaj klucz dostępu do konta, który został zdefiniowany podczas tworzenia konta. Poniższy przykład kodu mapuje konto mystorageaccount
magazynu i używa ciągu SECRET_ACCESS_KEY
jako parametru klucza dostępu:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Możesz użyć instrukcji COPY
lub blob_put
funkcji, aby wyeksportować dane z tabeli usługi Azure Database for PostgreSQL do usługi Azure Blob Storage. W poniższym przykładzie pokazano eksportowanie danych z tabeli pracowników do nowego pliku o nazwie employee2.csv za pomocą COPY
polecenia . Plik znajduje się w kontenerze mytestblob
obiektów blob na tym samym mystorageaccount
koncie usługi Azure Storage.
COPY employees
TO 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee2.csv'
WITH (FORMAT 'csv');
Podobnie możesz wyeksportować dane z tabeli pracowników za pośrednictwem blob_put
funkcji, co zapewnia jeszcze większą kontrolę nad wyeksportowanych danych. Poniższy przykład eksportuje tylko dwie kolumny tabeli EmployeeId
i LastName
. Pomija kolumnę FirstName
.
SELECT azure_storage.blob_put('mystorageaccount', 'mytestblob', 'employee2.csv', res) FROM (SELECT EmployeeId,LastName FROM employees) res;
Polecenie COPY
i blob_put
funkcja obsługują następujące rozszerzenia plików do eksportowania:
File format | opis |
---|---|
.Csv | Format wartości rozdzielanych przecinkami używany przez usługę PostgreSQL COPY |
.Tsv | Wartości rozdzielane tabulatorami, domyślny format bazy danych PostgreSQL COPY |
dane binarne | Format binarnej bazy danych PostgreSQL COPY |
text | Plik zawierający pojedynczą wartość tekstową (na przykład duży kod JSON lub XML) |
Wyświetlanie listy obiektów w usłudze Azure Storage
Aby wyświetlić listę obiektów w usłudze Azure Blob Storage, musisz zezwolić na azure_storage
listę rozszerzeń. Następnie zainstaluj azure_storage
rozszerzenie PostgreSQL w bazie danych przy użyciu CREATE EXTENSION
polecenia :
CREATE EXTENSION azure_storage;
Podczas tworzenia konta magazynu platforma Azure generuje dla tego konta dwa 512-bitowe klucze dostępu do konta magazynu. Za pomocą tych kluczy można autoryzować dostęp do danych na koncie magazynu za pośrednictwem autoryzacji klucza współużytkowanego lub tokenów SAS podpisanych przy użyciu klucza współużytkowanego.
Zanim będzie można zaimportować dane, musisz zamapować konto magazynu przy użyciu account_add
metody . Podaj klucz dostępu do konta, który został zdefiniowany podczas tworzenia konta. Poniższy przykład kodu mapuje konto mystorageaccount
magazynu i używa ciągu SECRET_ACCESS_KEY
jako parametru klucza dostępu:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Rozszerzenie usługi Azure Storage udostępnia metodę blob_list
. Za pomocą tej metody można wyświetlić listę obiektów w usłudze Blob Storage w następującym formacie:
azure_storage.blob_list(account_name, container_name, prefix)
Poniższy przykład przedstawia wyświetlanie listy obiektów w usłudze Azure Storage przy użyciu metody z blob_list
konta magazynu o nazwie i kontenera obiektów blob o nazwie mystorageaccount
mytestbob
. Pliki w kontenerze mają ciąg employee
.
SELECT path, size, last_modified, etag FROM azure_storage.blob_list('mystorageaccount','mytestblob','employee');
Przypisywanie uprawnień do konta nieadministracyjnego w celu uzyskania dostępu do danych z usługi Azure Storage
Domyślnie tylko rola administracyjna azure_pg_admin może dodać klucz konta i uzyskać dostęp do konta magazynu na serwerze elastycznym usługi Azure Database for PostgreSQL.
Uprawnienia dostępu do danych w usłudze Azure Storage można przyznać użytkownikom elastycznym usługi Azure Database for PostgreSQL na dwa sposoby, w zależności od stopnia szczegółowości uprawnień:
Przypisz
azure_storage_admin
do użytkownika niebędącego administratorem. Ta rola jest dodawana wraz z instalacją rozszerzenia usługi Azure Storage. W poniższym przykładzie ta rola jest przyznawana użytkownikowi nieadministracyjnemu o nazwiesupport
:-- Allow adding/list/removing storage accounts GRANT azure_storage_admin TO support;
Wywołaj funkcję
account_user_add
. Poniższy przykład dodaje uprawnienia do rolisupport
na serwerze elastycznym usługi Azure Database for PostgreSQL. Jest to bardziej ograniczone uprawnienie, ponieważ zapewnia użytkownikowi dostęp tylko do konta usługi Azure Storage o nazwiemystorageaccount
.SELECT * FROM azure_storage.account_user_add('mystorageaccount', 'support');
Administracja istracyjny użytkownicy serwera elastycznego usługi Azure Database for PostgreSQL mogą uzyskać listę kont magazynu i uprawnień w danych wyjściowych account_list
funkcji. Ta funkcja przedstawia wszystkie konta z zdefiniowanymi kluczami dostępu.
SELECT * FROM azure_storage.account_list();
Gdy administrator serwera elastycznego usługi Azure Database for PostgreSQL zdecyduje, że użytkownik nie powinien już mieć dostępu, administrator może użyć account_user_remove
metody lub funkcji w celu usunięcia tego dostępu. Poniższy przykład usuwa rolę support
z dostępu do konta mystorageaccount
magazynu :
SELECT * FROM azure_storage.account_user_remove('mystorageaccount', 'support');
Następne kroki
- Jeśli nie widzisz rozszerzenia, którego chcesz użyć, daj nam znać. Zagłosuj na istniejące żądania lub utwórz nowe żądania opinii na naszym forum opinii.