1.為什么要學(xué)習(xí)?
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)江津,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
項目需要,公司需要通過從以往的日志記錄以及購買信息中挖掘有價值的信息,數(shù)據(jù)量大結(jié)構(gòu)復(fù)雜;
項目的需求決定要解決數(shù)據(jù)庫高并發(fā)讀寫,海量數(shù)據(jù)的高效存儲和訪問以及高可擴(kuò)展和高可用性等問題。
MongoDB(非結(jié)構(gòu)化數(shù)據(jù)庫)不僅可以處理結(jié)構(gòu)化數(shù)據(jù),而且更適合處理非結(jié)構(gòu)化數(shù)據(jù)(文本、圖像、超媒體等信息)。它突破了關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)定義不易改變而且數(shù)據(jù)定長的限制,在處理連續(xù)信息和非結(jié)構(gòu)化信息中有著關(guān)系型數(shù)據(jù)庫無法比擬的優(yōu)勢。
MongoDB的優(yōu)勢:大數(shù)據(jù)量高性能,易擴(kuò)展,高可用性,輕松實現(xiàn)大數(shù)據(jù)量的存儲;完善的Java API,存儲格式時JSON,對JAVA,JS來說非常好處理,運(yùn)維起來很方便,清晰的版本控制,非?;钴S的社區(qū)。
關(guān)系型數(shù)據(jù)庫不擅長:大量數(shù)據(jù)的寫入;字段不固定,表結(jié)構(gòu)變更;簡單查詢需要快速返回結(jié)果;
MongoDB在各大互聯(lián)網(wǎng)公司廣泛使用,涉及范圍廣,使用簡單。
2.MongoDB都有哪些特性?
面向文檔存儲:BSON
面向集合存儲:易存儲對象類型的數(shù)據(jù)。
強(qiáng)大的查詢功能:支持豐富的查詢表達(dá)式。使用json形式的標(biāo)記,可以查詢文檔中內(nèi)嵌的對象及數(shù)組。
完整的查詢功能:全索引支持包括內(nèi)嵌對象及數(shù)組。查詢優(yōu)化器生成高效查詢計劃。
模式自由:集合中的鍵不要求一致,鍵值不要求一致的數(shù)據(jù)類型。不知道它的任何結(jié)構(gòu)定義
復(fù)制(主從復(fù)制/副本集)及自動故障轉(zhuǎn)移:用于故障恢復(fù),讀擴(kuò)展;Mongo數(shù)據(jù)庫支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主從模式 以及服務(wù)器之間的相互復(fù)制
分片(自動分片):用于負(fù)載均衡,寫擴(kuò)展。支持水平的數(shù)據(jù)庫集群,動態(tài)添加額外的機(jī)器
GridsFS:避免文件系統(tǒng)對目錄做文件數(shù)目的限制。不會產(chǎn)生磁盤碎片
支持RUBY,PYTHON,JAVA,C++等多語言,多平臺
查詢監(jiān)視:監(jiān)視工具用于分析數(shù)據(jù)庫操作性能
緩存服務(wù):對關(guān)系性數(shù)據(jù)庫數(shù)據(jù)進(jìn)行緩存,減少數(shù)據(jù)壓力
自動處理碎片
三、MongoDB在數(shù)據(jù)庫中存儲二進(jìn)制數(shù)據(jù)的解決方案?
兩種:第一種是像存儲普通數(shù)據(jù)那樣,將文件轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)存入mongodb,第二種使用gridfs
第一種:先讀取文件內(nèi)容,然后塞進(jìn)bson.binary.Binary對象里,最后像平常那樣寫入數(shù)據(jù)庫;獲取文件一樣的簡單,像平時那樣查找數(shù)據(jù),然后將二進(jìn)制內(nèi)容寫入文件即可;
第二種如果是大文件可以使用gridfs
gridfs會把文件分成若干塊來存儲,每一塊的大小默認(rèn)為256K,所以,如果是小文件,就不要用gridfs來存儲了,不然會浪費(fèi)空間的,gridfs是MongoDB之上的分布式文件系統(tǒng),可以使用mongodb的分片和復(fù)制機(jī)制,因為Mongodb分配數(shù)據(jù)空間時以2GB為單位,所以gridfs不產(chǎn)生磁盤碎片。