如何实现一个简单的文档管理系统?

6
我打算构建一个简单的文档管理系统,最好基于Java平台。这方面有什么最佳实践吗?要求如下:
  1. 能够上传文档
  2. 能够为文档打标签
  3. 对文档进行版本控制
  4. 能够对文档进行评论
目前我正在考虑几个选项。第一种选择是在SVN或CVS之上构建一个简单的API,并使用DB后端来跟踪标签、上传者、评论等。
另一种选择是使用文件系统。将文档版本作为副本保存在版本文件夹中,并使用文件名进行操作。
或者,如果有一个开放的非GPL文档管理系统,我们可以根据需要自定义它,并将其打包到我们的应用程序中。有没有人有构建这样东西的经验?

2
关于Apache Jackrabbit有什么想法吗? - Ritesh M Nayak
3个回答

2
您可以查看Java内容存储库API以及若干实现(其中一些是免费的)。点击此处

我们正在考虑使用JackRabbit来实现这个目的。您能否推荐其他开源但可以与商业解决方案捆绑的工具? - Ritesh M Nayak
1
对于商业打包,最好使用Apache许可证,这样您就可以查看使用Jackrabbit(例如Hippo Repository)的项目。 - renick

1

看看市面上的许多文档导向数据库系统。我不能谈论MongoDB或其他任何系统,但我使用Couchdb的经验非常棒。

http://couchdb.apache.org/

最棒的部分是你可以通过REST协议与它进行通信。

我能否实际存储文件,比如Word文档、PDF、文本文件等等?这难道不仅是一个面向文档的数据库吗? - Ritesh M Nayak
你可以在其中存储任何东西。然后,数据库充当你需要的元数据。 - WeNeedAnswers
我阅读了这篇文章。CouchDB作为面向文档的数据存储功能良好。在couch术语中,文档是一个带有版本信息的结构化JSON存储。我所说的是文件存储。像PDF、PPT、Word文档等无法进行JSON处理和存储的文件。 - Ritesh M Nayak
是的,您可以将这些文档存储在CouchDB中。它们作为二进制文件与其他JSON元素一起作为附件存储。 - WeNeedAnswers
文档以二进制格式存储在字符串格式的JSON旁边,但真正巧妙的地方在于实际的二进制数据存储在JSON结构中,这意味着您可以获得复制、REST访问和基于B树的快速查询。 - WeNeedAnswers
我想要补充的一点是,他们所说的版本控制与我们在编码中所说的版本控制没有任何关系。它是为了解决CRUD问题而不实际覆盖数据。这非常聪明。我认为在couchdb中创建一个版本应用程序并不太困难,只需创建一个带有附件的新Json结构,并更改Json元数据以反映自上一个版本以来文档中发生的变化。您可以使用一些嵌入式差异工具进行增量比较,但我在处理pdf和word文档时的经验并不好。 - WeNeedAnswers

0

最好的方法是重复利用他人的努力。这个特定的轮子已经被发明了很多次。

谁会使用它以及出于什么目的?


将是更大协作堆栈的一部分。它将作为知识管理平台。 - Ritesh M Nayak
考虑过使用维基百科吗? - Thorbjørn Ravn Andersen
好的,我们已经有一个维基了。这是为了解决遗留文档存储需求。 - Ritesh M Nayak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接