2010-06-22 46 views
6

什麼是最好的方式來存儲二進制數據(圖像,pdf的,MP3的,視頻等)在MySQL和爲什麼?我想知道的是你是如何做到的(作爲開發人員),爲什麼?大型網站如何做呢?在mysql中存儲二進制數據(圖像,pdf,mp3,視頻等)的最佳方式是什麼?爲什麼?

預先感謝您;-)

+1

這是爲什麼標記爲Oracle? – 2010-06-22 11:24:14

+0

我以爲這是一個rdbms問題一般 – Imran 2010-06-22 11:25:32

+2

但你的問題說「在MySQL中」而不是「在數據庫中」!事實上,這是不同DBMS傾向於做不同的事情。 – 2010-06-22 11:27:58

回答

4

要存儲在MySQL中的Blob二進制數據可以使用:MySQL Manuel: 10.4.3. The BLOB and TEXT Types

但如果它是不是真的有必要,我不會存儲在二進制數據數據庫,因爲在MySQL等中存儲數據的主要原因(如Join,Index,...)很難用於這些數據類型。 Blob也會降低整體數據庫性能。

也許你打造您儲存幾個方面和文件系統路徑的文件一個單獨的表...

+2

我不知道,我已經在Oracle數據庫中看到了TB級的二進制數據,然後通過它進行流式傳輸。這不一定是個壞主意。 – Artefacto 2010-06-22 12:07:17

+0

我不寫道它通常是一個壞主意 - 這裏有針對Blob的例子和用例。 不過,在我看來,當有人想要使用這種技術時,應該有很好的理由和正確的調整(f.e. separated tablespace,...)。 – FloE 2010-06-22 12:40:06

+0

一個BLOB是要走的路。存儲路徑有一些確定的問題。如果文件被移動,你的指針就會被破壞。備份數據庫變得相對毫無意義。對數據的可用操作不是決定存儲它的特性。 – 2010-06-22 15:47:03

3

在Oracle我會用一個BLOB列來存儲這些對象。這樣,數據完整性和安全性就像所有其他數據一樣保證。另一種方法是使用BFILE,它是指向外部文件系統上的文件的指針 - 當您下次嘗試訪問它時可能已被移動,刪除,修改或甚至丟失的文件。

+0

+1在構建網站時,不得不處理BLOB存儲和文件系統指針,所以我更喜歡BLOB存儲在服務之前與文件系統緩存配合。 – 2010-06-22 11:39:06

1

嗯,我一直在磁盤映像,我有很多很多的人,我不想要想象這可能是維護噩夢。我的數據庫(mysql)到目前爲止是小於5GB,並且我對〜50GB的jpeg文件(每個圖像都有幾個大小的保存)都很好。 將圖像存儲在一個單獨的數據庫(可能有單獨的RAID控制器)可能是一件好事,但我相信系統將它們存儲在磁盤上更快。

1

我會使用數據庫僅用於存儲文件的元數據(大小,MIME類型,標籤等)。爲了保證數據的完整性和安全性,我最好將二進制數據卸載到專門的服務,如Amazon's S3

關於數據完整性:我會避免通過執行涉及大塊的事務來重載數據庫服務器。相反,我建議首先存儲文件並執行一些週期性的異步'垃圾收集'。

相關問題