我们使用 MongoDB 存储转换前后的视频数据。一个文件的编码结果是六个或更多较小的文件(几个质量等级和不同的格式)。输入和输出文件共享相同的唯一文件 ID。
问题是哪种方法在性能和可扩展性方面更好:将所有输出文件存储在一个巨大的 gridFS 集合中,其复合键包含原始文件 id、质量等级和格式类型,还是为每个质量/格式对单独收集?
对我来说,这两种方法都有自己的优点和缺点,即
- 使用一个大的结果集合在读取时使用较少的配置,但需要更复杂的查询来查找文件;
- 使用多个生成的集合涉及更简单和更快的查询,但需要额外的配置来选择此查询应针对哪个集合。
在我看来,这更像是个人选择的问题……但是可扩展性或性能呢?以前有没有人遇到过这样的解决方案?也许有人可以建议?
考虑到大量大文件,从战略角度来看,哪种方法更好?未来哪种方法更容易扩展和分片?从长远来看,也许会有性能损失?