我正在使用视频服务器,我想使用数据库来保存视频文件。由于我只需要存储带有元数据的简单视频文件,因此我尝试在 Java 中使用 MongoDB,通过其GridFS机制来存储视频文件及其元数据。
但是,我需要两个主要功能,而我无法使用 MongoDB 来管理:
- 我希望能够添加到以前保存的视频中,因为保存视频可能会分块执行。我不想删除到目前为止的二进制文件,只需在项目末尾附加字节即可。
- 我希望能够在写入视频项目时读取它。“线程 A”将更新视频项目,添加越来越多的字节,而“线程 B”将从项目中读取,一旦写入/刷新,就会接收“线程 A”写入的所有字节。
我尝试编写简单的代码来做到这一点,但它失败了。似乎 MongoDB 不允许对二进制文件进行多线程访问(即使一个线程正在执行所有写入操作),我也找不到添加到二进制文件的方法 - Java GridFS API 仅提供来自已经现有的 GridFSDBFile,我无法让 OutputStream 写入它。
- 这是否可以通过 MongoDB 实现,如果可以,如何实现?
- 如果没有,您是否知道任何其他可能允许这样做的数据库(最好不要太复杂,例如完整的关系数据库)?
- 我最好使用MongoDB只保留视频文件的元数据,并手动处理文件系统中的二进制数据的读写,这样我就可以自己实现上述要求了吗?
谢谢,
铝