Загрузка данных из Object Storage в витрину YDB
Примечание
Функциональность загрузки данных из Object Storage в сервисе Data Transfer находится на стадии Preview. Чтобы получить доступ, обратитесь в техническую поддержку
Вы можете перенести данные из Object Storage в таблицу Managed Service for YDB с помощью сервиса Data Transfer. Для этого:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Необходимые платные ресурсы
-
Бакет Object Storage: использование хранилища и выполнение операций с данными (см. тарифы Object Storage).
-
База данных Managed Service for YDB (см. тарифы Managed Service for YDB). Стоимость зависит от режима использования:
- Для бессерверного режима — оплачиваются операции с данными, объем хранимых данных и резервных копий.
- Для режима с выделенными инстансами — оплачивается использование выделенных БД вычислительных ресурсов, объем хранилища и резервные копии.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Если вы выбрали режим БД Dedicated, создайте и настройте группу безопасности в сети, где находится БД.
-
Создайте сервисный аккаунт с именем
s3-ydb-accountи ролямиstorage.editorиydb.editor. Трансфер будет использовать его для доступа к бакету и базе данных. -
Создайте статический ключ доступа для сервисного аккаунта
s3-ydb-account.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации object-storage-to-ydb.tf
.В этом файле описаны:
- сервисный аккаунт, который будет использоваться для работы с бакетом и базой данных Managed Service for YDB;
- секрет Yandex Lockbox, в котором будет храниться статический ключ сервисного аккаунта для настройки эндпоинта-источника;
- бакет-источник Object Storage;
- кластер-приемник Managed Service for YDB;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
object-storage-to-ydb.tfзначения переменных:folder_id— идентификатор облачного каталога, такой же, как в настройках провайдера.bucket_name— имя бакета в соответствии с правилами именования.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Подготовьте тестовые данные
-
Подготовьте два CSV-файла с тестовыми данными:
-
demo_data1.csv:1,Anna 2,Robert 3,Umar 4,Algul 5,Viktor -
demo_data2.csv:6,Maria 7,Alex
-
-
Загрузите файл
demo_data1.csvв бакет Object Storage.
Подготовьте и активируйте трансфер
-
Создайте эндпоинт-источник типа
Object Storageсо следующими настройками:-
Тип базы данных —
Object Storage. -
Бакет — имя бакета в Object Storage.
-
Идентификатор ключа доступа AWS — открытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Секретный ключ доступа AWS — закрытая часть статического ключа сервисного аккаунта. Если вы создали инфраструктуру с помощью Terraform, скопируйте значение ключа из секрета Yandex Lockbox.
-
Эндпоинт —
https://storage.yandexcloud.net. -
Регион —
ru-central1. -
Формат данных —
CSV. -
Разделитель — знак запятой
,. -
Таблица —
table1. -
Схема результирующей таблицы — выберите
Вручнуюи укажите имена полей и тип данных:Id:Int64;Name:UTF8.
Остальные параметры оставьте по умолчанию.
-
-
Создайте эндпоинт-приемник и трансфер:
ВручнуюС помощью Terraform-
Создайте эндпоинт-приемник типа
YDBи укажите в нем параметры подключения к кластеру:-
База данных — выберите базу данных YDB из списка.
-
Идентификатор сервисного аккаунта — выберите сервисный аккаунт
s3-ydb-account.
-
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
-
Активируйте трансфер и дождитесь его перехода в статус Реплицируется.
-
Укажите в файле
object-storage-to-ydb.tfзначения параметров:source_endpoint_id— идентификатор эндпоинта для источника.transfer_enabled— значение1для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Трансфер активируется автоматически. Дождитесь его перехода в статус Реплицируется.
-
Проверьте работоспособность трансфера
Чтобы убедиться в работоспособности трансфера, проверьте работу копирования и репликации.
Проверьте работу копирования
- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что база данных Managed Service for YDB содержит таблицу
table1с тестовыми данными.
-
Выполните запрос:
SELECT * FROM table1;Пример ответа
Id | Name | __file_name | __row_index ---+----------+------------------+------------- 1 | "Anna" | "demo_data1.csv" | 1 2 | "Robert" | "demo_data1.csv" | 2 3 | "Umar" | "demo_data1.csv" | 3 4 | "Algul" | "demo_data1.csv" | 4 5 | "Viktor" | "demo_data1.csv" | 5
Проверьте работу репликации
-
Загрузите файл
demo_data2.csvв бакет Object Storage. -
Убедитесь, что данные из файла
demo_data2.csvпоявились в базе данных приемника:Консоль управленияCLI- В консоли управления
выберите каталог, в котором находится нужная база данных. - В списке сервисов выберите Managed Service for YDB.
- Выберите базу из списка.
- Перейдите на вкладку Навигация.
- Проверьте, что в таблицу
table1добавились новые данные.
-
Выполните запрос:
SELECT * FROM table1;Пример ответа
Id | Name | __file_name | __row_index ---+----------+------------------+------------- 1 | "Anna" | "demo_data1.csv" | 1 2 | "Robert" | "demo_data1.csv" | 2 3 | "Umar" | "demo_data1.csv" | 3 4 | "Algul" | "demo_data1.csv" | 4 5 | "Viktor" | "demo_data1.csv" | 5 6 | "Maria" | "demo_data2.csv" | 1 7 | "Alex" | "demo_data2.csv" | 2
- В консоли управления
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Чтобы снизить потребление ресурсов, которые вам не нужны, удалите их:
-
Удалите объекты из бакета.
-
Остальные ресурсы удалите в зависимости от способа их создания:
ВручнуюС помощью Terraform-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
-