3

我正在用 Java 编写自己的文档管理系统 (DMS)(可用的不能满足我的需求)。

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

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

  1. 将所有文档的所有元数据存储在一个XML文件中
  2. 为每个文档创建一个 XML 文件并将其存储在文件系统或 RDBMS(如 Java 的 H2 数据库引擎)中,键值数据库无法解决此问题,因为一个文档的键不是唯一的。

由于(许多)文档相互关联,第一种方法可能更适合分析数据,但第二种方法可能更快。

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

斯特凡

4

5 回答 5

1

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

添加

如果变体 2 的额外工作不多,那么我推荐变体 2,因为它可以更灵活。

  • 您可以通过只编写一个小的 xml 文件而不是一个巨大的文件来更新或添加文档元数据
  • 这取决于您使用的 xml 解析器,但在某些情况下,解析一些较小的 xml 文件比解析一个大文件更快(但这在很大程度上取决于数据的数量)。
于 2011-01-12T18:38:37.883 回答
1

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

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

于 2011-01-12T18:39:10.253 回答
1

顺便说一句:即使它不属于您的问题:看看 JackRabbit 之类的JCR Java 内容存储库)实现。您可以使用它来存储您的文档,也可以使用您的元数据。

于 2011-01-12T18:43:33.613 回答
0

我会研究像 Couch DB 这样的无 SQL 文档解决方案,看看它是否可以帮助您。

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

于 2011-01-12T18:36:25.023 回答
0

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

于 2011-01-12T18:36:40.810 回答