哪个数据库和编码方案适用于音频数据存储?

问题描述:

我有关系数据库系统存储文本数据的经验,并为他们构建应用程序。我听说关系数据库并不适用于音频(多媒体)数据库,并且还需要一些编码方案。所以在这方面的任何指导都会很有帮助。 我想流式传输音频,并将其分块,并计划使用相同的ogg vorbis编解码器。对于流式音频数据,我认为不能想到将文件存储在服务器上,只是在数据库中提供指向它们的路径。如果我这样做的话:音频文件很大,因此如果不压缩它们,通过频道发送它们将不适用于普通的互联网连接,上传它们也不会起作用。哪个数据库和编码方案适用于音频数据存储?

+0

音频是原始的二进制数据;大多数数据库都提供了用于存储这种事物的“blob”数据类型。这是你的意思吗? –

+0

为什么你需要把音频放入数据库? – R0MANARMY

+0

我不确定你想要知道或做什么。你想简单地存储音频(如.wav的内容)?你想存储更多的信息或只是内容?你想检索信息或音频?您将流式传输音频,并将其分成几块? – woliveirajr

它可以工作(请参阅BLOB http://en.wikipedia.org/wiki/Binary_large_object),但您也可以使用文件作为实际数据,并仅存储指向这些文件的varchar。

应避免编码,因为这为每次使用增加了额外的解码步骤。

当您听到relational databases don't really work for audio(multimedia)时,可能意味着直接在数据库中存储大量二进制数据会导致性能下降和维护头痛。例如,如果RDB中有terrabytes的数据,则很难进行备份,移动和缩放。

但是,您可以将RDB中的BLOB数据存储在RDB中,但我建议您考虑使用DB指向文件的文件存储。您可以使用S3(具有良好的缓存服务器)或本地文件系统。

有关音频剪辑的各种元信息可以存储在数据库中,这很有意义,因为您可以合理地查询它。

音频剪辑本身通常很大(几个megs),并且通常不能为它们编制索引。因此,将它们直接存储在数据库中毫无意义,如果这样做,它会减慢速度。将音频数据直接存储在数据库中的唯一好处是交易/锁定,这在大多数情况下是不太可能的优势。

某些数据库(尤其是Oracle)可以将BLOB“脱机”存储,即不在表空间中,而是作为其他介质上的文件。这有助于提高性能。如果您将音频数据存储为BLOB,则只能通过数据库接口访问它们。

如果您单独存储音频,则可以在数据库中存储文件名。您可以使用不同的机制来提供音频数据,更适合音频或更容易使用客户端(例如http)。缺点是您对它们的控制较少:链接可能意外中断,并且您没有删除文件或回滚文件的事务。 (通常您运行一个定期的垃圾收集过程,删除未引用的文件。)

除非您更详细地描述您的应用程序,否则很难提供更具体的建议。

+0

如何使用一些其他类型的数据库,如对象关系数据库,如Cassandra或hdoop的Hbase? – Ankur