13.02.12 23:01, Alexey Pechnikov написав(ла):
14 февраля 2012 г. 0:01 пользователь Alexander Galanin
<a...@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) в сумме будет.
--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/jhgihm$rcs$1...@dough.gmane.org