2011-01-12 2 views
3

Я пишу свой собственный Document Management System (DMS) на Java (доступные мне не удовлетворяют мои потребности).Система управления документами - Дизайн базы данных

Документы должны быть описаны квалифицированным стандартом метаданных DublinCore. Самый простой способ сделать это, на мой взгляд, - упаковать пары ключ-значение в RDF-модели с представлением XML.

Для хранения метаданных для всех документов у меня есть две идеи (файлы документов будут храниться в файловой системе):

  1. хранить все метаданные всех документов в одного XML файл
  2. Make XML-файл для каждого документа и хранить его либо в файловой системе, либо в РСУБД (например, в базе данных базы данных H2 для Java), база данных с ключом не решит этого, потому что ключи для одного документа не уникальны.

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

Какое решение вы рекомендуете? Или есть какие-то лучшие решения?

Стефан

ответ

1

Я не знаю, как ваш анализ работает, но если вам нужен полный график в памяти для анализа, используйте вариант 1 (Храните все метаданные всех документов в одном XML-файле), потому что вы не получите никакой выгоды (но только дополнительную работу) от варианта 2 в этом сценарии.

добавил

Если эта дополнительная работа для варианта 2 не много, то я рекомендую вариант 2, поскольку он может быть более calable.

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

, поскольку я пользуюсь парсером DOM. Я буду использовать второй avariant, спасибо – Stefan

0

Я смотрел в NO SQL документ решения, как Couch DB, чтобы увидеть, если это может помочь вам.

Мне не нравится решение для файловой системы; нет никакой абстракции, чтобы помочь вам там.

0

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

1

Считаете ли вы использование MongoDB и GridFS? http://www.mongodb.org/display/DOCS/GridFS+Specification

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

+0

Я не хочу хранить файлы документов в базе данных, потому что я хочу иметь доступ к ним без какого-либо среднего продукта. – Stefan

1

BTW: даже если он не относится к вашему вопросу: посмотрите на реализацию JCR (Репозиторий контента Java), например JackRabbit. Вы можете использовать его для хранения ваших документов и, возможно, ваших метаданных.

+0

спасибо за ссылку, я не знаю эту спецификацию раньше, но она кажется очень интересной. – Stefan

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