Загрузка данных из Object Storage в витрину YDB
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
Вы можете перенести данные из Object Storage в таблицу Managed Service for YDB с помощью сервиса Data Transfer. Для этого:
- Подготовьте тестовые данные.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных 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.kz
. -
Регион —
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-манифестах, будут удалены.
-
-