【问题标题】:How to store audio files in server (during hosting)如何将音频文件存储在服务器中(托管期间)
【发布时间】:2011-07-05 18:57:50
【问题描述】:

我正在考虑构建一个应用程序来提供音频内容。 我得到的第一个问题是如何存储它。出现的两个明显的解决方案是:

  1. 在数据库中转储为 BLOB
  2. 在文件系统中转储,并在数据库中存储路径

有一个类似的问题here 并敦促将答案存储在文件系统中。我可以想到存储在文件中的至少一个缺点,即我失去了数据库的所有备份、恢复和其他令人敬畏的功能。

我还想知道这两种解决方案在可扩展性方面的表现如何。

有人知道 flickr 或 youtube 是怎么做的吗?

或者有没有人有更多的创意(可扩展的:))想法?

【问题讨论】:

    标签: java database audio filesystems store


    【解决方案1】:

    我肯定会选择文件系统。存储和交付(大)文件正是它的目的。

    【讨论】:

      【解决方案2】:

      在文件系统中存储文件将允许使用内容交付网络。外包存储可能会带来几个benefits

      【讨论】:

      • 使用 CDN 非常容易,即使您将文件存储在数据库中。例如,Akamai 将充当代理,只关心您的内容是如何通过 HTTP 交付的,而不是它如何存储在您的服务器上。
      【解决方案3】:

      如果这些数据很重要,您的文件系统应该设置备份和恢复程序。 (应用程序的其余部分已备份,对吗?)。因此,您不应仅将数据库用于备份和恢复功能。

      将文件存储在数据库之外允许您将数据库和文件服务器分开,这将是可扩展性方面的一个优势。

      【讨论】:

        【解决方案4】:

        我认为这两种方式都是可行的。但是备份问题我肯定在那里。如果设计正确,这两种解决方案都是可扩展的。但是大文件在文件系统中可能更好。

        问候, 莫腾

        【讨论】:

          【解决方案5】:

          文件系统的备份和恢复比正确和一致的数据库备份更容易实现。此外,如果您丢失了磁盘上的文件,它只是一个文件。如果您丢失了大表的一部分,则会丢失该表中包含或引用的所有文件(因为该表变得不可读)。

          当然,对于小型数据库,你可以关闭DBMS并快速复制所有DB文件,以上所有方法都不适用,但这种情况几乎与在数据库上有数据文件一样磁盘。

          【讨论】:

          • 我不同意这一点。有很多好的数据库备份解决方案。而且,如果您的部分数据在文件系统中,部分在数据库中,则很难制定一致的备份策略。
          【解决方案6】:

          这是一个经典的问题。还有一个经典的论点,两种解决方案都有优点。两种解决方案都可以实现可扩展性。如果您增长到所有媒体都无法在单个服务器上容纳的大小,分布式数据库通常比分布式文件系统更容易处理(但即使这样也有争议)。想想MongoDB 或其他 NoSQL 可扩展数据库。

          归结为您需要哪些功能。在文件系统上实现事务性非常困难,因此如果您担心,您应该使用数据库。

          【讨论】:

            猜你喜欢
            • 2012-08-27
            • 1970-01-01
            • 2019-08-07
            • 1970-01-01
            • 1970-01-01
            • 2022-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多