時間:2024-03-26 14:41作者:下載吧人氣:33
1、為什么選擇MongoDB?
1、性能
在大數(shù)據(jù)時代中,大數(shù)據(jù)量的處理已經(jīng)成了考量一個數(shù)據(jù)庫最重要的原因之一。而MongoDB的一個主要目標(biāo)就是盡可能的讓數(shù)據(jù)庫保持卓越的性能,這很大程度地決定了MongoDB的設(shè)計。在一個以傳統(tǒng)機(jī)械硬盤為主導(dǎo)的年代,硬盤很可能會成為性能的短板,而MongoDB選擇了最大程度而利用內(nèi)存資源用作緩存來換取卓越的性能,并且會自動選擇速度最快的索引來進(jìn)行查詢。MongoDB盡可能精簡數(shù)據(jù)庫,將盡可能多的操作交給客戶端,這種方式也是MongoDB能夠保持卓越性能的原因之一。
2、擴(kuò)展
現(xiàn)在互聯(lián)網(wǎng)的數(shù)據(jù)量已經(jīng)從過去的MB、GB變?yōu)榱爽F(xiàn)在的TB級別,單一的數(shù)據(jù)庫顯然已經(jīng)無法承受,擴(kuò)展性成為重要的話題,然而現(xiàn)在的開發(fā)人員常常在選擇擴(kuò)展方式的時候犯了難,到底是選擇橫向擴(kuò)展還是縱向擴(kuò)展呢?
橫向擴(kuò)展(scale out)是以增加分區(qū)的方式將數(shù)據(jù)庫拆分成不同的區(qū)塊來分布到不同的機(jī)器中來,這樣的優(yōu)勢是擴(kuò)展成本低但管理困難。
縱向擴(kuò)展(scale up) 縱向擴(kuò)展與橫向擴(kuò)展不同的是他會將原本的服務(wù)器進(jìn)行升級,讓其擁有更強(qiáng)大的計算能力。這樣的優(yōu)勢是易于管理無需考慮擴(kuò)展帶來的眾多問題,但缺點(diǎn)也顯而易見,那就是成本高。一臺大型機(jī)的價格往往非常昂貴,并且這樣的升級在數(shù)據(jù)達(dá)到極限時,可能就找不到計算能力更為強(qiáng)大的機(jī)器了。
而MongoDB選擇的是更為經(jīng)濟(jì)的橫向擴(kuò)展,他可以很容易的將數(shù)據(jù)拆分至不同的服務(wù)器中。而且在獲取數(shù)據(jù)時開發(fā)者也無需考慮多服務(wù)器帶來的問題,MongoDB可以將開發(fā)者的請求自動路由到正確的服務(wù)器中,讓開發(fā)者脫離橫向擴(kuò)展帶來的弊病,更專注于程序的開發(fā)上。
3、使用
MongoDB采用的是NoSQL的設(shè)計方式,可以更加靈活的操作數(shù)據(jù)。在進(jìn)行傳統(tǒng)的RDBMS中你一定遇到過幾十行甚至上百行的復(fù)雜SQL語句,傳統(tǒng)的RDBMS的SQL語句中包含著大量關(guān)聯(lián),子查詢等語句,在增加復(fù)雜性的同時還讓性能調(diào)優(yōu)變得更加困難。MongoDB的面向文檔(document-oriented)設(shè)計中采用更為靈活的文檔來作為數(shù)據(jù)模型用來取代RDBMS中的行,面向文檔的設(shè)計讓開發(fā)人員獲取數(shù)據(jù)的方式更加靈活,甚至于開發(fā)人員僅用一條語句即可查詢復(fù)雜的嵌套關(guān)系,讓開發(fā)人員不必為了獲取數(shù)據(jù)而絞盡腦汁。
2、NoSQL對傳統(tǒng)數(shù)據(jù)庫設(shè)計思維的影響
1、預(yù)設(shè)計模式與動態(tài)模式
傳統(tǒng)數(shù)據(jù)庫設(shè)計思維中,項(xiàng)目的設(shè)計階段需要對數(shù)據(jù)庫表中的字段名稱、字段類型、進(jìn)行規(guī)定,如果嘗試插入不符合設(shè)計的數(shù)據(jù),數(shù)據(jù)庫不會接受這條數(shù)據(jù)以保證數(shù)據(jù)的完整性。
–數(shù)據(jù)庫字段:NAME, SONG
INSERT INTO T_INFO VALUES(‘John’,’Come Together’); –成功
INSERT INTO T_INFO VALUES(‘小明’, 20, ‘xiaoming@111.com’); –失敗
網(wǎng)友評論