2011-07-01 77 views
0

我有關係數據庫系統存儲文本數據的經驗,併爲他們構建應用程序。我聽說關係數據庫並不適用於音頻(多媒體)數據庫,並且還需要一些編碼方案。所以在這方面的任何指導都會很有幫助。 我想流式傳輸音頻,並將其分塊,並計劃使用相同的ogg vorbis編解碼器。對於流式音頻數據,我認爲不能想到將文件存儲在服務器上,只是在數據庫中提供指向它們的路徑。如果我這樣做的話:音頻文件很大,因此如果不壓縮它們,通過頻道發送它們將不適用於普通的互聯網連接,上傳它們也不會起作用。哪個數據庫和編碼方案適用於音頻數據存儲?

+0

音頻是原始的二進制數據;大多數數據庫都提供了用於存儲這種事物的「blob」數據類型。這是你的意思嗎? –

+0

爲什麼你需要把音頻放入數據庫? – R0MANARMY

+0

我不確定你想要知道或做什麼。你想簡單地存儲音頻(如.wav的內容)?你想存儲更多的信息或只是內容?你想檢索信息或音頻?您將流式傳輸音頻,並將其分成幾塊? – woliveirajr

回答

1

它可以工作(請參閱BLOB http://en.wikipedia.org/wiki/Binary_large_object),但您也可以使用文件作爲實際數據,並僅存儲指向這些文件的varchar。

應避免編碼,因爲這爲每次使用增加了額外的解碼步驟。

1

當您聽到relational databases don't really work for audio(multimedia)時,可能意味着直接在數據庫中存儲大量二進制數據會導致性能下降和維護頭痛。例如,如果RDB中有terrabytes的數據,則很難進行備份,移動和縮放。

但是,您可以將RDB中的BLOB數據存儲在RDB中,但我建議您考慮使用DB指向文件的文件存儲。您可以使用S3(具有良好的緩存服務器)或本地文件系統。

0

有關音頻剪輯的各種元信息可以存儲在數據庫中,這很有意義,因爲您可以合理地查詢它。

音頻剪輯本身通常很大(幾個megs),並且通常不能爲它們編制索引。因此,將它們直接存儲在數據庫中毫無意義,如果這樣做,它會減慢速度。將音頻數據直接存儲在數據庫中的唯一好處是交易/鎖定,這在大多數情況下是不太可能的優勢。

某些數據庫(尤其是Oracle)可以將BLOB「脫機」存儲,即不在表空間中,而是作爲其他介質上的文件。這有助於提高性能。如果您將音頻數據存儲爲BLOB,則只能通過數據庫接口訪問它們。

如果您單獨存儲音頻,則可以在數據庫中存儲文件名。您可以使用不同的機制來提供音頻數據,更適合音頻或更容易使用客戶端(例如http)。缺點是您對它們的控制較少:鏈接可能意外中斷,並且您沒有刪除文件或回滾文件的事務。 (通常您運行一個定期的垃圾收集過程,刪除未引用的文件。)

除非您更詳細地描述您的應用程序,否則很難提供更具體的建議。

+0

如何使用一些其他類型的數據庫,如對象關係數據庫,如Cassandra或hdoop的Hbase? – Ankur

相關問題