背景:
在填寫表單申請時(shí)遏考,用戶突然提出要求:是否在填寫詳情時(shí)可以支持截圖保存到數(shù)據(jù)庫里慈鸠。
調(diào)研:
1. 當(dāng)前數(shù)據(jù)庫保存「詳情」字段是字符串,如果突然變更字段類型灌具,對現(xiàn)有數(shù)據(jù)會有影響青团;
2. 數(shù)據(jù)庫是否能很友好地支持存儲圖片?以前沒怎么聽說過數(shù)據(jù)庫用來直接存儲圖片咖楣,如果要存的話督笆,也是存圖片的一個路徑(/相對路徑)。直接上網(wǎng)搜了一些資料诱贿,這篇博文寫得挺好: 關(guān)于圖片或者文件在數(shù)據(jù)庫的存儲方式歸納娃肿。 提煉幾點(diǎn)如下:
1)當(dāng)前互聯(lián)網(wǎng)環(huán)境中商品圖片、用戶上傳的頭像等圖片要存放在數(shù)據(jù)中珠十,有2種方式:
? ? ?a. 圖片以二進(jìn)制形式存儲到數(shù)據(jù)庫中(mysql中blob類型料扰,容量64K或MEDIUMBLOB類型,容量16M宵睦,LONGBLOB類型记罚,容量4G)墅诡。
? ? ? ? ?優(yōu)點(diǎn):備份圖片數(shù)據(jù)和遷移數(shù)據(jù)方便壳嚎。
? ? ? ? ?缺點(diǎn):
? ? ? ? ? ? ? ? ? # mysql對通信數(shù)據(jù)大小有限制,一般高清一點(diǎn)的圖片大小都有上M末早,而mysql默認(rèn)數(shù)據(jù)通信大小是1M烟馅,my.conf的max_allowed_packet字段;如果圖片大的話然磷,直接影響與mysql交互時(shí)間郑趁;
? ? ? ? ? ? ? ? ? # 影響數(shù)據(jù)庫性能。當(dāng)數(shù)據(jù)庫數(shù)據(jù)量大時(shí)時(shí)姿搜,大部分時(shí)間耗費(fèi)在php,java等接口等待數(shù)據(jù)返回的數(shù)據(jù)寡润;大字段數(shù)據(jù)加重?cái)?shù)據(jù)庫負(fù)擔(dān),在高并發(fā)情況下嚴(yán)重影響性能舅柜;
? ? ? ?b. ?圖片存儲在磁盤上梭纹,數(shù)據(jù)庫字段中保存的圖片的路徑。
2)數(shù)據(jù)庫性能調(diào)優(yōu)致份,這個后續(xù)結(jié)合實(shí)際多深入研究一下变抽。提到幾點(diǎn):大字段重新拆分到單獨(dú)一個表中,因?yàn)閿?shù)據(jù)庫查找數(shù)據(jù)是掃描數(shù)據(jù)文件,文件容量越小绍载,速度也就越快诡宗。所以,單表容量在幾G時(shí)得考慮分表了击儡∷郑『分離 瘦身』
3)存儲圖片路徑為何一般都是相對路徑,且前面還不加「/」阳谍。為以后擴(kuò)展方便芳悲,直接域名加圖片相對路徑即可。
4)何為cdn(內(nèi)容分發(fā))服務(wù)边坤。本質(zhì)為了解決距離遠(yuǎn)而造成的通信速度慢問題名扛,使用就近服務(wù)。比如北京用戶訪問在廣州的某通信服務(wù)茧痒,必然會有南北鏈路遠(yuǎn)而帶來的通信時(shí)延大的問題肮韧,如果這時(shí)使用cdn服務(wù),即廣州的該通信服務(wù)在北京部署了服務(wù)器(或機(jī)房或安放節(jié)點(diǎn))旺订,那北京用戶就會直接請求距離近的服務(wù)完成交互弄企。