exvion
Авг. 4, 2011 14:33:36
Необходимо обработать 2 милионна файлов. Каждый файл имеет номер. Номера файлов не повторяются и идут не попорядку. Для хранения информаци о том, был ли этот файл уже обработан или нет хочу использовать битовую карту в файле.
Определение:
Битовая карта - это просто битовый массив, в котором бит с номером N указывает, свободен ли блок с номером N.
Нашел в документации информацию от Bitmap Objects, но это кажется не то, что мне надо. Там рассматривается двухмерный массив для работы с изображениями BMP, а мне нужен одномерный.
Где найти реализацию битовой карты на python или другом языке программирования?
o7412369815963
Авг. 4, 2011 16:23:55
Какой максимальный и минимальный номер файла?
Можно файл перекладывать в другую папку или переименовывать - для признака обработанности.
Андрей Светлов
Авг. 4, 2011 17:38:44
Для битового массива наколенного решения с bytearray хватит за глаза.
exvion
Авг. 4, 2011 18:35:22
o7412369815963, Андрей Светлов спасибо.
Кажется останавлюсь на варианте с папками. Только меня пугает необходимость хранение 2 миллионов файлов в одной папке. Склоняюсь к мысли - затолкать все файлы в базу данных sqlite3. Тип файлов html, размером по 6кбайт. Как поместить файл в базу данных? Какой тип поля выбрать? Как составить запрос?
c.execute(“”"insert into mytable values ('0',file('nomer1.txt'))
o7412369815963
Авг. 4, 2011 18:46:50
лучше выбрать подходящую ФС или попробовать mongoFS (или подобные)
o7412369815963
Авг. 4, 2011 18:51:39
Андрей Светлов
Для битового массива наколенного решения с bytearray хватит за глаза.
тоже хотел предложить, но - вдруг номера 10-и-значные.
exvion
Авг. 4, 2011 18:52:31
o7412369815963, а какая ФС будет подходящей. ext3 подойдет?
mongoFS
Вы имели ввиду mongoDB?
o7412369815963
Авг. 4, 2011 19:12:58
exvion
o7412369815963, а какая ФС будет подходящей. ext3 подойдет?
mongoFS
Вы имели ввиду mongoDB?
почти, GridFS из MongoDB:
http://www.mongodb.org/display/DOCS/GridFS
doza_and
Авг. 4, 2011 20:18:11
exvion
Тип файлов html, размером по 6кбайт
Если вы точно знаете что файлы по 6k (или около этого). и вы их только читаете, наверное хорошее решение просто положить их в один файл и извлекать их просто подряд (при обработке писать подряд во второй файл). Из вашего поста не очень понятно зачем вам имена файлов? Для многопоточной обработки решение с одним файлом тоже подойдет.
:):)Еще одно забавное решение - пожать файлы подходящим архиватором, как показала практика - доступ гораздо быстрее чем в папке ntfs или fat32. Это конечно для организации произвольного доступа.
o7412369815963
Авг. 4, 2011 21:01:12