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