Найти - Пользователи
Полная версия: Реализация битовой карты
Начало » Python для экспертов » Реализация битовой карты
1 2
exvion
Необходимо обработать 2 милионна файлов. Каждый файл имеет номер. Номера файлов не повторяются и идут не попорядку. Для хранения информаци о том, был ли этот файл уже обработан или нет хочу использовать битовую карту в файле.

Определение:
Битовая карта - это просто битовый массив, в котором бит с номером N указывает, свободен ли блок с номером N.

Нашел в документации информацию от Bitmap Objects, но это кажется не то, что мне надо. Там рассматривается двухмерный массив для работы с изображениями BMP, а мне нужен одномерный.

Где найти реализацию битовой карты на python или другом языке программирования?
o7412369815963
Какой максимальный и минимальный номер файла?
Можно файл перекладывать в другую папку или переименовывать - для признака обработанности.
Андрей Светлов
Для битового массива наколенного решения с bytearray хватит за глаза.
exvion
o7412369815963, Андрей Светлов спасибо.

Кажется останавлюсь на варианте с папками. Только меня пугает необходимость хранение 2 миллионов файлов в одной папке. Склоняюсь к мысли - затолкать все файлы в базу данных sqlite3. Тип файлов html, размером по 6кбайт. Как поместить файл в базу данных? Какой тип поля выбрать? Как составить запрос?

c.execute(“”"insert into mytable values ('0',file('nomer1.txt'))
o7412369815963
лучше выбрать подходящую ФС или попробовать mongoFS (или подобные)
o7412369815963
Андрей Светлов
Для битового массива наколенного решения с bytearray хватит за глаза.
тоже хотел предложить, но - вдруг номера 10-и-значные.
exvion
o7412369815963, а какая ФС будет подходящей. ext3 подойдет?

mongoFS
Вы имели ввиду mongoDB?
o7412369815963
exvion
o7412369815963, а какая ФС будет подходящей. ext3 подойдет?

mongoFS
Вы имели ввиду mongoDB?
почти, GridFS из MongoDB: http://www.mongodb.org/display/DOCS/GridFS
doza_and
exvion
Тип файлов html, размером по 6кбайт
Если вы точно знаете что файлы по 6k (или около этого). и вы их только читаете, наверное хорошее решение просто положить их в один файл и извлекать их просто подряд (при обработке писать подряд во второй файл). Из вашего поста не очень понятно зачем вам имена файлов? Для многопоточной обработки решение с одним файлом тоже подойдет.

:):)Еще одно забавное решение - пожать файлы подходящим архиватором, как показала практика - доступ гораздо быстрее чем в папке ntfs или fat32. Это конечно для организации произвольного доступа.
o7412369815963
Тут можно посмотреть http://stackoverflow.com/questions/tagged/filesystems+performance?page=3&sort=votes&pagesize=15 по производительность, тут http://www.phoronix.com/scan.php?page=article&item=ext4_btrfs_nilfs2&num=7 кое какие тесты.
Ещё рекомендуют раскидывать файлы по папкам, например первые 2 символа имени файла = папка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB