3
A
回答
4
而不是什麼?把它放在文件系統中?
使用二進制文件存儲在文件系統的缺點是:
你沒有得到符合ACID;
如果您可能將該應用程序託管在多個服務器上(例如負載平衡,故障切換),則必須制定某種共享文件存儲以避免後端不同步;
只有一個存儲後端而不是兩個使部署更簡單。
所以只用數據庫存儲,您不必擔心創建與網絡用戶的寫權限的文件夾,整個應用程序可以只讀的。如果您需要移動應用程序,則可以將其從源代碼管理中檢出並指向數據庫,而不必跨越多個文件數據。您的數據庫備份可以覆蓋所有內容,而不必單獨備份文件備份步驟。等等。
在另一方面的弊端數據庫BLOB存儲:
笨拙的非常大的文件;
您無法使用網絡服務器高效地免費提供文件。
1
存儲在數據庫中的任何相同的優點讓你
- 你可以索引的另一列或主鍵的數據提供數據
- 它從一個地方進行訪問,並與行向交易的快速檢索級併發的問題你
- ,可以適當地高速緩存常用數據
- 您可以微調用於存儲數據的表引擎
- 你可以國防部二進制數據和其他表中的行之間的關係(用戶/頁/任何)
我不明白爲什麼它很重要,數據是文本或二進制數據庫爲您提供了很多優點。
1
我假設另一種方法是將二進制數據存儲在文件中,並將文件名而不是數據存儲在數據庫的相應記錄中。這種方法的問題在於它不一致:任何事情都可能發生在你的文件上,它可能會被損壞或刪除,DBMS(在這種情況下,MySQL)不能做任何事情:它不能確保一致性,因爲它確實不知道任何關於你的文件。另一件事,DBMS可以優化對數據的訪問(它可以將其存儲在內存中,而不是每次訪問時都從磁盤讀取),而使用基於文件的方法時,您必須等到查詢完成後,打開文件並從磁盤讀取數據。這會顯着降低性能。
相關問題
- 1. 在mysql中存儲二進制數據
- 2. 在MySQL中存儲二進制數組
- 3. 在mysql中存儲二進制數據(圖像,pdf,mp3,視頻等)的最佳方式是什麼?爲什麼?
- 4. 在mysql中存儲和匹配二進制數據
- 5. 存儲在MySQL中的二進制數據被損壞節點
- 6. 在cassandra上存儲二進制數據就像MYSQL BLOB二進制
- 7. 爲什麼要將bcrypt()散列存儲在(var)二進制文件中?
- 8. 二進制數據在MySQL
- 9. 在iPhone上的核心數據中存儲二進制數據
- 10. 爲什麼要將二進制轉換爲十進制?
- 11. Mysql二進制存儲問題
- 12. 在MySQL中將十六進制值存儲爲二進制文件
- 13. 爲什麼在Web套接字中使用二進制數據?
- 14. 將二進制數據作爲字符串存儲在Web Sql數據庫中
- 15. 十六進制爲二進制形式,需要說明什麼?
- 16. 什麼是二進制數據?
- 17. 如何在字符串中存儲大型二進制數據?
- 18. Rails:在數據庫中存儲二進制文件
- 19. 將文件內容(二進制數據)存儲在plone.app.registry中
- 20. 如何通過Mongoose在MongoDB中存儲二進制數據(PNG)?
- 21. 如何在結構中存儲二進制文件數據?
- 22. 爲什麼在將數據存儲到MySQL數據庫時,需要將轉義序列添加到二進制字符串中?
- 23. 爲什麼在將二進制數據從PHP插入MySQL時使用bin2hex?
- 24. 在Neo4j中存儲二進制對象
- 25. 從數據存儲導出blob屬性爲二進制文件
- 26. 要使用什麼數據存儲
- 27. 用於存儲二進制數據的鍵/值數據庫
- 28. 爲什麼mysql在「#」字符之後沒有存儲數據?
- 29. 緩存二進制數據的最佳方式是什麼?
- 30. 如何在MySQL數據庫中存儲十六進制值?
是的,正好 - DB vs Filesystem。感謝你的回答。 – Arnthor 2011-04-25 12:53:43