程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 三種數據不宜存放到數據庫裡

三種數據不宜存放到數據庫裡

編輯:MySQL綜合教程

程序=數據+算法。這是對程序最簡單的定義,毫無疑問,一個程序中必不可少的會存儲大量的數據,對於數據的存儲,大部分開發者們應該馬上就想到了數據庫,但是並不是所有的數據都適合存儲到數據庫中的,下面將要和大家分享三種不適宜存儲到數據庫中的數據。

圖片,文件,二進制數據

既然數據庫支持BLOB類型的數據,把文件塞進BLOB字段裡一定沒有錯了!?錯,不是這樣的!別的先不提,在很多數據庫語言裡,處理大字段都不是很容易。

把文件存放在數據庫裡有很多問題:

  • 對數據庫的讀/寫的速度永遠都趕不上文件系統處理的速度
  • 數據庫備份變的巨大,越來越耗時間
  • 對文件的訪問需要穿越你的應用層和數據庫層

這後兩個是真正的殺手。把圖片縮略圖存到數據庫裡?很好,那你就不能使用nginx或其它類型的輕量級服務器來處理它們了。

給自己行個方便吧,在數據庫裡只簡單的存放一個磁盤上你的文件的相對路徑,或者使用S3或CDN之類的服務。

短生命期數據

使用情況統計數據,測量數據,GPS定位數據,session數據,任何只是短時間內對你有用,或經常變化的數據。如果你發現自己正在使用定時任務從某個表裡刪除有效期只有一小時,一天或數周的數據,那說明你沒有找對正確的做事情的方法。使用redis, statsd/graphite, Riak,它們都是干這種事情更合適的工具。這建議也適用於對於收集那些短生命期的數據。

當然,用挖土機在後花園裡種土豆也是可行的,但相比起從儲物間裡拿出一把鏟子,你預約一台挖土機、等它趕到你的園子裡挖坑,這顯然更慢。你要選擇合適的工具來處理手頭上的事。

日志文件

把日志數據存放到數據庫裡,表面上看起來似乎不錯,而且“將來也許我需要對這些數據進行復雜的查詢”,這樣的話很得人心。這樣做並不是一個特別差的做法,但如果你把日志數據和你的產品數據存放到一個數據庫裡就非常不好了。

也許你的日志記錄做的很保守,每次web請求只產生一條日志。對於整個網站的每個事件來說,這仍然會產生大量的數據庫插入操作,爭奪你用戶需要的數據庫資源。如果你的日志級別設置為verbose或debug,那等著看你的數據庫著火吧。

你應該使用一些比如Splunk Loggly或純文本文件來存放你的日志數據。這樣去查看它們也許會不方便,但這樣的時候不多,甚至有時候你需要寫出一些代碼來分析出你想要的答案,但總的來說是值得的。

您可能感興趣的文章

  • 合理使用MySQL數據庫索引以使數據庫高效運行
  • 在php中分別使用curl的post提交數據的方法和get獲取網頁數據的方法總結
  • 大流量網站該如何實現優化服務器、靜態化、數據庫優化、負載均衡以實現高負載
  • 如何定位,排除和避免MySQL數據庫性能問題
  • php獲取目錄所有文件並將結果保存到數組的程序
  • mysql服務器主從數據庫同步配置
  • 帝國cms數據庫配置文件在那裡
  • 關於修改mysql數據庫字符集的方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved