Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2011 14:33:36

exvion
От:
Зарегистрирован: 2011-08-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация битовой карты

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

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

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

Где найти реализацию битовой карты на python или другом языке программирования?



Офлайн

#2 Авг. 4, 2011 16:23:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Реализация битовой карты

Какой максимальный и минимальный номер файла?
Можно файл перекладывать в другую папку или переименовывать - для признака обработанности.

Офлайн

#3 Авг. 4, 2011 17:38:44

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Реализация битовой карты

Для битового массива наколенного решения с bytearray хватит за глаза.



Офлайн

#4 Авг. 4, 2011 18:35:22

exvion
От:
Зарегистрирован: 2011-08-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация битовой карты

o7412369815963, Андрей Светлов спасибо.

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

c.execute(“”"insert into mytable values ('0',file('nomer1.txt'))



Отредактировано (Авг. 4, 2011 18:48:23)

Офлайн

#5 Авг. 4, 2011 18:46:50

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Реализация битовой карты

лучше выбрать подходящую ФС или попробовать mongoFS (или подобные)

Офлайн

#6 Авг. 4, 2011 18:51:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Реализация битовой карты

Андрей Светлов
Для битового массива наколенного решения с bytearray хватит за глаза.
тоже хотел предложить, но - вдруг номера 10-и-значные.

Офлайн

#7 Авг. 4, 2011 18:52:31

exvion
От:
Зарегистрирован: 2011-08-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация битовой карты

o7412369815963, а какая ФС будет подходящей. ext3 подойдет?

mongoFS
Вы имели ввиду mongoDB?



Офлайн

#8 Авг. 4, 2011 19:12:58

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Реализация битовой карты

exvion
o7412369815963, а какая ФС будет подходящей. ext3 подойдет?

mongoFS
Вы имели ввиду mongoDB?
почти, GridFS из MongoDB: http://www.mongodb.org/display/DOCS/GridFS

Офлайн

#9 Авг. 4, 2011 20:18:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Реализация битовой карты

exvion
Тип файлов html, размером по 6кбайт
Если вы точно знаете что файлы по 6k (или около этого). и вы их только читаете, наверное хорошее решение просто положить их в один файл и извлекать их просто подряд (при обработке писать подряд во второй файл). Из вашего поста не очень понятно зачем вам имена файлов? Для многопоточной обработки решение с одним файлом тоже подойдет.

:):)Еще одно забавное решение - пожать файлы подходящим архиватором, как показала практика - доступ гораздо быстрее чем в папке ntfs или fat32. Это конечно для организации произвольного доступа.



Отредактировано (Авг. 4, 2011 20:44:02)

Офлайн

#10 Авг. 4, 2011 21:01:12

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Реализация битовой карты

Тут можно посмотреть 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 символа имени файла = папка.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version