1

我们使用 MongoDB 作为应用程序的中间存储,允许用户上传下载视频文件。我们正在使用 Java 应用程序中的 GridFS API,因为这种情况非常方便(我们发现它比将文件存储在关系数据库的表中更合适、更快和更可靠)。

一旦从数据库中处理了视频(并存储到物理文件中),我们就可以删除它们,但我们遇到的问题是新空间不仅被重新分配,而且在没有任何 util 数据的情况下被“使用”。我们已尝试修复数据库,如Auto compact the deleted space in mongodb?但这使数据库关闭了几天!,这并不理想,因为它需要 24/7 全天候运行。(我们最近在数据库没有可用空间时遇到了这个问题)。

我对这个主题不是很了解,因此想就您知道/使用的有效解决方案获得意见:允许以块为单位进行存储,并且在不需要块/块时轻松重新分配内存。一些选项是:

1)有两个Mongo DB:不时将数据从一个db导出和导入(除了GridFS使用的包含视频的表)到另一个。可以删除第一个数据库并再次对空间进行碎片整理。如果需要经常执行,这似乎有点复杂而且不好,因为我们没有太多的数据库总空间。

2)将它们存储在关系数据库中(对于没有关系的表,这些特殊特性似乎并不理想,但如果其他解决方案不适用,则可以使用)

3) ...

如果它提供服务,应用程序将部署在 J2EE 基础架构中。

谢谢。

4

0 回答 0