2010-04-29 3 views
1

У нас есть большое количество документов и метаданных (xml-файлов), связанных с этими документами. Каков наилучший способ их организовать?Как организовать большое количество объектов

В настоящее время мы создали иерархию каталогов:

/repository/category/date(when they were loaded into our db)/document_number.pdf and .xml 

Мы используем путь в качестве уникального идентификатора документа в нашей системе. Наличие плоской структуры не кажется хорошим вариантом. Также использование пути в качестве идентификатора помогает сохранить наши данные независимо от нашей логики базы данных/приложения, поэтому мы можем легко их перезагрузить в случае сбоя, и все документы сохранят свои старые идентификаторы. Тем не менее, это вводит некоторые ограничения. например, мы не можем перемещать файлы, как только они были помещены в эту структуру, также требуется работа, чтобы поместить их таким образом. Что такое лучшая практика? Как такие сайты, как Scribd, справляются с этой проблемой?

ответ

0

Ваш подход не кажется необоснованным, но может пострадать, если вы получите более тысячи документов, добавленных за один день (файловые системы, как правило, не справляются с очень большим количеством файлов в каталоге).

Хранение документа .xml рядом с .pdf кажется немного странным - если это действительно метаданные о документе, не должно ли оно быть в базе данных (что похоже на то, что у вас уже есть), где он может быть легко запрошен и проиндексирован и т.д?

При хранении очень большого количества файлов я обычно использовал ключ файла (скажем, URL-адрес), хэшировал его, а затем хранил его в глубинах X в каталогах на основе первых символов хэша ...

Скажем, вы начали с ключа 'How to organize a large number of objects'. Md5 хэш для этого является 0a74d5fb3da8648126ec106623761ac5 так что вы можете хранить его в ...

base_dir/0/а/7/4/HTTP ___ stackoverflow.com_questions_2734454_how к организации-а-большое-число-объектов

... или что-то подобное, которое вы можете легко найти снова, учитывая ключ, с которого вы начали.

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

+0

Спасибо Matt. То, как мы в настоящее время обрабатываем большое количество документов за один день, состоит в том, чтобы разбить их на подпапки: 1/2/3/..., что является еще одной причиной, которая заставляет меня думать, что должен быть лучший способ ... – shane

Смежные вопросы