CompressionMethod

class CompressionMethod

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

Наследуется от Enum.

Добавлено в версии 0.1.0.

Назначение:

Определяет алгоритмы сжатия, используемые при передаче данных между СУБД. Каждый метод имеет свой числовой код (hex) и строковое представление. Используется совместно с форматом PGPACK для оптимизации передачи данных.

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

NONE = 0x02

Отсутствие сжатия. Данные передаются в исходном виде.

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

  • 🔢 Код: 0x02 (hex)

  • 📝 Метод: «none»

  • 📦 Сжатие: ❌ Нет

  • ⚡️ Скорость: Мгновенная

  • 💾 Эффективность: 0%

Использование: Когда сжатие не требуется или нежелательно (например, при локальной передаче или для уже сжатых данных).

LZ4 = 0x82

Алгоритм LZ4. Быстрый алгоритм сжатия с низкой задержкой.

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

  • 🔢 Код: 0x82 (hex)

  • 📝 Метод: «lz4»

  • 📦 Сжатие: ✅ Да

  • ⚡️ Скорость: Очень высокая

  • 💾 Эффективность: 2-3x (умеренная)

  • 🎯 Лучше всего: Для сценариев реального времени

Использование: Когда важна скорость сжатия/распаковки больше, чем степень сжатия.

ZSTD = 0x90

Алгоритм Zstandard (ZSTD). Современный алгоритм с хорошим балансом скорости и степени сжатия.

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

  • 🔢 Код: 0x90 (hex)

  • 📝 Метод: «zstd»

  • 📦 Сжатие: ✅ Да

  • ⚡️ Скорость: Высокая

  • 💾 Эффективность: 3-5x (высокая)

  • 🎯 Лучше всего: Для общего использования

Использование: Рекомендуемый метод по умолчанию для большинства сценариев передачи данных по сети.

Свойства

method: str

Возвращает имя метода в нижнем регистре.

>>> CompressionMethod.LZ4.method
'lz4'
>>> CompressionMethod.ZSTD.method
'zstd'

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

from dbhose_airflow import CompressionMethod, DumpType

# Базовое использование
compression = CompressionMethod.ZSTD

print(compression.value)   # 0x90 (144 в десятичной)
print(compression.name)    # "ZSTD"
print(compression.method)  # "zstd"

# Преобразование из значения
method = CompressionMethod(0x82)  # LZ4

# Итерация по всем методам
for comp_method in CompressionMethod:
    print(f"{comp_method.name}: code=0x{comp_method.value:02x}, method={comp_method.method}")

# Получение по имени
zstd = CompressionMethod["ZSTD"]

Предупреждение

Использование сжатия увеличивает нагрузку на CPU. На слабых серверах или при высокой частоте передачи данных рекомендуется использовать LZ4 или NONE.