Файловая структура выгрузки
Описанная ниже файловая структура применяется для выгрузки как в файловую систему, так и в S3-совместимое объектное хранилище. При работе с S3 в ключ объекта записывается путь к файлу, а директория выгрузки является префиксом ключа.
Директории
Каждой директории в базе данных соответствует директория в файловой структуре. Иерархия директорий в файловой структуре соответствует иерархии директорий в базе данных. Если в некоторой директории базы данных нет никаких объектов (ни таблиц, ни поддиректорий), то в файловой структуре в такой директории присутствует один файл нулевого размера с именем empty_dir
.
Таблицы
Каждой таблице в базе данных также соответствует одноименная директория в иерархии директорий файловой структуры, в которой находятся:
- Файл
scheme.pb
, содержащий информацию о структуре таблицы и её параметрах в формате text protobuf - Один или несколько файлов
data_XX.csv
, содержащих данные таблицы в форматеcsv
, гдеXX
- порядковый номер файла. Выгрузка начинается с файлаdata_00.csv
, каждый следующий файл создается при превышении размера текущего файла в 100MB.
Файлы с данными
Формат файлов с данными - .csv
, одна строка соответствует одной записи в таблице, без строки с заголовками колонок. Для строк применяется представление в urlencoded формате. Например, строка файла для таблицы с колонками uint64 и utf8, содержащая число 1 и строку "Привет" соответственно, выглядит таким образом:
1,"%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82"
Пример
При выгрузке таблиц, созданных в разделе Быстрый старт с YDB Начала работы, будет создана следующая файловая структура:
├── episodes
│ ├── data_00.csv
│ └── scheme.pb
├── seasons
│ ├── data_00.csv
│ └── scheme.pb
└── series
├── data_00.csv
└── scheme.pb
Содержимое файла series/scheme.pb
:
columns {
name: "series_id"
type {
optional_type {
item {
type_id: UINT64
}
}
}
}
columns {
name: "title"
type {
optional_type {
item {
type_id: UTF8
}
}
}
}
columns {
name: "series_info"
type {
optional_type {
item {
type_id: UTF8
}
}
}
}
columns {
name: "release_date"
type {
optional_type {
item {
type_id: UINT64
}
}
}
}
primary_key: "series_id"
storage_settings {
store_external_blobs: DISABLED
}
column_families {
name: "default"
compression: COMPRESSION_NONE
}