DumpType

class DumpType

Перечисление типов дампов для сериализации данных.

Назначение:

Определяет форматы сериализации/десериализации данных при передаче между СУБД. Каждый тип использует свои реализации ридеров и врайтеров для обработки нативных бинарных форматов разных СУБД.

Атрибуты DumpClass

Каждый элемент перечисления содержит следующие атрибуты:

name: str

Человеко-читаемое имя формата дампа.

reader: object

Класс для чтения (десериализации) данных из бинарного формата. Реализует интерфейс чтения для конкретного формата.

writer: object

Класс для записи (сериализации) данных в бинарный формат. Реализует интерфейс записи для конкретного формата.

have_compress: bool

True если формат поддерживает встроенное сжатие данных. Сжатие уменьшает объем передаваемых данных по сети.

Элементы перечисления

NATIVE = DumpClass("native", NativeReader, NativeWriter, False)

Нативный формат ClickHouse. Оптимизирован для быстрой передачи данных между экземплярами ClickHouse.

Характеристики:

  • 📝 Имя: «native»

  • 📖 Reader: NativeReader

  • 📝 Writer: NativeWriter

  • 📦 Сжатие: ❌ Не поддерживается

Использование: Бинарный формат ClickHouse.

PGCOPY = DumpClass("pgcopy", PGCopyReader, PGCopyWriter, False)

Формат PostgreSQL COPY. Стандартный бинарный формат PostgreSQL для массового копирования данных.

Характеристики:

  • 📝 Имя: «pgcopy»

  • 📖 Reader: PGCopyReader

  • 📝 Writer: PGCopyWriter

  • 📦 Сжатие: ❌ Не поддерживается

Использование: Бинарный формат PostgreSQL и Greenplum.

Примечание: Совместим со стандартной утилитой COPY PostgreSQL.

PGPACK = DumpClass("pgpack", PGPackReader, PGPackWriter, True)

Контейнер для дампа PostgreSQL с поддержкой сжатия.

Характеристики:

  • 📝 Имя: «pgpack»

  • 📖 Reader: PGPackReader

  • 📝 Writer: PGPackWriter

  • 📦 Сжатие: ✅ Поддерживается

Использование: Для эффективной передачи и хранения дампов PostgreSQL и Greenplum.

Пример использования:

from dbhose_airflow import DumpType

# Выбор формата по умолчанию
dump_type = DumpType.PGPACK

# Получение информации о формате
print(dump_type.name)            # "pgpack"
print(dump_type.have_compress)   # True
print(dump_type.reader)          # <class 'PGPackReader'>
print(dump_type.writer)          # <class 'PGPackWriter'>

# Итерация по всем типам
for dump_format in DumpType:
    print(f"{dump_format.name}: compression={dump_format.have_compress}")

# Получение по имени
pgcopy = DumpType["PGCOPY"]

См. также