Объекты, переносимые трансфером
Основными объектами, которые переносятся во время трансфера, являются таблицы и схемы данных. Для некоторых типов трансферов и эндпоинтов существуют ограничения на переносимые объекты. Точный список переносимых объектов зависит от типа трансфера и задействованных эндпоинтов.
Помимо этого, для некоторых типов эндпоинтов могут переноситься пустые объекты или представления. Также есть ограничения на сложные типы данных.
Объекты, которые не переносятся трансфером
Список объектов, которые не переносятся трансфером, зависит от типа трансфера и типов задействованных эндпоинтов.
Объекты, которые не переносятся всеми или некоторыми типами трансферов
- При любом типе трансфера между эндпоинтами разных типов (например, из PostgreSQL в ClickHouse®) переносятся только непустые таблицы. Все остальные объекты, включая индексы, внешние ключи, ограничения, триггеры и другие элементы схемы, не переносятся. В таком трансфере
AUTO_INCREMENTне сохраняется, столбец копируется как обычный числовой или целочисленный. - При любом типе трансфера гранты не переносятся.
- Трансферы типа Копирование и Копирование и репликация (в статусе Копируется) между эндпоинтами разных типов переносят
VIEWкак обычные таблицы. - При трансферах типа Репликация не переносятся изменения данных в
VIEW. - При трансфере между эндпоинтами разных типов не гарантируется конвертация массивов, а также сложных и составных типов данных. Такие данные могут быть не скопированы или скопированы некорректно.
- При трансфере типа Репликация не гарантируется перенос полей, появившихся в схеме после перехода кластера в статус Реплицируется.
Объекты, которые не переносятся для определенных типов эндпоинтов
PostgreSQL
При трансфере из эндпоинта PostgreSQL в эндпоинт другого типа:
- Не переносятся объекты типа
DOMAINиlarge objects. - Не переносятся данные из
MATERIALIZED VIEW. - Не переносятся таблицы, которые содержат генерируемые столбцы, например вычисляемые или
GENERATED ... AS IDENTITY. - При трансферах типа Репликация и Копирование и репликация не переносятся таблицы без первичных ключей, если для них не указан
REPLICA IDENTITY. - Объекты типа
FOREIGN TABLEвоспринимаются какVIEWи обрабатываются по правилам для представлений. - При переносе
VIEW, содержащего вызовVOLATILEфункции, консистентность данных между этимVIEWи другими переносимыми объектами не гарантируется. - При переносе партицированных таблиц не поддерживается выборочный перенос таблиц-наследников.
При трансфере между эндпоинтами PostgreSQL:
-
Не переносятся схемы (хотя таблицы в них переносятся).
-
Не переносятся объекты из служебных схем
pg_catalogиinformation_schema. -
Если в эндпоинте-источнике или трансфере заданы таблицы для переноса, то пользовательские типы данных из них не переносятся.
-
При трансферах типа Репликация и Копирование и репликация не переносятся:
- Таблицы без первичных ключей, если для них не указан
REPLICA IDENTITY. - Таблицы и транзакции с отложенными (
DEFERRABLE) ограничениями.
- Таблицы без первичных ключей, если для них не указан
-
При трансферах типа Репликация и Копирование и репликация из PostgreSQL версии
14и ниже не реплицируются транзакции, вложенные более 1024 раз и содержащие изменения для репликации на каждом уровне вложенности. -
При трансферах типа Репликация:
- Не переносятся таблицы, появившиеся в источнике после перехода в статус Реплицируется.
- Для таблиц, партицированных декларативным методом, не переносятся партиции, созданные на источнике после перехода трансфера в статус Реплицируется.
- Для таблиц, партицированных методом наследования, не переносятся таблицы-наследники, созданные на источнике после перехода трансфера в статус Реплицируется.
- Для таблиц без первичных ключей не переносятся изменения строк (
UPDATE,DELETE), если не указанREPLICA IDENTITY.
Yandex MPP Analytics for PostgreSQL/Greenplum®
При трансфере из эндпоинта Yandex MPP Analytics for PostgreSQL или Greenplum® в эндпоинт другого типа:
- Не переносятся данные из
MATERIALIZED VIEW. - При трансферах с включенным параллельным копированием переносятся только объекты
TABLE, кроме таблиц с политикой распределенияDISTRIBUTED REPLICATED. - Объекты типа
FOREIGN TABLEилиEXTERNAL TABLEвоспринимаются какVIEWи обрабатываются по правилам для представлений. - При трансфере в PostgreSQL не переносится схема, включая пользовательские типы данных.
При трансфере из эндпоинта Greenplum® или Yandex MPP Analytics for PostgreSQL в эндпоинт Greenplum® или Yandex MPP Analytics for PostgreSQL не переносятся:
- Функции.
- Последовательности.
- Внешние таблицы и представления.
- Схемы, включая пользовательские типы данных.
ClickHouse®
При трансфере из эндпоинта ClickHouse® в эндпоинт другого типа не переносятся:
- Словари.
- Базы данных с дефисом в названии.
- Таблицы, которые содержат колонки следующих типов:
Int128Int256UInt128UInt256BoolDate32JSONArray(Date)Array(DateTime)Array(DateTime64)Map(,)
При трансфере из эндпоинта ClickHouse® в эндпоинт другого типа или из эндпоинта другого типа в эндпоинт ClickHouse® не переносятся значения дат, которые выходят за пределы поддерживаемых полями Datetime
При трансфере между эндпоинтами ClickHouse®:
- Не переносятся таблицы с неподдерживаемыми движками, например не из семейства
MergeTree, и связанные с такими представлениями таблицы. - При трансферах типа Копирование не переносятся
VIEW. - Перенос
Distributed-таблиц не гарантируется. Рекомендуется переносить только нижележащие таблицы, аDistributed-таблицы создавать на приемнике вручную. - Перенос
MATERIALIZED VIEWне гарантируется.
Yandex StoreDoc/MongoDB
При трансфере из эндпоинта Yandex StoreDoc или MongoDB в эндпоинт другого типа не переносятся:
- Коллекции
Timeseries. - Коллекции, которые содержат в поле
idданные разных типов. - Бинарные данные типов
unsigned_byte(2) Binaryиunsigned_byte(3) UUID.
При трансфере в эндпоинт Yandex StoreDoc или MongoDB из эндпоинта другого типа не переносятся индексы.
При трансфере типа Репликация между эндпоинтами Yandex StoreDoc и/или MongoDB не переносятся:
- Объекты, размер которых в коллекции превышает 16 МБ.
- Коллекции, если размер ключа превышает 5 МБ.
MySQL®
При трансфере из эндпоинта MySQL® в эндпоинт другого типа:
- Не переносятся таблицы без первичных ключей и уникальных индексов.
- Не переносятся поля типа
DECIMAL. - Для данных типа
DATETIMEне переносятся часовые пояса. Всем данным присваивается часовой пояс, указанный в настройке эндпоинта-источника Часовой пояс для подключения к базе данных. - При трансфере в ClickHouse® данные с типом
TIMEпереносятся как строки, часовые пояса не переносятся.
При трансфере в эндпоинт MySQL® из эндпоинта другого типа не переносятся:
- Имена схем.
- Таблицы с первичными ключами, которые являются строками неограниченной длины.
- Значения больше 2^31, если в таблице приемника есть тип данных со свойством
unsigned smallint. - Значения больше 2^63, если в таблице приемника есть тип данных со свойством
unsigned bigint.
OpenSearch
При трансфере в эндпоинт OpenSearch из эндпоинта другого типа не переносятся объекты с ключами, невалидными для OpenSearch. К невалидным относятся пустые ключи, а также ключи:
- состоящие из пробелов;
- состоящие из точек;
- с точкой в начале или конце;
- с точками, стоящими друг за другом;
- с точками, разделенными пробелами.
Другие типы эндпоинтов
-
Если приемник поддерживает добавление новых данных только в конец существующей структуры, то при трансфере типа Репликация не переносятся изменения существующих строк. К таким приемникам относятся OpenSearch, Elasticsearch, Apache Kafka® и S3-хранилища, в том числе Yandex Object Storage.
-
Если источником является Object Storage, не переносятся операции удаления файлов.
-
Если источником является Oracle, не переносятся
VIEWиMATERIALIZED VIEW. -
Если приемником является YTsaurus, при использовании динамических таблиц не переносятся таблицы без первичных ключей.
Особенности обработки объектов
Обработка пустых объектов
Трансферы между эндпоинтами разных типов (например, из PostgreSQL в ClickHouse®) переносят только непустые таблицы и данные в них, но не переносят остальные элементы схемы (индексы, внешние ключи и т.д.).
Автоинкрементальные поля также переносятся, но не переносится AUTO_INCREMENT.
Например, таблица
CREATE TABLE `sometable` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENTбудет перенесена как
CREATE TABLE "sometable" ( "id" int8 NOT NULL
Трансферы между эндпоинтами одного типа (например, из PostgreSQL в PostgreSQL) переносят пустые объекты как часть схемы.
Обработка представлений (VIEW)
В общем случае Yandex Data Transfer переносит VIEW (из баз, где такие объекты могут существовать) с некоторыми ограничениями:
- Трансферы типа Репликация не реплицируют изменения над данными
VIEW. - Трансферы типов Копирование и Копирование и репликация (на стадии копирования) между эндпоинтами одного типа переносят
VIEWтолько как часть схемы. Данные (строки) вVIEWне переносятся. Перенос схемы регулируется настройкой «Перенос схемы» и смежными настройками, доступными в некоторых эндпоинтах-источниках. - Трансферы типов Копирование и Копирование и репликация (на стадии копирования) между эндпоинтами разных типов переносят
VIEWкак обыкновенные таблицы (не как представления). Эта функция позволяет трансформировать и экспортировать данные во внешние базы данных и может быть особенно полезна в регулярных трансферах типа Копирование.
Отдельные источники могут налагать дополнительные ограничения на перенос VIEW и аналогичных объектов. Дополнительную информацию о работе с представлениями конкретных источников читайте в разделе Работа Yandex Data Transfer с источниками и приемниками.
Обработка сложных типов данных
В трансферах между эндпоинтами разных типов (например, из PostgreSQL в ClickHouse®) не рекомендуется передавать данные сложных типов (например, массивы чисел). Data Transfer не поддерживает преобразование таких данных, так как у каждой СУБД свои ограничения и правила для типов данных. При использовании сложных типов трансфер может работать неправильно.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc