我用Java编写自己的Document Management System (DMS)(可用的那些不能满足我的需求)。
这些文件应由合格的DublinCore元数据标准描述。在我看来,最简单的方法是将键值对打包在带有XML表示的RDF模型中。
要存储所有文档的元数据,我有两个想法(文档文件将存储在文件系统中):
由于(许多)文档彼此链接,第一种方法可能更好地分析数据,但第二种方法可能更快。
你会推荐哪种解决方案?或者有更好的解决方案吗?
斯特凡
我不知道你的分析是如何工作的,但是如果你需要内存中的完整图形来进行分析,那么使用variante 1(将所有文档的所有元数据存储在一个XML文件中),因为你将无法获得收益(但仅限于额外的工作)来自这个场景中的variante 2。
添加
如果变体2的额外工作量不多,那么我推荐变体2,因为它可以更具可扩展性。
你考虑过使用MongoDB和GridFS吗? http://www.mongodb.org/display/DOCS/GridFS+Specification
您可以将文档直接存储在MongoDB中作为二进制文件,甚至可以以您想要的任何格式存储该特定文件的相关元数据。即使它们具有相同的名称,它也能够存储文档,并且它将生成它自己的唯一ID。
顺便说一句:即使它不属于你的问题:看看像JCR这样的JackRabbit(Java Content Repository)实现。您可以使用它来存储文档,也可以使用元数据。
我会查看像Couch DB这样的NO SQL文档解决方案,看看它是否可以帮到你。
我不喜欢文件系统解决方案;没有任何抽象可以帮助你。
如果您总是访问所有文档,那么您的方法都不会慢于另一个。但我会推荐第二种方法。在分析数据时,您需要阅读所有文档,因此如果它们位于不同的文件或一个文件中则没有区别......