MongoDB實戰第二版筆記(13)第十二章筆記

  1、MongoDB把超大數據使用更小的片進行分區存儲,這樣就無需在單個機器上存儲所有數據或承擔全部壓力。

  2、對分片集羣的查詢與可複製或者單個mongod服務器實例的查詢完全一樣。

  3、分片把大型數據集進行分區成更小的可管理的片的過程,能幫助應用程序進行擴展,然而增加了管理和性能的開銷。

  4、存儲分佈式。MongoDB默認數據存儲在最初dbpath參數指定的路徑。運行db.stats()和db.collection.stats()會分別輸出當前數據庫和集合的存儲使用信息。

  5、分片集羣由分片、mongos路由器和配置服務器組成。

  • 分片:存儲應用程序的數據。在分片集羣中,只有mongos路由器或者系統管理員可以直接連接分片服務器節點。與部分片的部署一樣,每個分片可以單獨作爲開發和測試的節點,但生產環境下應該是可複製集。
  • mongos路由器:緩存集羣的元數據並使用它來路由操作到正確的分片服務器。
  • 配置服務器:一直存儲集羣的元數據,包括哪些分片包含哪些數據集
    在這裏插入圖片描述

  6、分片是分片集羣中應用程序數據存儲的唯一位置。每個分片包含的只是總數據的一部分,需要mongos來路由操作到適當的片上,mongos是可以直接轉發所有讀、寫命令到正確的分片上的路由器。而mongos進程是輕量級非持久化的,需要配置服務器存儲集羣的元數據,通常部署在應用程序服務器上以確保只有一個網絡躍點來轉發請求。應用程序連接本地的mongos,而mongos管理與每個分片服務器的連接。

  7、配置服務器保存的元數據是集羣正常工作和更新維護的關鍵。

  MongoDB數據結構

在這裏插入圖片描述

  8、MongoDB中不同數據單位

  • 文檔:最小數據單元,表示系統不能再分了的單個對象。
  • 塊:根據每個字段的值集羣的一組文檔,是集羣組裏存在的概念,根據一組字段的值進行邏輯分組,這些字段被稱爲分片鍵。
  • 集合:數據庫一組命名的文檔。允許用戶把數據庫分組爲有意義的邏輯組,MongoDB提供了集合概念。集合必須被應用顯示指定才能進行查詢。
  • 數據庫:包含文檔的集合,是系統最頂級的命名組。因爲數據庫包含文檔的集合,所以集合也必須指定在文檔上執行的操作。組合數據庫名字和集合的名字提供了系統中的唯一性也叫命名空間。通常是集合名字和數據庫名字連接在一起,用圓點分割。比如cloud-docs.spreadsheets.

  9、數據可以分佈到集羣中的四個分組中的2個上:

  • 在整個數據庫級別。每個數據庫的所有集合都存在自己的分片上。
  • 分區或集合分塊級別。集合裏的文檔都被分散多個片上,根據某個或者多個字段字(分片鍵)進行分片

  10、設置分片集羣的完整過程的三個步驟:

  • 啓動mongod和mongos服務器。啓動組成分片集羣的單個進程mongod和mongos。
  • 配置集羣。更新配置信息,這樣可複製集就可以初始化並且添加分片到集羣裏,在此之後,節點就可以互相通信。
  • 分片集羣。分片一個集合,這樣就可以分散到多個片上。這個步驟單獨分開的原因,MongoDB在同一個集羣裏存在分片和不分片的集合,必須明確告訴集羣要分片的集合

  11、目標查詢。如果查詢中包含分片鍵,mongos就可以快速諮詢數據塊數據來確定屬於哪個分片。

  12、全局或分散/集中查詢。如果查詢的分片鍵不屬於查詢,查詢集合就必須訪問所有的分片服務器以填充查詢。
在這裏插入圖片描述

  13、分片集羣索引的要點

  • 每個分片維護自己的索引。當在分片集合上聲明索引時,每個分片都會爲自己的集合部分定義單獨的索引。
  • 遵循分片集合在每個分片上應該擁有相同的索引原則。如果不是,就無法保證查詢性能的一致性。
  • 分片集合只允許在_id字段和分片鍵上建立唯一索引。禁止其他地方建立唯一索引,因爲強制唯一性需要在分片之間進行通信【由MongoDB分片集羣底層工作機制決定】。

  14、explain()根據是首選的解決問題和優化查詢的根據。可以顯示查詢執行的精確路徑,包括指明是否目標性查詢和是否使用索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章