【问题标题】:Relational database for storing video data用于存储视频数据的关系数据库
【发布时间】:2018-07-18 18:10:48
【问题描述】:

最近在面试一份工作时,有人问我,如果我正在构建视频流服务,我会使用什么存储系统来存储视频数据。

我提出了一个解决方案,我将实际视频存储在分布式文件系统(例如 HDFS/S3)上,并将有关视频的元数据(HDFS 的路径、共享权限等)存储在关系数据库表中。这对我来说很有意义,并且似乎是一个干净的解决方案。然而,面试官一直问我为什么我们不能使用关系数据库来存储实际的视频本身(作为 blob 数据)。我给了他一些我认为合适的理由——视频是文件,文件系统经过优化可以更好地存储文件、文件系统缓存、读/写性能等。但他对一切的反驳是——“你可以用数据库来做到这一点好...”。

是否有明确的理由说明视频作为文件而不是 mysql 数据库更好地存储在磁盘上?

【问题讨论】:

    标签: architecture filesystems relational-database system-design


    【解决方案1】:

    为了获得更好的可扩展性,最好将视频文件存储在不同的存储设备上,以便更好地利用与数据库的连接。提供视频文件可能会长时间保持连接。通过这种方法,您可以使用单独的服务来提供实际视频。更多的优点是,当您的服务必须以新格式提供视频时,当您将所有现有视频转换为新格式时,更新数据库将花费更少的时间,因为您只需将链接添加到新格式的文件。此外,在对数据库进行分片时,您永远不会知道哪个分片的负载更大,将存储添加到单个池比在不同分片后面的不同池中添加存储更好。

    将视频保存在同一个数据库中将对系统的可维护性造成灾难性影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多