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.
См. также