用于存储视频数据的关系型数据库

3
最近面试时,我被问到如果我要构建一个视频流服务,我会使用什么存储系统来存储视频数据。
我的解决方案是将实际视频存储在分布式文件系统(例如HDFS/S3)中,并将有关视频的元数据(HDFS路径、共享权限等)存储在关系数据库表中。这对我来说很合理,看起来是一个干净的解决方案。然而,面试官一直在追问为什么不能使用关系型数据库来存储实际视频本身(如blob数据)。我给出了一些我认为合适的理由 - 视频是文件,文件系统优化了更好地存储文件,文件系统缓存、读写性能等。但他反驳每一个理由:“你也可以用数据库做到...”。
是否有明确的原因,为什么视频作为文件存储在磁盘上比存储在mysql数据库中更好呢?
1个回答

3
为了实现更好的可扩展性,最好将视频文件存储在不同的存储设备中,以更好地利用与数据库的连接。服务视频文件可能会持续很长时间的连接。采用这种方法,您可以拥有单独的服务来提供实际的视频。更多的优点是,当您的服务必须以新格式提供视频时,当您将所有现有视频转换为新格式时,更新数据库所需的时间将更少,因为您只需要添加指向新格式文件的链接。此外,在分片数据库时,您永远不会知道哪个分片负载更重,最好将存储添加到单个池中,而不是将存储添加到不同分片的后面的不同池中。
将视频保留在相同的数据库中对于系统的可维护性来说是灾难性的。

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