> Re: Аналог утилиты tac для сжатого файла > dimas > Tue, 14 Feb 2012 00:32:02 -0800
> автор, я правильно понимаю. что текстовый файл - это некий очень большой лог, > генерируемый в постоянном режиме некой coolprog? Не хотел никого провоцировать, потому не давал описания задачи, но раз возник вопрос, уточню. Это система потокового анализа, берущая из БД, скажем, несколько гиг информации и создающая результат аналогичного объема, который передается на дальнейшую обработку или построителю отчетов. Обработчик написан как потоковый и памяти практически не ест (реверс строк возникает для того, чтобы группировку делать - последняя обработанная запись в группе становится первой, остальные после реверса можно игнорировать, так получаем любые итоги с накоплением в рамках модели потоковой обработки). Понятно, что при запуске уже десятка потоков обработки никакой памяти не хватит (учитывая реверс строк - уже два экземпляра данных получается, и т.п.). При сбросе данных на диск, скажем, на виртуалке с 0,5 Гб памяти все отлично обрабатывается (нет, память я не экономлю... экономить - это в 640 кБ уместить... возможно, кстати, только бесполезно практически), но это явно неэффективно делать без сжатия (сжатие уменьшает размер временных файлов ~100 раз), да и о SSD дисках стоит подумать с их ограниченным числом циклов перезаписи. Так вот, прежде чем делать очевидную вещь - создавать связный список, в вершине которого несжатый буфер, а далее сжатые блоки, и оперировать этой структурой, решил уточнить, неужели нет готовых решений для задачи (была кстати, когда-то идея сделать модуль для эскулайт с реализацией эффективного поколоночного хранения данных, да надобности тогда не было, а оказывается, такая вещь с функцией реверса записей может быть очень полезна). -- Best regards, Alexey Pechnikov. http://pechnikov.tel/