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默認的存儲引擎是內存映射引擎。                                                                                                        
  • 當服務器啓動時,將全部數據文件映射到內存。        而後由操做系統負責將緩衝數據寫入磁盤,並將數據調入調出內存頁面。   這樣的引擎有若干特徵:
    1. mongodb 服務器進程的虛擬大小一般會很大。超過了整個數據集的大小。這沒有關係,由於操做系統會處理讓哪些數據常駐內存。   
    2. mongodb不能控制寫入到磁盤的順序。
    3. 32位的mongodb服務器有個限制,每一個mongod 最多隻能處理2GB數據。由於全部數據必須能用32位地址空間訪問到。
    4. mongodb管理內存的代碼很是精煉。由於大部分工做給了操做系統。                                                             
相關文章
相關標籤/搜索