расширение служба хранилища Azure в База данных Azure для PostgreSQL — гибкий сервер
Область применения: гибкий сервер Базы данных Azure для PostgreSQL
Распространенный вариант использования для клиентов Майкрософт — возможность импортировать и экспортировать данные между Хранилище BLOB-объектов Azure и База данных Azure для PostgreSQL гибким экземпляром сервера. Расширение служба хранилища Azure (azure_storage
) в База данных Azure для PostgreSQL гибком сервере упрощает этот вариант использования.
Хранилище BLOB-объектов Azure
Хранилище BLOB-объектов Azure — это решение для хранения объектов в облаке. Хранилище BLOB-объектов оптимизировано для хранения больших объемов неструктурированных данных. Неструктурированные данные — это данные, которые не соответствуют определенной модели данных или определению, например текстовых или двоичных данных.
Хранилище BLOB-объектов предлагает иерархию трех типов ресурсов:
Учетная запись хранения — это административная сущность, которая содержит службы для таких элементов, как большие двоичные объекты, файлы, очереди, таблицы или диски.
При создании учетной записи хранения в Azure вы получаете уникальное пространство имен для ресурсов хранилища. Это уникальное пространство имен является частью URL-адреса. Имя учетной записи хранения должно быть уникальным для всех существующих имен учетных записей хранения в Azure.
Контейнер находится в учетной записи хранения. Контейнер похож на папку, в которой хранятся большие двоичные объекты.
Вы можете определить политики безопасности и назначить политики контейнеру. Эти политики каскадно для всех больших двоичных объектов в контейнере.
Учетная запись хранения может содержать неограниченное количество контейнеров. Каждый контейнер может содержать неограниченное количество больших двоичных объектов до максимального размера учетной записи хранения размером 500 ТБ.
После размещения большого двоичного объекта в контейнер, который находится в учетной записи хранения, можно ссылаться на большой двоичный объект с помощью URL-адреса в следующем формате:
protocol://<storage_account_name>/blob.core.windows.net/<container_name>/<blob_name>
Большой двоичный объект — это часть данных, которые находятся в контейнере.
На следующей схеме показана связь между этими ресурсами.
Основные преимущества хранения данных в виде БОЛЬШИХ двоичных объектов в Хранилище BLOB-объектов Azure
Хранилище BLOB-объектов Azure могут обеспечить следующие преимущества:
- Это масштабируемое и экономичное решение облачного хранилища. Вы можете использовать его для хранения данных любого размера и увеличения или уменьшения масштаба в зависимости от ваших потребностей.
- Он предоставляет уровни безопасности для защиты данных, таких как шифрование неактивных и передаваемых данных.
- Он взаимодействует с другими службами Azure и партнерскими приложениями. Это универсальное решение для широкого спектра вариантов использования, таких как резервное копирование и аварийное восстановление, архивация и анализ данных.
- Это экономичное решение для управления и хранения больших объемов данных в облаке, независимо от того, является ли организация небольшим бизнесом или крупным предприятием. Вы платите только за необходимое хранилище.
Импорт данных из Хранилище BLOB-объектов Azure в гибкий сервер База данных Azure для PostgreSQL
Чтобы загрузить данные из Хранилище BLOB-объектов Azure, необходимо разрешить списокazure_storage
расширения PostgreSQL. Затем вы устанавливаете расширение в базе данных с помощью CREATE EXTENSION
команды:
CREATE EXTENSION azure_storage;
При создании учетной записи хранения Azure создает два 512-разрядных ключа доступа к учетной записи хранения для этой учетной записи. Эти ключи можно использовать для авторизации доступа к данным в учетной записи хранения с помощью авторизации общего ключа.
Прежде чем импортировать данные, необходимо сопоставить учетную запись хранения с помощью account_add
метода. Укажите ключ доступа к учетной записи, определенный при создании учетной записи. Следующий пример кода сопоставляет учетную запись mystorageaccount
хранения и использует строку SECRET_ACCESS_KEY
в качестве параметра ключа доступа:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
После сопоставления хранилища можно перечислить содержимое учетной записи хранения и выбрать данные для импорта. В следующем примере предполагается, что вы создали учетную запись хранения с именем mystorageaccount
и контейнер BLOB-объектов с именем mytestblob
:
SELECT path, bytes, pg_size_pretty(bytes), content_type
FROM azure_storage.blob_list('mystorageaccount','mytestblob');
Выходные данные этой инструкции можно отфильтровать с помощью регулярного SQL WHERE
blob_list
предложения или prefix
параметра метода. Для перечисления содержимого контейнера требуется ключ учетной записи и доступа или контейнер с включенным анонимным доступом.
Наконец, можно использовать инструкцию COPY
или blob_get
функцию для импорта данных из Хранилище BLOB-объектов Azure в существующую База данных Azure для PostgreSQL гибкую таблицу сервера.
Импорт данных с помощью инструкции COPY
В следующем примере показано импорт данных из файла employee.csv , который находится в контейнере mytestblob
BLOB-объектов в той же mystorageaccount
учетной записи хранения Azure с помощью COPY
команды:
Создайте целевую таблицу, которая соответствует схеме исходного файла:
CREATE TABLE employees ( EmployeeId int PRIMARY KEY, LastName VARCHAR ( 50 ) UNIQUE NOT NULL, FirstName VARCHAR ( 50 ) NOT NULL );
Используйте инструкцию для копирования данных в целевую
COPY
таблицу. Укажите, что первая строка — заголовки.COPY employees FROM 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee.csv' WITH (FORMAT 'csv', header);
Импорт данных с помощью функции blob_get
Функция blob_get
извлекает файл из хранилища BLOB-объектов. Чтобы убедиться, что blob_get
данные можно проанализировать, можно передать значение с типом, соответствующим столбцам в файле, или явно определить столбцы в предложении FROM
.
Функцию blob_get
можно использовать в следующем формате:
azure_storage.blob_get(account_name, container_name, path)
В следующем примере показано то же действие из одного источника в тот же целевой объект с помощью blob_get
функции:
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))
Команда COPY
и blob_get
функция поддерживают следующие расширения файлов для импорта:
File format | Description |
---|---|
.csv | Формат разделенных запятыми значений, используемый PostgreSQL COPY |
.tsv | Значения, разделенные табуляции, формат PostgreSQL COPY по умолчанию |
binary | Формат Binary PostgreSQL COPY |
text | Файл, содержащий одно текстовое значение (например, большой json или XML) |
Экспорт данных из гибкого сервера База данных Azure для PostgreSQL в Хранилище BLOB-объектов Azure
Чтобы экспортировать данные из гибкого сервера База данных Azure для PostgreSQL в Хранилище BLOB-объектов Azure, необходимо разрешить список расширенийazure_storage
. Затем вы устанавливаете azure_storage
расширение PostgreSQL в базе данных с помощью CREATE EXTENSION
команды:
CREATE EXTENSION azure_storage;
При создании учетной записи хранения платформа Azure создает два 512-разрядных ключа доступа к учетной записи хранения для этой учетной записи. Эти ключи можно использовать для авторизации доступа к данным в учетной записи хранения с помощью авторизации общего ключа или маркеров подписанного URL-адреса (SAS), подписанных общим ключом.
Прежде чем импортировать данные, необходимо сопоставить учетную запись хранения с помощью account_add
метода. Укажите ключ доступа к учетной записи, определенный при создании учетной записи. Следующий пример кода сопоставляет учетную запись mystorageaccount
хранения и использует строку SECRET_ACCESS_KEY
в качестве параметра ключа доступа:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Инструкцию COPY
или blob_put
функцию можно использовать для экспорта данных из таблицы База данных Azure для PostgreSQL в Хранилище BLOB-объектов Azure. В следующем примере показано экспорт данных из таблицы сотрудников в новый файл с именем employee2.csv с помощью COPY
команды. Файл находится в контейнере mytestblob
BLOB-объектов в той же mystorageaccount
учетной записи хранения Azure.
COPY employees
TO 'https://mystorageaccount.blob.core.windows.net/mytestblob/employee2.csv'
WITH (FORMAT 'csv');
Аналогичным образом можно экспортировать данные из таблицы сотрудников с помощью blob_put
функции, что обеспечивает еще более ограниченный контроль над экспортируемыми данными. В следующем примере экспортируются только два столбца таблицы и EmployeeId
LastName
. Он пропускает FirstName
столбец.
SELECT azure_storage.blob_put('mystorageaccount', 'mytestblob', 'employee2.csv', res) FROM (SELECT EmployeeId,LastName FROM employees) res;
Команда COPY
и blob_put
функция поддерживают следующие расширения файлов для экспорта:
File format | Description |
---|---|
.csv | Формат разделенных запятыми значений, используемый PostgreSQL COPY |
.tsv | Значения, разделенные табуляции, формат PostgreSQL COPY по умолчанию |
binary | Формат Binary PostgreSQL COPY |
text | Файл, содержащий одно текстовое значение (например, большой json или XML) |
Вывод списка объектов в служба хранилища Azure
Чтобы перечислить объекты в Хранилище BLOB-объектов Azure, необходимо разрешить список расширенийazure_storage
. Затем вы устанавливаете azure_storage
расширение PostgreSQL в базе данных с помощью CREATE EXTENSION
команды:
CREATE EXTENSION azure_storage;
При создании учетной записи хранения платформа Azure создает два 512-разрядных ключа доступа к учетной записи хранения для этой учетной записи. Эти ключи можно использовать для авторизации доступа к данным в учетной записи хранения с помощью авторизации общего ключа или маркеров SAS, подписанных общим ключом.
Прежде чем импортировать данные, необходимо сопоставить учетную запись хранения с помощью account_add
метода. Укажите ключ доступа к учетной записи, определенный при создании учетной записи. Следующий пример кода сопоставляет учетную запись mystorageaccount
хранения и использует строку SECRET_ACCESS_KEY
в качестве параметра ключа доступа:
SELECT azure_storage.account_add('mystorageaccount', 'SECRET_ACCESS_KEY');
Расширение служба хранилища Azure предоставляет blob_list
метод. Этот метод можно использовать для перечисления объектов в хранилище BLOB-объектов в следующем формате:
azure_storage.blob_list(account_name, container_name, prefix)
В следующем примере показаны объекты перечисления в служба хранилища Azure с помощью blob_list
метода из учетной записи хранения с именем mystorageaccount
и контейнером mytestbob
BLOB-объектов. Файлы в контейнере имеют строку employee
.
SELECT path, size, last_modified, etag FROM azure_storage.blob_list('mystorageaccount','mytestblob','employee');
Назначение разрешений неадминистративной учетной записи для доступа к данным из служба хранилища Azure
По умолчанию только роль администратора azure_pg_admin может добавить ключ учетной записи и получить доступ к учетной записи хранения в База данных Azure для PostgreSQL гибком сервере.
Вы можете предоставить разрешения на доступ к данным в служба хранилища Azure неадминистрационным База данных Azure для PostgreSQL гибким пользователям сервера двумя способами в зависимости от детализации разрешений:
Назначьте
azure_storage_admin
неадминистраторному пользователю. Эта роль добавляется с установкой расширения служба хранилища Azure. В следующем примере эта роль предоставляетсяsupport
неадминистраторному пользователю:-- Allow adding/list/removing storage accounts GRANT azure_storage_admin TO support;
Вызовите функцию
account_user_add
. В следующем примере добавляются разрешения на рольsupport
в База данных Azure для PostgreSQL гибком сервере. Это более ограниченное разрешение, так как оно предоставляет пользователю доступ только к учетной записи хранения Azure с именемmystorageaccount
.SELECT * FROM azure_storage.account_user_add('mystorageaccount', 'support');
Администраторы База данных Azure для PostgreSQL гибкого сервера могут получить список учетных записей хранения и разрешений в выходных данных account_list
функции. Эта функция отображает все учетные записи с определенными ключами доступа.
SELECT * FROM azure_storage.account_list();
Когда администратор гибкого сервера База данных Azure для PostgreSQL решает, что у пользователя больше нет доступа, администратор может использовать account_user_remove
метод или функцию для удаления этого доступа. В следующем примере роль support
удаляется из доступа к учетной записи mystorageaccount
хранения:
SELECT * FROM azure_storage.account_user_remove('mystorageaccount', 'support');
Следующие шаги
- Если вы не видите расширение, которое вы хотите использовать, сообщите нам об этом. Вы можете проголосовать за существующие запросы или оставить свои предложения на нашем форуме отзывов.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по