Как организовать большое количество объектов - PullRequest
1 голос
/ 29 апреля 2010

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

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

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

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

1 Ответ

0 голосов
/ 29 апреля 2010

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

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

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

Скажем, вы начали с клавиши ' Как организовать большое количество объектов '. Хэш md5 для этого равен 0a74d5fb3da8648126ec106623761ac5, так что вы можете сохранить его в ...

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...