MongoDB appendix
- mongo 是數據庫shell。通常假定它和mongod 運行在同一臺機器上,還假定mongod 綁定了默認端口。 eg. mongo staging.example.com:20000,這樣就會鏈接運行在staging.example.com上端口爲20000的mongod。 eg. mongo localhost:27017/admin, 鏈接本地默認端口的mongod,使用admin數據庫(默認使用test數據庫)。 eg. mongo --nodb, 啓動shell而不鏈接數據庫。
- 從shell能夠鏈接任意多個數據庫。eg. mongos = connect("localhost:27017") ,connecting to :localhost:27017 ; shard0 = connect("localhost:30000") , connecting to: localhost:30000; shard1 = connect("localhost:30001"), connecting to: localhost: 30001; 隨後,mongos、shard0、shard1能夠做爲db變量使用。
- mongod 核心的數據庫服務器。能夠做爲單個服務器,主從節點、副本集的成員,還能夠作片。一般就是所須要的mongoDB進程。
- BSON:mongoDB的文檔是個抽象概念。其具體的呈現形式取決於所用的驅動和編程語言。 由於mongoDB中的通訊大量依賴於文檔,因此須要一種全部驅動、工具、進程都能共享的文檔表達方式。這種表達方式叫BSON(Binary JSON)。
- BSON 是一種輕量的二進制格式。能將mongodb的全部文檔表示爲字節字符串。數據庫能理解BSON。存在磁盤上的文檔也是這種格式。
- 當驅動要插入文檔,或是將文檔做爲查詢條件,驅動會將文檔轉換爲BSON,而後發往服務器。
- 一樣,返回客戶端的文檔也是BSON格式的字符串。驅動須要將這些數據解碼,變成本機的文檔表示。最後返回給客戶端。
- BSON效率高(更有效的表示數據、佔用空間少)、可遍歷性(字符串前面加入字符串長度)強、性能好(編碼和解碼速度快)。
- mongodb 的數據目錄中,每一個數據庫都有幾個獨立的文件。一個.ns文件和若干個數據文件,數據文件以遞增的數字結尾。每一個新的以數字結尾的數據文件大小會加倍。
- 在數據文件內部,每一個數據庫都是按命名空間組織的。一種類別的數據和其它類別的分開存放。 每一個集合的文檔都有本身的命名空間。索引也是。命名空間的元數據存放在數據庫的.ns 文件中。
- 存儲引擎:mongodb默認的存儲引擎是內存映射引擎。
- 當服務器啓動時,將全部數據文件映射到內存。 而後由操做系統負責將緩衝數據寫入磁盤,並將數據調入調出內存頁面。 這樣的引擎有若干特徵:
-
- mongodb 服務器進程的虛擬大小一般會很大。超過了整個數據集的大小。這沒有關係,由於操做系統會處理讓哪些數據常駐內存。
- mongodb不能控制寫入到磁盤的順序。
- 32位的mongodb服務器有個限制,每一個mongod 最多隻能處理2GB數據。由於全部數據必須能用32位地址空間訪問到。
- mongodb管理內存的代碼很是精煉。由於大部分工做給了操做系統。
歡迎關注本站公眾號,獲取更多信息