Если отдельные статьи слишком короткие, чтобы получить приличную степень сжатия, следующий самый простой подход - собрать пакет статей из Википедии - скажем, 12 статей за раз, или сколько угодно статей, чтобы заполнить мегабайт.
Затем сожмите каждую партию независимо.
В принципе, это дает лучшее сжатие, чем сжатие каждого изделия в отдельности, но хуже сжатие, чем сплошное сжатие всех изделий вместе.
Извлечение статьи № 12 из сжатой партии требует распаковки всей партии (а затем выбрасывания первых 11 статей), но это все же намного, намного быстрее, чем распаковка половины Википедии.
Многие программы сжатия разбивают входной поток на последовательность «блоков» и сжимают каждый блок с нуля, независимо от других блоков.
Вы также можете выбрать размер пакета, равный размеру блока - более крупные партии не получат лучшей степени сжатия, а для распаковки потребуется больше времени.
Я экспериментировал с несколькими способами, чтобы упростить процесс декодирования сжатой базы данных в середине.
Увы, до сих пор «умные» методы, которые я применил, все еще имеют более низкую степень сжатия и требуют больше операций для создания декодированного раздела, чем гораздо более простой «пакетный» подход.
Для более сложных техник, вы можете посмотреть на