История изменений
Исправление intelfx, (текущая версия) :
Любой алгоритм, сжимать блоками по N килобайт, где N выбирается как компромисс между степенью сжатия и оверхедом по времени работы. Рядом с блоками хранить отображение номера строки в оффсет начала блока + оффсет внутри блока, распаковывать целиком блок и вытаскивать оттуда. Чем больше блок, тем лучше будет сжатие, но тем больше нерелевантных данных придётся распаковывать на каждый запрос.
Если что, все ФС с прозрачным сжатием устроены точно так же.
Алгоритмов сжатия, в которых можно было бы разжимать с произвольного места побайтово, я не знаю.
Исправление intelfx, :
Любой алгоритм, сжимать блоками по N килобайт, где N выбирается как компромисс между степенью сжатия и оверхедом по времени работы. Рядом с блоками хранить отображение номера строки в оффсет начала блока + оффсет внутри блока, распаковывать целиком блок и вытаскивать оттуда. Чем больше блок, тем лучше будет сжатие, но тем больше нерелевантных данных придётся распаковывать на каждый запрос.
Алгоритмов сжатия, в которых можно было бы разжимать с произвольного места побайтово, я не знаю.
Исходная версия intelfx, :
Любой алгоритм, сжимать блоками по N килобайт, где N выбирается как компромисс между степенью сжатия и оверхедом. Отдельно хранить индекс номера строки в оффсет начала блока + оффсет внутри блока, разжимать целиком блок и вытаскивать оттуда.
Алгоритмов сжатия, в которых можно было бы разжимать с произвольного места побайтово, я не знаю.