資料庫面試題--MongoDB
MongoDB
- 1.什麼是MongoDB?
- 2.MongoDB的優勢有哪些
- 3.什麼是集合(表)?
- 4.什麼是文件(記錄)
- 5.為什麼用MOngoDB?
- 6.在哪些場景使用MongoDB
- 7.MongoDB中的名稱空間是什麼意思?
- 8.MongoDB中的分片什麼意思
- 9.為什麼要在MongoDB中使用分析器
- 10.MongoDB支援主鍵外來鍵關係嗎
- 11.MongoDB支援哪些資料型別
- 12.為什麼要在MongoDB中用"Code"資料型別
- 13.為什麼要在MongoDB中用"Regular Expression"資料型別
- 14.為什麼在MongoDB中使用"Object ID"資料型別
- 15."ObjectID"有哪些部分組成
- 16.在MongoDb中什麼是索引
- 17.在MongoDB中什麼是副本集
- 18.MongoDB支援儲存過程嗎?如果支援的話,怎麼用?
- 19.如何理解MongoDB中的GridFS機制,MongoDB為何使用GridFS來儲存檔案?
- 20.為什麼MongoDB的資料檔案很大?
1.什麼是MongoDB?
MongoDB是一個文件資料庫,提供好的效能,領先的非關係型資料庫。採用BSON儲存文件資料。
BSON()是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON
相對於json多了date型別和二進位制陣列。
2.MongoDB的優勢有哪些
面向文件的儲存:以 JSON 格式的文件儲存資料。
任何屬性都可以建立索引。
複製以及高可擴充套件性。
自動分片。
豐富的查詢功能。
快速的即時更新。
3.什麼是集合(表)?
集合就是一組 MongoDB文件。它相當於關係型資料庫(RDBMS)中的表這種概念。集合位於單獨的一個數據庫中。
一個集合內的多個文件可以有多個不同的欄位。一般來說,集合中的文件都有著相同或相關的目的。
4.什麼是文件(記錄)
文件由一組key value組成。文件是動態模式,這意味著同一集合裡的文件不需要有相同的欄位和結構。在關係型資料庫中table中的每一條記錄相當於MongoDB中的一個文件。
5.為什麼用MOngoDB?
架構簡單
沒有複雜的連線
深度查詢能力,MongoDB支援動態查詢。
容易除錯
容易擴充套件
不需要轉化/對映應用物件到資料庫物件
使用內部記憶體作為儲存工作區,以便更快的存取資料。
6.在哪些場景使用MongoDB
大資料
內容管理系統
移動端Apps
資料管理
7.MongoDB中的名稱空間是什麼意思?
mongodb儲存bson物件在叢集(collection)中,資料庫名字和叢集名字以句點連結起來叫做名字空間(namespace)。
一個集合名稱空間又有多個數據域(extent),集合名稱空間裡儲存著集合的元資料,比如集合名稱,集合的第一個資料域和最後一個數據域的位置等等。而一個數據域由若干條文件(document)組成,每個資料域都有一個頭部,記錄著第一條文件和最後一條文件的為知,以及該資料域的一些元資料。extent之間,document之間通過雙向連結串列連線。
索引的儲存資料結構是B樹,索引名稱空間儲存著對B樹的根節點的指標。
8.MongoDB中的分片什麼意思
分片是將資料水平切分到不同的物理節點。當應用資料越來越大的時候,資料量也會越來越大。當資料量增長時,單臺機器有可能無法儲存資料或可接受的讀取寫入吞吐量。利用分片技術可以新增更多的機器來應對資料量增加以及讀寫操作的要求。
9.為什麼要在MongoDB中使用分析器
mongodb中包括了一個可以顯示資料庫中每個操作效能特點的資料庫分析器.通過這個分析器你可以找到比預期慢的查詢(或寫操作);利用這一資訊,比如,可以確定是否需要新增索引。
10.MongoDB支援主鍵外來鍵關係嗎
預設MongoDB不支援主鍵和外來鍵關係。 用Mongodb本身的API需要硬編碼才能實現外來鍵關聯,不夠直觀且難度較大。
11.MongoDB支援哪些資料型別
String
Integer
Double
Boolean
Object
Object ID
Arrays
Min/Max Keys
Datetime
Code
Regular Expression等
12.為什麼要在MongoDB中用"Code"資料型別
"Code"型別用於在文件中儲存 JavaScript 程式碼。
13.為什麼要在MongoDB中用"Regular Expression"資料型別
"Regular Expression"型別用於在文件中儲存正則表示式
14.為什麼在MongoDB中使用"Object ID"資料型別
"ObjectID"資料型別用於儲存文件id
15."ObjectID"有哪些部分組成
一共有四部分組成:時間戳、客戶端ID、客戶程序ID、三個位元組的增量計數器
16.在MongoDb中什麼是索引
索引用於高效的執行查詢,沒有索引的MongoDB將掃描整個集合中的所有文件,這種掃描效率很低,需要處理大量的資料。
索引是一種特殊的資料結構,將一小塊資料集合儲存為容易遍歷的形式.索引能夠儲存某種特殊欄位或欄位集的
值,並按照索引指定的方式將欄位值進行排序。
17.在MongoDB中什麼是副本集
在MongoDB中副本集由一組MongoDB例項組成,包括一個主節點多個次節點,MongoDB客戶端的所有資料都寫入主節點(Primary),副節點從主節點同步寫入資料,以保持所有複製集記憶體儲相同的資料,提高資料可用性。
18.MongoDB支援儲存過程嗎?如果支援的話,怎麼用?
MongoDB支援儲存過程,它是javascript寫的,儲存在db.system.js表中。
19.如何理解MongoDB中的GridFS機制,MongoDB為何使用GridFS來儲存檔案?
GridFS是一種將大型檔案儲存在MongoDB中的檔案規範。使用GridFS可以將大檔案分隔成多個小文件存放,這樣我們能夠有效的儲存大文件,而且解決了BSON物件有限制的問題。
20.為什麼MongoDB的資料檔案很大?
MongoDB採用的預分配空間的方式來防止檔案碎片。