qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          三種東西永遠(yuǎn)不要放到數(shù)據(jù)庫里

          我已經(jīng)在很多演講里說過,改進你的系統(tǒng)的最好的方法是先避免做“蠢事”。我并不是說你或你開發(fā)的東西“蠢”,只是有些決定很容易被人們忽略掉其暗含 的牽連,認(rèn)識不到這樣做對系統(tǒng)維護尤其是系統(tǒng)升級帶來多大的麻煩。作為一個顧問,像這樣的事情我到處都能見到,我還從來沒有見過做出這樣的決定的人有過好 的結(jié)果的。

            圖片,文件,二進制數(shù)據(jù)

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

            把文件存放在數(shù)據(jù)庫里有很多問題:

            ● 對數(shù)據(jù)庫的讀/寫的速度永遠(yuǎn)都趕不上文件系統(tǒng)處理的速度

            ● 數(shù)據(jù)庫備份變的巨大,越來越耗時間

            ● 對文件的訪問需要穿越你的應(yīng)用層和數(shù)據(jù)庫層

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

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

            短生命期數(shù)據(jù)

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

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

            日志文件

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

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

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

            可是稍等一下,你是那片不一樣的雪花,你遇到的問題會如此的不同,所以,如果你把上面提到的三種東西中的某一種放到了數(shù)據(jù)庫里也不會有問題。不,你錯了,不,你不特殊。相信我。

          posted on 2012-05-17 09:30 順其自然EVO 閱讀(205) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巩留县| 临城县| 甘南县| 集贤县| 攀枝花市| 增城市| 芜湖市| 鸡泽县| 抚松县| 庄河市| 南康市| 霍邱县| 额尔古纳市| 南木林县| 呼和浩特市| 阿拉善盟| 苏州市| 大同市| 比如县| 招远市| 平谷区| 宜城市| 扎赉特旗| 昌都县| 永嘉县| 芷江| 福建省| 同德县| 乌拉特中旗| 梁河县| 邯郸市| 荆门市| 镇原县| 宁河县| 张家港市| 成武县| 遂川县| 明溪县| 浦东新区| 定远县| 宝清县|