Mongodb面試題

Mongodb面試題
Mongodb是什么鳖藕?
Mongodb是一個文檔數(shù)據(jù)庫,提供好的性能只锭,領(lǐng)先的非關(guān)系型數(shù)據(jù)著恩。采用BSON存儲文檔數(shù)據(jù)。

BSON()是一種類json的一種二進(jìn)制形式的存儲格式纹烹。

為什么使用Mongodb页滚?
1.快速:擁有適量級內(nèi)存的Mongodb的性能非常迅速,他將數(shù)據(jù)存儲在物理內(nèi)存中铺呵,使得熱數(shù)據(jù)的讀寫變的十分快速,從而提高了整體的速度與效率隧熙。

2.高擴(kuò)展性:Mongodb的高可用與集群架構(gòu)擁有十分高的擴(kuò)展性片挂,通過物理機(jī)器的增加,以及sharding的增加贞盯,Mongodb的擴(kuò)展將達(dá)到一個十分驚人的地步音念。

3.自身的failover機(jī)制!Mongodb的副本集配置中躏敢,當(dāng)主庫遇到問題闷愤,無法繼續(xù)提供服務(wù)的時候,副本集將選舉出一個新的主庫來繼續(xù)提供服務(wù)件余。

4.json的存儲格式讥脐!Mongodb的json與bson存儲格式十分適合文檔格式的存儲與查詢遭居。

Mongodb適合哪些場景?
游戲場景:使用Mongodb存儲游戲用戶信息旬渠,用戶的裝備俱萍,機(jī)分等直接以內(nèi)嵌文檔的形式存儲,方便查詢和更新告丢。

物流場景:使用Mongodb存儲訂單信息枪蘑,訂單狀態(tài)在運送過程中會不斷更新,以Mongodb內(nèi)嵌數(shù)組的形式存儲岖免,一次查找就能把訂單所有的變更讀取出來岳颇。

社交場景:使用Mongodb存儲用戶信息,以及用戶發(fā)表的朋友圈信息颅湘,通過地理位置索引實現(xiàn)附近的人话侧,地點等功能。

  1. 你說的NoSQL數(shù)據(jù)庫是什么意思?NoSQL與RDBMS直接有什么區(qū)別?為什么要使用和不使用NoSQL數(shù)據(jù)庫?說一說NoSQL數(shù)據(jù)庫的幾個優(yōu)點?**
    nosql是非關(guān)系型數(shù)據(jù)庫栅炒,nosql=not only sql

關(guān)系型數(shù)據(jù)庫采用結(jié)構(gòu)化的數(shù)據(jù)掂摔,nosql采用的是鍵值對的方式存儲數(shù)據(jù)。

在處理非結(jié)構(gòu)化/半結(jié)構(gòu)化的數(shù)據(jù)赢赊,在水平方向上進(jìn)行擴(kuò)展時乙漓,隨時應(yīng)對動態(tài)增加的數(shù)據(jù)項時可以優(yōu)先考慮使用nosql數(shù)據(jù)庫。

在考慮數(shù)據(jù)庫的成熟度释移,支持叭披,分析和商業(yè)智能,管理及專業(yè)性等問題時玩讳,應(yīng)優(yōu)先考慮關(guān)系型數(shù)據(jù)庫涩蜘。

2.名字空間(namespace)是什么?
Mongodb存儲BSON對象在從集(collection)中熏纯。數(shù)據(jù)庫名字和從集名字以句點聯(lián)結(jié)起來叫做名字空間同诫。

Mongodb中的分片是什么意思?
分片是數(shù)據(jù)水平切分到不同的物理節(jié)點樟澜,當(dāng)應(yīng)用數(shù)據(jù)越來越大的時候误窖,數(shù)據(jù)量也會越來越大,當(dāng)數(shù)據(jù)量增長時秩贰,單臺機(jī)器可能無法存儲數(shù)據(jù)或可接受的讀取寫入吞吐量霹俺,利用分片技術(shù)可以添加更多的機(jī)器來應(yīng)對數(shù)據(jù)量整漲。以及讀寫操作的要求毒费。

3.允許空值null嗎?
對于對象用戶而言丙唧,可以添加,但是觅玻,用戶不能添加空值到數(shù)據(jù)庫從集想际,因為空值不是對象培漏,然而用戶能夠添加空對象{}。

4.更新操作fsync到磁盤沼琉?
不會北苟,磁盤寫操作默認(rèn)是延遲執(zhí)行的,寫操作可能在量三秒后到達(dá)磁盤打瘪,例如友鼻,如果一秒內(nèi)數(shù)據(jù)庫收到一千個對一個對象遞增的操作,僅刷新磁盤一次闺骚。

5.如何執(zhí)行事務(wù)/加鎖彩扔?
Mongodb沒有使用傳統(tǒng)的鎖或者復(fù)雜的帶回滾的事務(wù),因為他設(shè)計的宗旨是輕量級僻爽,快速以及可預(yù)計的高性能虫碉,可能把它類比成mysql myisam的自動提交模式,通過精簡對事務(wù)的支持胸梆,性能得到了提升敦捧,特別是在一個可能會穿過多個服務(wù)器的系統(tǒng)里。

6.啟動備份故障恢復(fù)需要多久碰镜?
從備份數(shù)據(jù)庫聲明主數(shù)據(jù)庫宕機(jī)到選出一個備份數(shù)據(jù)庫作為新的主數(shù)據(jù)庫將花費10秒到30秒時間兢卵,這期間在數(shù)據(jù)庫主庫上的操作將會失敗--包括寫入和強(qiáng)一致性讀取操作。然而绪颖,你還能在第二數(shù)據(jù)庫上執(zhí)行最終一致性查詢秽荤,即使在這段時間里。

7.什么是master
它是當(dāng)前備份集群(replica set)中負(fù)責(zé)處理所有寫入操作的主要節(jié)點/成員.在一個備份集群中,當(dāng)失效備援(failover)事件發(fā)生時,一個另外的成員會變成primary.

mongodb是否支持事務(wù)
MongoDB 4.0的新特性——事務(wù)(Transactions):MongoDB 是不支持事務(wù)的柠横,因此開發(fā)者在需要用到事務(wù)的時候窃款,不得不借用其他工具,在業(yè)務(wù)代碼層面去彌補(bǔ)數(shù)據(jù)庫的不足牍氛。

事務(wù)和會話(Sessions)關(guān)聯(lián)晨继,一個會話同一時刻只能開啟一個事務(wù)操作,當(dāng)一個會話斷開搬俊,這個會話中的事務(wù)也會結(jié)束踱稍。primary?

他指的是當(dāng)前備份集群(replica set)中負(fù)責(zé)處理所有寫操作的主要節(jié)點/成員。在一個備份級群中悠抹,當(dāng)失效備援事件發(fā)生是,另一個成員會變成primary.

8 我應(yīng)該啟動一個集群分片(sharded)還是一個非集群分片的 Mongodb 環(huán)境?
數(shù)據(jù)量大用集群分片扩淀,數(shù)據(jù)量小用非集群楔敌。

為開發(fā)便捷起見,我們建議以非集群分片(unsharded)方式開始一個Mongodb環(huán)境驻谆,除非一臺服務(wù)器不足以存放你的初始數(shù)據(jù)集卵凑,從非集群分片升級到集群分片是無縫的庆聘,所以在你的數(shù)據(jù)集部署很大的時候沒必要考慮集群分片。

9.數(shù)據(jù)在什么時候才會擴(kuò)展到多個分片里勺卢?
Mongodb分片是基于區(qū)域的伙判,所以一個集合中的所有的對象都被存放在一個塊中,只有當(dāng)存在多余一個塊的時候黑忱,才會有多個分片獲取數(shù)據(jù)的選項宴抚,現(xiàn)在每個默認(rèn)塊的大小是64mb,所以至少64mb的空間才可以實施一個遷移甫煞。

10當(dāng)我試圖更新一個正在被遷移的塊(chunk)上的文檔時會發(fā)生什么?
更新操作會立即發(fā)生在舊的分片上菇曲,然后更改才會在所有全轉(zhuǎn)移前復(fù)制到新的分片中。

如果在一個分片(shard)停止或者很慢的時候,我發(fā)起一個查詢會怎樣?
如果一個分片停止了抚吠,除非查詢設(shè)置了“partial”選項常潮,否則查詢會返回一個錯誤,如果一個分片響應(yīng)很慢楷力,Mongodb則會等待他的響應(yīng)喊式。

可以把movechunk目錄里的舊文件刪除嗎?
沒問題,這些文件是在分片(shard)進(jìn)行均衡操作(balancing)的時候產(chǎn)生的臨時文件.一旦這些操作已經(jīng)完成,相關(guān)的臨時文件也應(yīng)該被刪除掉.但目前清理工作是需要手動的,所以請小心地考慮再釋放這些文件的空間.

48 如果塊移動操作(movechunk)失敗了,我需要手動清除部分轉(zhuǎn)移的文檔嗎?
不需要,移動操作是一致(consistent)并且是確定性的(deterministic);一次失敗后,移動操作會不斷重試;當(dāng)完成后,數(shù)據(jù)只會出現(xiàn)在新的分片里(shard).

49 Mongodb是否支持事務(wù)
MongoDB 4.0的新特性——事務(wù)(Transactions):MongoDB 是不支持事務(wù)的,因此開發(fā)者在需要用到事務(wù)的時候萧朝,不得不借用其他工具岔留,在業(yè)務(wù)代碼層面去彌補(bǔ)數(shù)據(jù)庫的不足。

事務(wù)和會話(Sessions)關(guān)聯(lián)剪勿,一個會話同一時刻只能開啟一個事務(wù)操作贸诚,當(dāng)一個會話斷開,這個會話中的事務(wù)也會結(jié)束厕吉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酱固,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子头朱,更是在濱河造成了極大的恐慌运悲,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项钮,死亡現(xiàn)場離奇詭異班眯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烁巫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門署隘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亚隙,你說我怎么就攤上這事磁餐。” “怎么了阿弃?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵诊霹,是天一觀的道長羞延。 經(jīng)常有香客問我,道長脾还,這世上最難降的妖魔是什么伴箩? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮鄙漏,結(jié)果婚禮上嗤谚,老公的妹妹穿的比我還像新娘。我一直安慰自己泥张,他們只是感情好呵恢,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著媚创,像睡著了一般渗钉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钞钙,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天鳄橘,我揣著相機(jī)與錄音,去河邊找鬼芒炼。 笑死瘫怜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的本刽。 我是一名探鬼主播鲸湃,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼子寓!你這毒婦竟也來了暗挑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤斜友,失蹤者是張志新(化名)和其女友劉穎炸裆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲜屏,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡烹看,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洛史。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惯殊。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖也殖,靈堂內(nèi)的尸體忽然破棺而出靠胜,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布浪漠,位于F島的核電站,受9級特大地震影響霎褐,放射性物質(zhì)發(fā)生泄漏址愿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一冻璃、第九天 我趴在偏房一處隱蔽的房頂上張望响谓。 院中可真熱鬧,春花似錦省艳、人聲如沸娘纷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赖晶。三九已至,卻和暖如春辐烂,著一層夾襖步出監(jiān)牢的瞬間遏插,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工纠修, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留胳嘲,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓扣草,卻偏偏與公主長得像了牛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辰妙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容