相比NoSQL,關聯式資料庫為何不適合儲存影像? - Reddit
在SQL資料庫中儲存這些影像只會使web開發更加困難,大多數影像只是儲存在檔案系統中,資料庫中包含指向這些檔案位置的指標。
不要把影像儲存在任何一種資料庫中,真的,除非有一個特定的理由這樣做。
資料庫在從磁碟檢索資料時只會增加一層抽象。所以資料庫速度總是比較慢,將整個影像儲存在資料庫中是沒有意義的。此外,它會增加資料庫的大小,因此您可能會向雲端計算廠商支付更多費用(或者在資料中心內部花費更多)。
資料庫傾向於將所有內容都儲存在 RAM 中,並且 blob 很大,因此您最終會使用大量記憶體,將資料放入檔案系統的效率要高得多,這也意味著可以靜態提供內容,從而使充分利用 CDN 和瀏覽器快取。
使用資料庫中的影像,您必須將影像從資料庫伺服器返回到應用程式伺服器,然後將其傳送到客戶端,而檔案系統在理想情況下,影像已經在客戶端上,因此瀏覽器可以處理一切。
如果出於某種奇怪的原因必須將其儲存在資料庫中(例如:白痴老闆這麼說),那麼由於所有的花裡胡哨(多個索引,查詢處理複雜性),在關聯式資料庫中檢索影像仍然需要更多時間ETC)。
另外值得一提的是,它繫結了一個資料庫連線,否則該連線可能用於快速獲取應用程式邏輯所需的重要資料。
來自檔案系統的流式檔案資料仍會佔用伺服器連線,但與資料庫相比,您通常有更大的預算。對於使用共享資料庫的負載平衡應用伺服器來說尤其如此。
SQLite 比使用 fopen 從磁碟獲取檔案要快,但是SQLite 只有在處理 10KB 左右的檔案時才會更快。
如果SQLite 與 mongodb 相比,mongodb 會更快,因為它的 db 儲存在記憶體中,因此跳過磁碟檢索使其比關係 db 更快。
喜歡將檔案儲存在資料庫中的原因(特別是 MS SQL Server):
- 符合 ACID 的事務
- 空間不足錯誤
- 良好的空間管理工具
- 防止系統管理員刪除/移動檔案
- 備份和恢復是一致的
- 參照完整性約束
相關文章
- 關聯式資料庫和NoSQL結合使用:MySQL + MongoDB資料庫MySqlMongoDB
- 在關聯式資料庫中儲存RDF (轉)資料庫
- 從關聯式資料庫遷移到NoSQL雲資料庫資料庫SQL
- 【轉載】關聯式資料庫還是NoSQL資料庫資料庫SQL
- 從關聯式資料庫向NoSQL遷移資料庫SQL
- NoSQL資料庫探討之一 - 為什麼要用非關聯式資料庫?SQL資料庫
- 如何選擇合適的NoSQL資料庫SQL資料庫
- 什麼時候該使用NoSQL儲存資料庫?SQL資料庫
- 服務端指南 資料儲存篇 | 選擇合適的資料儲存方案服務端
- 為遺留使用者儲存庫開發聯合儲存庫的定製介面卡
- Spring Boot實戰系列(2)資料儲存之NoSQL資料庫MongoDBSpring BootSQL資料庫MongoDB
- 將Oracle作為NoSQL文件儲存OracleSQL
- 如何讓NoSQL記憶體資料庫適合企業級應用SQL記憶體資料庫
- Web Sql 關聯式資料庫WebSQL資料庫
- 關聯式資料庫設計資料庫
- 關聯式資料庫之父 (轉)資料庫
- 【轉載】分散式快取能否作為NoSQL資料庫?分散式快取SQL資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- 關聯式資料庫很快會替代向量資料庫資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- 關聯式資料庫分片原則資料庫
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- 資料庫 - 關聯式資料庫標準語言SQL資料庫SQL
- 為什麼不用資料庫儲存圖片?資料庫
- 列式儲存資料庫資料庫
- NoSQL:從關係型資料庫到非關係型資料庫SQL資料庫
- NoSql資料庫SQL資料庫
- NoSQL 和資料倉儲SQL
- 關聯式資料庫的封建迷信資料庫
- 從關聯式資料庫遷移到CouchDB資料庫
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 分散式系統技術:儲存之資料庫分散式資料庫
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於資料庫儲存結構Oracle資料庫
- “Node.js”為何不適合CPU密集型應用?Node.js