Я ищу библиотеку / формат сжатия со следующими возможностями:
- Может сжимать мои данные, когда я их пишу.
- Позволит мне эффективно выполнять бинарный поиск по файлу.
- Позвольте мне эффективно пройти файл в обратном порядке.
Контекст: я пишу приложение на C ++, которое прослушивает входящие данные, нормализует их, а затем должно сохранить нормализованный вывод на диск. Данные уже сжимаются довольно хорошо, когда я запускаю gzip для файлов вручную. Тем не менее, объем входящих данных потенциально огромен, и я хотел бы сделать сжатие на лету. С каждой записью в файле связана временная метка, и меня может интересовать только кусок данных между временем X и временем Y, поэтому чтобы быстро найти этот фрагмент, я хотел бы иметь возможность двоичного поиска. И даже повторить в обратном порядке, если это возможно. Выделяются ли какие-либо конкретные библиотеки / форматы сжатия как особенно подходящие для моего проекта? Я обнаружил библиотеки, которые удовлетворяют # 1, но часто работают ли # 2 или # 3 без документов.