> Re: Аналог утилиты tac для сжатого файла
> dimas
> Tue, 14 Feb 2012 00:32:02 -0800

> автор, я правильно понимаю. что текстовый файл - это некий очень большой лог,
> генерируемый в постоянном режиме некой coolprog?

Не хотел никого провоцировать, потому не давал описания задачи, но раз
возник вопрос, уточню. Это система потокового анализа, берущая из БД,
скажем, несколько гиг информации и создающая результат аналогичного
объема, который передается на дальнейшую обработку или построителю
отчетов. Обработчик написан как потоковый и памяти практически не ест
(реверс строк возникает для того, чтобы группировку делать - последняя
обработанная запись в группе становится первой, остальные после
реверса можно игнорировать, так получаем любые итоги с накоплением в
рамках модели потоковой обработки). Понятно, что при запуске уже
десятка потоков обработки никакой памяти не хватит (учитывая реверс
строк - уже два экземпляра данных получается, и т.п.). При сбросе
данных на диск, скажем, на виртуалке с 0,5 Гб памяти все отлично
обрабатывается (нет, память я не экономлю... экономить - это в 640 кБ
уместить... возможно, кстати, только бесполезно практически), но это
явно неэффективно делать без сжатия (сжатие уменьшает размер временных
файлов ~100 раз), да и о SSD дисках стоит подумать с их ограниченным
числом циклов перезаписи. Так вот, прежде чем делать очевидную вещь -
создавать связный список, в вершине которого несжатый буфер, а далее
сжатые блоки, и оперировать этой структурой, решил уточнить, неужели
нет готовых решений для задачи (была кстати, когда-то идея сделать
модуль для эскулайт с реализацией эффективного поколоночного хранения
данных, да надобности тогда не было, а оказывается, такая вещь с
функцией реверса записей может быть очень полезна).

-- 
Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Ответить