全國(guó)站 [切換城市]
眾眾網(wǎng)全國(guó)頁(yè) 永遠(yuǎn)不要放進(jìn)數(shù)據(jù)庫(kù)里的三樣?xùn)|西

永遠(yuǎn)不要放進(jìn)數(shù)據(jù)庫(kù)里的三樣?xùn)|西

來(lái)源:網(wǎng)友投稿 時(shí)間:2020-02-14

有些決定很容易被人們忽略掉其暗含 的牽連,認(rèn)識(shí)不到這樣做對(duì)系統(tǒng)維護(hù)尤其是系統(tǒng)升級(jí)帶來(lái)多大的麻煩。

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

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

既然數(shù)據(jù)庫(kù)支持BLOB類(lèi)型的數(shù)據(jù),把文件塞進(jìn)BLOB字段里一定沒(méi)有錯(cuò)了?。垮e(cuò),不是這樣的!別的先不提,在很多數(shù)據(jù)庫(kù)語(yǔ)言里,處理大字段都不是很容易。

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

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

數(shù)據(jù)庫(kù)備份變的巨大,越來(lái)越耗時(shí)間

對(duì)文件的訪問(wèn)需要穿越你的應(yīng)用層和數(shù)據(jù)庫(kù)層

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

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

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

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

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

日志文件

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

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

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

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

免責(zé)聲明:機(jī)構(gòu)動(dòng)態(tài)部分文章信息來(lái)源于網(wǎng)絡(luò)以及網(wǎng)友投稿,本網(wǎng)站只負(fù)責(zé)對(duì)文章進(jìn)行整理、排版、編輯,是出于傳遞 更多信息之目的,并不意味著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。