Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2012 10:47:57

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

вообщем задача такая.
есть папка в ней много папок(предположительно пара мильёнов), а в папках есть файлы от 0 до 300 примерно.
проходимся по всем папкам и считаем MD5 файлов, получаем список структур (название папки,список MD5 стрингов).

потом допустим на вход программы подаётся файл у него считается MD5 и надо найти к какой папке относится файл.

как это лучше всего реализовать?

сделать просто базу данных типа ключ название папки - содержимое список стрингов MD5?


п.с. MD5 не принципиально, просто для примера.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Отредактировано mrgloom (Авг. 17, 2012 10:48:53)

Офлайн

#2 Авг. 17, 2012 10:50:02

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

наверно лучше перенести в базы данных.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#3 Авг. 17, 2012 12:44:14

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

Если смотреть только на эту задачу, то подойдет любое key-value хранилище. Ключом логично сделать md5 файла, а содержимым будет список имен папок, в которых он находится.



Офлайн

#4 Авг. 17, 2012 13:57:15

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

mrgloom
наверно лучше перенести в базы данных.
Модерам пофиг же.

mrgloom
MD5
MD5 использовать не рекомендуется, вместо него лучше брать SHA2 и, если надо, обрезать.

Офлайн

#5 Авг. 17, 2012 14:47:03

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

odnochlen
MD5 использовать не рекомендуется, вместо него лучше брать SHA2 и, если надо, обрезать.
почему?



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#6 Авг. 17, 2012 15:58:19

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

odnochlen
MD5 использовать не рекомендуется, вместо него лучше брать SHA2 и, если надо, обрезать.
Для хеширования? С чего й то?
Последний раза в 2 медленнее MD5.
Вот еще бенч: http://tanjent.livejournal.com/756623.html
Я бы вообще в сторону CRC посмотрел, как самый распространенный, если имеющееся количество элементов не дает коллизий.

А вообще система сама хранит уникальный идентификатор каждого файла, поэтому его считать не нужно.
Например, под Вин GetFileInformationByHandle выдает нужную информацию.
Обратите внимание на get_unique_id.

Под Линукс есть свои функции.



Офлайн

#7 Авг. 17, 2012 21:06:18

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

Офлайн

#8 Авг. 17, 2012 22:11:53

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

odnochlen
ну не всё на столько плохо) в дебиане например пока MD5 (но хотят заменить), хотя из коллизий в молодости находил несколько пар одинаковых файлов (по чексуме) на двд

Офлайн

#9 Авг. 18, 2012 11:52:58

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

odnochlen
Да я в курсе. У SHA-2 тоже коллизии, вследствие чего разрабатывают SHA-3.
О другом речь, зачем тяжелый SHA2 использовать для хеширования?



Офлайн

#10 Авг. 18, 2012 14:53:58

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в базе (не загружая всё в память)

у меня файлы ихображения и я считаю так

hashlib.md5(img.tostring()).hexdigest()
это как то влияет?



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version