LZJB
LZJB — алгоритм сжатия данных без потерь, изобретённый Джефом Бонвиком[англ.] в 1998 году для сжатия аварийных дампов программ и данных в файловой системе ZFS. Основан на методе сжатия с использованием словаря[1]. Этот алгоритм включает множество исправлений к алгоритму LZRW1, который в свою очередь является вариантом LZRW[англ.], являющимся членом семейства алгоритмов сжатия Lempel-Ziv. Этот алгоритм нацелен на увеличение скорости сжатия[2][3].
В 2012—2013 годах в ZFS рассматривалась замена LZJB на байт-ориентированный LZ4, как более быстрый метод с немного лучшим сжатием[4][3].
Сжатый поток в LZJB является байтовым. Для разметки потока используется управляющий байт, описывающий типы следующих 8 последовательностей. Каждый бит управляющего байта определяет тип одного элемента[5]. Бит со значением 0 соответствует литеральному байту: один байт сжатого потока копируется в выходной поток. Бит со значением 1 означает ссылку в словарь («совпадение»). Два следующих за ним байта содержат 6-битное поле длины и 10-битное поле смещения (LLLLLLdd dddddddd). Биты длины декодируются в длину от 3 до 66 байтов (длина равна L+3), затем из выходного буфера выбирается строка, отстоящая на «смещение» (d) байтов назад от текущей позиции.
Примечания
- ↑ M. A. Basir, M. H. Yousaf. Transparent Compression Scheme for Linux File System (англ.) // The Nucleus. — 2012. — Vol. 49, no. 2. — P. 133. Архивировано 12 февраля 2017 года.
- ↑ Y. Rathore, M. Ahirwar, R. Pandey. A Brief Study of Data Compression Algorithms (англ.) // Journal of Computer Science IJCSIS. — 2013. — October (vol. 11, no. 10). — P. 90. Архивировано 14 декабря 2018 года.
- ↑ 3,0 3,1 Архивированная копия . Дата обращения: 17 октября 2018. Архивировано 17 октября 2018 года.
- ↑ LZ4 Compression - illumos - illumos wiki (недоступная ссылка). Дата обращения: 17 октября 2018. Архивировано 9 октября 2018 года.
- ↑ LZJB decoder Архивная копия от 17 октября 2018 на Wayback Machine / Wikibooks
Ссылки
- «compress» source code
- LZJB source code / OpenSolaris, Illumos
- LZJB python binding
- Javascript port of the LZJB algorithm
- lzjb в ZFS on Linux
- LZJB decoder / Wikibooks