我打算开发文件存储系统。主要是我会存储文本文档。我阅读了许多问题和答案,并获得了一些关于文件管理系统的信息,我可以在这些信息上开发自己的。
- Alfresco 使用文件系统和数据库对 FS 的引用,Apache Jackrabbit 使用 fs||db 和 Modeshape 使用 fs||db||nosql db(cassandra,mongo)
- Blob 比 FS 慢,尤其是在处理大文件 (>1MB) 时,但 Blob 更可靠,并提供开箱即用的备份、迁移和一致性支持。由于我不想存储许多大文件,fs 和 blob 之间的性能差异变得模糊。
- 我决定不将 blob 存储在关系数据库中,而是存储在 mongo db 中,因为
- mongodb 底层有 GridFS,它提供二进制数据的分块处理,服务器之间的复制;
- mongodb 适合存储在我的情况下是 docid/blob 的键/值;
- AFAIK,facebook 使用 mongo db 存储图像和媒体(但它们将许多文件合并到一个 blob)
- 许多基于 Jacrabbit 的 CMS 系统,如 Magnolia、Hippo CMS 和 LogocalDOC,它们可能只提供 FS||DB 并且与我不相关,因为我想要 mongodb。Alfresco 对我的小需求来说太麻烦了,而且也不支持 nosql DB,我决定选择 ModeShape。
问题:使用 Modeshape 而不是简单地创建自己的小型 Web 应用程序并直接写入 mongodb 并获得 GridFS 的好处的确切好处是什么?
我唯一的答案是 Modeshape 还附带了用于索引搜索的捆绑 Lucene 引擎。我不确定文档的版本——它是专门用 Modeshape 编写的,还是我可以简单地依靠 mongodb 来处理这个任务?modeshape 是否提供额外的机制来提供数据的完整性和可靠的存储,或者它只是依赖于底层数据库?
我还想在 JBOSS Keycloak 下使用文件存储系统作为 REST 服务,但不确定是否可以将 Modeshape 放在 Keycloak 下。所以,我的问题是我应该开发自己的应用程序从而获得灵活的开发,将它与 mongoDB 集成,将它放在 Keycloak 和其他自定义愿望下,还是应该使用 Modeshape 并获得一些优势?那是什么优势?它真的会减少我这边的代码量吗?mongoDB 是否足以开发具有备份、版本控制、可靠存储 UTF-8 文档的简单文件存储系统?