文件管理系统 - 数据库设计

时间:2011-01-12 18:33:58

标签: java database-design document-management

我在Java中编写自己的Document Management System (DMS)(可用的那些不能满足我的需求)。

文件应由合格的DublinCore元数据标准描述。在我看来,最简单的方法是将键值对打包在带有XML表示的RDF模型中。

要存储所有文档的元数据,我有两个想法(文档文件将存储在文件系统中):

  1. 将所有文档的所有元数据存储在 XML文件
  2. 每个文档创建一个XML文件,并将其存储在文件系统或RDBMS(如用于Java的H2数据库引擎)中,键值数据库无法解决此问题,因为一个文档的键不是唯一的。
  3. 由于(许多)文档之间相互关联,第一种方法可能更适合分析数据,但第二种方法可能更快。

    您会推荐哪种解决方案?或者有更好的解决方案吗?

    的Stefan

5 个答案:

答案 0 :(得分:1)

我不知道您的分析是如何工作的,但是如果您需要内存中的完整图表来进行分析,那么请使用variante 1(将所有文档的所有元数据存储在单个XML文件中),因为您将无法获得收益(但只有额外的工作)来自这个场景中的variante。

<强>加入

如果变体2的这项额外工作不多,那么我推荐变体2,因为它可以更加强制。

  • 您可以通过仅编写一个小的xml文件而不是一个巨大的文件
  • 来更新或添加文档元数据
  • 它取决于您使用的xml解析器,但在某些情况下,解析一些较小的xml文件比一个较大的xml文件更快(但这很大程度上取决于数据的ammout)。

答案 1 :(得分:1)

您是否考虑过使用MongoDB和GridFS? http://www.mongodb.org/display/DOCS/GridFS+Specification

您可以将文档直接存储在MongoDB中作为二进制文件,甚至可以以您想要的任何格式存储该特定文件的相关元数据。即使它们具有相同的名称,它也能够存储文档,并且它将生成它自己的唯一ID。

答案 2 :(得分:1)

BTW:即使它不属于您的问题:查看JCR(Java内容存储库)实现,如JackRabbit。您可以使用它来存储文档,也可以使用元数据。

答案 3 :(得分:0)

我会查看像Couch DB这样的NO SQL文档解决方案,看看它是否可以帮到你。

我不喜欢文件系统解决方案;没有任何抽象可以帮助你。

答案 4 :(得分:0)

如果您总是访问所有文档,那么您的方法都不会慢于另一个。但我会推荐第二种方法。在分析数据时,您需要阅读所有文档,因此如果它们位于不同的文件或一个文件中没有区别......