28個MongoDB資料庫精選面試題
MongoDB是目前最好的面向文件的免費開源NoSQL資料庫。如果你正準備參加MongoDB NoSQL資料庫的技術面試,你最好看看下面的MongoDB NoSQL面試問答。這些MongoDB NoSQL面試問答涵蓋了NoSQL資料庫基本的概念,複製(Replication),分片(Sharding),事務和鎖,跟蹤分析工具(Profiler),Nuances和日誌等特性。讓我們看看下面的這些MongoDB NoSQL資料庫的面試問答吧:
1. 你說的NoSQL資料庫是什麼意思?NoSQL與RDBMS直接有什麼區別?為什麼要使用和不使用NoSQL資料庫?說一說NoSQL資料庫的幾個優點?
我寫了一篇完整的部落格來回答這些問題,看這裡
2. NoSQL資料庫有哪些型別?
NoSQL資料庫的型別
例如:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort are the examples of NoSQL databases. 詳細閱讀。
3. MySQL與MongoDB之間最基本的差別是什麼?
MySQL和MongoDB兩者都是免費開源的資料庫。MySQL和MongoDB有許多基本差別包括資料的表示(data representation),查詢,關係,事務,schema的設計和定義,標準化(normalization),速度和效能。透過比較MySQL和MongoDB,實際上我們是在比較關係型和非關係型資料庫。詳細閱讀
4. 你怎麼比較MongoDB、CouchDB及CouchBase?
MongoDB和CouchDB都是面向文件的資料庫。MongoDB和CouchDB都是開源NoSQL資料庫的最典型代表。 除了都以文件形式儲存外它們沒有其他的共同點。MongoDB和CouchDB在資料模型實現、介面、物件儲存以及複製方法等方面有很多不同。
5. MongoDB成為最好NoSQL資料庫的原因是什麼?
以下特點使得MongoDB成為最好的NoSQL資料庫:
-
面向檔案的,高效能,高可用性,易擴充套件性,豐富的查詢語言
6.32位系統上有什麼細微差別?
journaling會啟用額外的記憶體對映檔案。這將進一步抑制32位版本上的資料庫大小。因此,現在journaling在32位系統上預設是禁用的。
7. journal回放在條目(entry)不完整時(比如恰巧有一箇中途故障了)會遇到問題嗎?
每個journal (group)的寫操作都是一致的,除非它是完整的否則在恢復過程中它不會回放。
8. 分析器在MongoDB中的作用是什麼?
MongoDB中包括了一個可以顯示資料庫中每個操作效能特點的資料庫分析器。透過這個分析器你可以找到比預期慢的查詢(或寫操作);利用這一資訊,比如,可以確定是否需要新增索引。
9. 名字空間(namespace)是什麼?
MongoDB儲存BSON物件在叢集(collection)中。資料庫名字和叢集名字以句點連結起來叫做名字空間(namespace)。
10. 如果使用者移除物件的屬性,該屬性是否從儲存層中刪除?
是的,使用者移除屬性然後物件會重新儲存(re-save())。
11. 能否使用日誌特徵進行安全備份?
是的。
12. 允許空值null嗎?
對於物件成員而言,是的。然而使用者不能夠新增空值(null)到資料庫叢集(collection)因為空值不是物件。然而使用者能夠新增空物件{}。
13. 更新操作立刻fsync到磁碟?
不會,磁碟寫操作預設是延遲執行的。寫操作可能在兩三秒(預設在60秒內)後到達磁碟。例如,如果一秒內資料庫收到一千個對一個物件遞增的操作,僅重新整理磁碟一次。(注意,儘管fsync選項在命令列和經過getLastError_old是有效的)(譯者:也許是坑人的面試題??)。
14. 如何執行事務/加鎖?
MongoDB沒有使用傳統的鎖或者複雜的帶回滾的事務,因為它設計的宗旨是輕量,快速以及可預計的高效能。可以把它類比成MySQL MylSAM的自動提交模式。透過精簡對事務的支援,效能得到了提升,特別是在一個可能會穿過多個伺服器的系統裡。
15. 為什麼我的資料檔案如此龐大?
MongoDB會積極的預分配預留空間來防止檔案系統碎片。
16. 啟用備份故障恢復需要多久?
從備份資料庫宣告主資料庫當機到選出一個備份資料庫作為新的主資料庫將花費10到30秒時間。這期間在主資料庫上的操作將會失敗--包括寫入和強一致性讀取(strong consistent read)操作。然而,你還能在第二資料庫上執行最終一致性查詢(eventually consistent query)(在slaveOk模式下),即使在這段時間裡。
17. 什麼是master或primary?
它是當前備份叢集(replica set)中負責處理所有寫入操作的主要節點/成員。在一個備份叢集中,當失效備援(failover)事件發生時,一個另外的成員會變成primary。
18. 什麼是secondary或slave?
Seconday從當前的primary上覆制相應的操作。它是透過跟蹤複製oplog(local.oplog.rs)做到的。
19. 我必須呼叫getLastError來確保寫操作生效了麼?
不用。不管你有沒有呼叫getLastError(又叫"Safe Mode")伺服器做的操作都一樣。呼叫getLastError只是為了確認寫操作成功提交了。當然,你經常想得到確認,但是寫操作的安全性和是否生效不是由這個決定的。
20. 我應該啟動一個叢集分片(sharded)還是一個非叢集分片的 MongoDB 環境?
為開發便捷起見,我們建議以非叢集分片(unsharded)方式開始一個 MongoDB 環境,除非一臺伺服器不足以存放你的初始資料集。從非叢集分片升級到叢集分片(sharding)是無縫的,所以在你的資料集還不是很大的時候沒必要考慮叢集分片(sharding)。
21. 分片(sharding)和複製(replication)是怎樣工作的?
每一個分片(shard)是一個分割槽資料的邏輯集合。分片可能由單一伺服器或者叢集組成,我們推薦為每一個分片(shard)使用叢集。
22. 資料在什麼時候才會擴充套件到多個分片(shard)裡?
MongoDB 分片是基於區域(range)的。所以一個集合(collection)中的所有的物件都被存放到一個塊(chunk)中。只有當存在多餘一個塊的時候,才會有多個分片獲取資料的選項。現在,每個預設塊的大小是 64Mb,所以你需要至少 64 Mb 空間才可以實施一個遷移。
23. 當我試圖更新一個正在被遷移的塊(chunk)上的文件時會發生什麼?
更新操作會立即發生在舊的分片(shard)上,然後更改才會在所有權轉移(ownership transfers)前複製到新的分片上。
24. 如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?
如果一個分片(shard)停止了,除非查詢設定了“Partial”選項,否則查詢會返回一個錯誤。如果一個分片(shard)響應很慢,MongoDB則會等待它的響應。
25. 我可以把moveChunk目錄裡的舊檔案刪除嗎?
沒問題,這些檔案是在分片(shard)進行均衡操作(balancing)的時候產生的臨時檔案。一旦這些操作已經完成,相關的臨時檔案也應該被刪除掉。但目前清理工作是需要手動的,所以請小心地考慮再釋放這些檔案的空間。
26. 我怎麼檢視 Mongo 正在使用的連結?
db._adminCommand("connPoolStats");
27. 如果塊移動操作(moveChunk)失敗了,我需要手動清除部分轉移的文件嗎?
不需要,移動操作是一致(consistent)並且是確定性的(deterministic);一次失敗後,移動操作會不斷重試;當完成後,資料只會出現在新的分片裡(shard)。
28. 如果我在使用複製技術(replication),可以一部分使用日誌(journaling)而其他部分則不使用嗎?
可以。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1877863/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 28個MongoDB NoSQL資料庫的面試問答MongoDBSQL資料庫面試
- 轉載:JAVA企業面試題精選 資料庫1-10Java面試題資料庫
- 轉載: JAVA企業面試題精選 資料庫11-20Java面試題資料庫
- 面經精選:資料庫高頻面試十問資料庫面試
- 26個精選的JavaScript面試問題JavaScript面試
- iOS面試題精選iOS面試題
- 2018年--阿里大資料面試題(部分精選)阿里大資料面試題
- Redis面試題-Redis 16個資料庫Redis面試題資料庫
- Java併發面試題精選Java面試題
- MongoDB資料庫經典面試問答MongoDB資料庫面試
- 資料庫面試題資料庫面試題
- MongoDB 資源、庫、工具、應用程式精選列表中文版MongoDB
- 最新精選Java面試題,附答案!Java面試題
- 面試系列二:精選大資料面試真題JVM專項-附答案詳細解析面試大資料JVM
- 50+ 精選資料結構和演算法面試問題 【譯】資料結構演算法面試
- 資料庫面試題型資料庫面試題
- 20個資料庫常見面試題講解資料庫面試題
- jQuery經典面試題及答案精選jQuery面試題
- MySQL精選60道面試題 ( 含答案 )MySql面試題
- MongoDB資料庫MongoDB資料庫
- 資料庫面試題總結資料庫面試題
- Java_資料庫面試題Java資料庫面試題
- 資料庫面試題(開發者必看)資料庫面試題
- 機器學習資料精選機器學習
- MongoDB 面試題MongoDB面試題
- 24個必須掌握的資料庫面試問題~資料庫面試
- 資料庫面試時常見的26個問題資料庫面試
- 面試常問的20個資料庫高頻面試題詳解!資料庫面試題
- 27道Redis精選面試題,你會做幾題?Redis面試題
- 面試精選之Promise面試Promise
- 11個高階MySQL資料庫面試問題和答案MySql資料庫面試
- MongoDB 資料庫操作MongoDB資料庫
- mongodb資料庫操作MongoDB資料庫
- nodejs操作mongodb資料庫(mongodb)NodeJSMongoDB資料庫
- mongodb資料庫中插入資料MongoDB資料庫
- 2021精選 Java面試題附答案(一)Java面試題
- 「面試必問」leetcode高頻題精選面試LeetCode
- 精選30道Java多執行緒面試題Java執行緒面試題