20200421 NoSQL筆記(八)

第八章 MongoDB實戰
一、 MongoDB數據存儲格式

  1. JSON
  1. JSON概述:
     JSON:JavaScript Object Notation(JavaScript對象表示法)
     JSON是存儲和交換文本信息的語法,類似 XML
     JSON數據庫語句可以容易被解析
     Web應用大量使用
     NAME-VALUE配對
     MongoDB第一版支持
  2. JSON語法:
    JSON就是一串字符串 只不過元素會使用特定的符號標註
     {} 雙括號表示對象
     [] 中括號表示數組
     「」 雙引號內是屬性或值
     : 冒號表示後者是前者的值(這個值可以是字符串、數字、也可以是另一個數組或對象)
  1. BSON
  1. BSON是一種類JSON的二進制編碼存儲形式,簡稱Binary JSON
  2. BSON和JSON一樣,支持內嵌的文檔對象和數組對象
  3. BSON有JSON沒有的一些數據類型,如Date和BinData類型

二、 MongoDB的關鍵特性

  1. 高性能
  1. MongoDB提供高性能的數據持久化。尤其是支持嵌入式數據模型,可減少數據庫系統上的I/O活動。
  2. 索引支持更快的查詢,包括嵌入式文檔和數組的鍵
  1. 豐富的查詢語言
  1. MongoDB支持豐富的查詢語言:
    普通查詢、條件查詢、limit限制結果集數量、高級查詢
  2. 支持讀寫操作、數據聚合、文本搜索和地理空間查詢
  1. 高可用性和數據持久化
  1. MongoDB的複製集(副本集)提供:
    數據冗餘,自動故障轉移
  2. 數據持久化:
    副本集是一組保持相同數據集的MongoDB服務器,提供冗餘增加數據可用性
  1. 水平可擴展
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. MongoDB的缺點
  1. 空間的預分配;
  2. 字段名所佔用的空間
  3. 刪除記錄不能釋放空間

三、 MongoDB的數據邏輯結構

  1. 層次關係
    文檔(document)、集合(collection)、數據庫(database)、實例
    在這裏插入圖片描述

  2. 數據庫命名的規則

  1. 不能是空字符串
  2. 不能含有空格,$,/,\,\0
  3. 全部小寫
  4. 最多64個字節
  5. 不能與系統保留庫同名,如admin,local以及config

四、 MongoDB架構部署
部署模型演化:MongoDB部署可以從簡單逐步演化到非常強大也相當複雜
在這裏插入圖片描述

  1. 主從操作日誌oplog
  1. MongoDB的Replica Set架構是通過一個日誌oplog來存儲寫操作的
  2. 從節點主動從主服務器上獲取oplog。執行進而完成增量式的數據同步
  3. 主從集羣可以使用單臺也可以使用多臺,但一般不超過個位數
  1. 副本集
  1. 副本集是一種進化的主從結構,可以將副本集看做一個整體。
  2. 副本集自動會選舉一個活動active節點。這個節點被用來直接訪問。其他副本則成爲從服務器進行數據同步
  3. 當活動節點整體失效時,副本集自動選舉一個新的active節點來提供服務。
  1. 分片部署集羣
    MongoDB創建一個分片集羣需要三種角色:
  1. 分片服務器用於存儲數據的分片,每個分片可以是一個實例或實例的副本集
  2. 配置服務器分用於存儲所有分片節點的配置信息、每個數據塊的分片鍵範圍、每個數據塊在分片的分佈情況、該集羣中所有數據庫和集合的分片的配置信息
  3. 路由進程是前段路由,客戶端由前段路由進入訪問
  1. 副本集與分片集羣結合
  1. 分片:
    使用副本集,確保每個數據節點都具有備份、自動容錯轉移和自動恢復能力
  2. 配置服務器:使用三個配置服務器,確保元數據的完整性
  3. 路由進程:使用三個路由進程,實現負載平衡,提高客戶端接入性能。

五、 MongoDB應用場景

  1. 遊戲場景
    使用MongoDB存儲遊戲用戶信息,用戶的裝備、積分等直接以內嵌文檔的形式存儲,方便查詢、更新。
  2. 物流場景
    使用MongoDB存儲訂單信息,訂單狀態在運送過程中會不斷更新,以MongoDB內嵌數組的形式來存儲,一次查詢就能將訂單所 有的變更讀取出來。
  3. 社交場景
    使用MongoDB存儲存儲用戶信息,以及用戶發表的朋友圈信息, 通過地理位置索引實現附近的人、地點等功能。
  4. 物聯網場景
    使用MongoDB存儲所有接入的智能設備信息,以及設備彙報 的日誌信息,並對這些信息進行多維度的分析。
  5. 視頻直播 使用MongoDB存儲用戶信息、禮物信息等。