[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Аналог утилиты tac для сжатого файла



13.02.12 23:01, Alexey Pechnikov написав(ла):
14 февраля 2012 г. 0:01 пользователь Alexander Galanin
<al@galanin.nnov.ru>  написал:
Раз уж допустимо менять формат входных данных, то почему бы не хранить
информацию в виде россыпи из гзипнутых файлов по N строк?
Чтобы за просто так "порвать" диск? Очень сильно думаю, что в любом
скриптовом языке fsync зовется после записи каждого файла... так что
никак не вариант. А вообще хватило бы и двух файлов - с блоками и со
смещениями блоков, но это некрасиво.

Чем же некрасиво? Вполне по делу — данные и индекс. Легко реализовать даже на шелле.

tac index | while read range; do cut -b $range data | gunzip | tac; done

Пришло в голову, что zip архив позволяет добавлять файлы к архиву, и
утилитка для этого дела есть, любезно написанная когда-то Anton
Kovalenko:
| zipput archive.zip file-name
Интересно, какая производительность такого решения, если туда
поблочно/построчно данные пихать, может, и сойдет.

Если добавление O(1), то извлечение O(N). Без индекса в любом случае O(N^2) в сумме будет.


Reply to: