相比NoSQL,關聯式資料庫為何不適合儲存影像? - Reddit
在SQL資料庫中儲存這些影像只會使web開發更加困難,大多數影像只是儲存在檔案系統中,資料庫中包含指向這些檔案位置的指標。
不要把影像儲存在任何一種資料庫中,真的,除非有一個特定的理由這樣做。
資料庫在從磁碟檢索資料時只會增加一層抽象。所以資料庫速度總是比較慢,將整個影像儲存在資料庫中是沒有意義的。此外,它會增加資料庫的大小,因此您可能會向雲端計算廠商支付更多費用(或者在資料中心內部花費更多)。
資料庫傾向於將所有內容都儲存在 RAM 中,並且 blob 很大,因此您最終會使用大量記憶體,將資料放入檔案系統的效率要高得多,這也意味著可以靜態提供內容,從而使充分利用 CDN 和瀏覽器快取。
使用資料庫中的影像,您必須將影像從資料庫伺服器返回到應用程式伺服器,然後將其傳送到客戶端,而檔案系統在理想情況下,影像已經在客戶端上,因此瀏覽器可以處理一切。
如果出於某種奇怪的原因必須將其儲存在資料庫中(例如:白痴老闆這麼說),那麼由於所有的花裡胡哨(多個索引,查詢處理複雜性),在關聯式資料庫中檢索影像仍然需要更多時間ETC)。
另外值得一提的是,它繫結了一個資料庫連線,否則該連線可能用於快速獲取應用程式邏輯所需的重要資料。
來自檔案系統的流式檔案資料仍會佔用伺服器連線,但與資料庫相比,您通常有更大的預算。對於使用共享資料庫的負載平衡應用伺服器來說尤其如此。
SQLite 比使用 fopen 從磁碟獲取檔案要快,但是SQLite 只有在處理 10KB 左右的檔案時才會更快。
如果SQLite 與 mongodb 相比,mongodb 會更快,因為它的 db 儲存在記憶體中,因此跳過磁碟檢索使其比關係 db 更快。
喜歡將檔案儲存在資料庫中的原因(特別是 MS SQL Server):
- 符合 ACID 的事務
- 空間不足錯誤
- 良好的空間管理工具
- 防止系統管理員刪除/移動檔案
- 備份和恢復是一致的
- 參照完整性約束
相關文章
- 如何選擇合適的NoSQL資料庫SQL資料庫
- Spring Boot實戰系列(2)資料儲存之NoSQL資料庫MongoDBSpring BootSQL資料庫MongoDB
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- Web Sql 關聯式資料庫WebSQL資料庫
- 關聯式資料庫很快會替代向量資料庫資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- NoSql資料庫SQL資料庫
- 關聯式資料庫 Query_Execution資料庫
- 為什麼不用資料庫儲存圖片?資料庫
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 分散式系統技術:儲存之資料庫分散式資料庫
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 天翼雲攜手華為,強強聯合,共創資料儲存新生態
- gitlab資料庫儲存位置Gitlab資料庫
- 資料庫儲存過程資料庫儲存過程
- 事件溯源超越關聯式資料庫 - confluent事件資料庫
- 儲存刪除資料後恢復方法-適用netAPP儲存APP
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 分散式文件儲存資料庫之MongoDB訪問控制分散式資料庫MongoDB
- 分散式文件儲存資料庫之MongoDB分片叢集分散式資料庫MongoDB
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 報表資料分庫儲存
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 四類NoSQL資料庫SQL資料庫
- NoSQL資料庫興起SQL資料庫
- 【融雲分析】從過剩儲存資源到分散式時序資料庫的長儲存分散式資料庫
- 騰訊重磅開源分散式NoSQL儲存系統DCache分散式SQL
- 明解資料庫------資料庫儲存演變史資料庫
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- [小技巧]Laravel 關聯儲存Laravel
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 【Python3網路爬蟲開發實戰】5-資料儲存-2-關係型資料庫儲存-1 MySQL儲存Python爬蟲資料庫MySql
- 分散式文件儲存資料庫之MongoDB基礎入門分散式資料庫MongoDB
- 崑崙分散式資料庫儲存叢集 Fullsync 機制分散式資料庫
- 為高效能FPGA平臺選擇合適的儲存器FPGA