20200421 NoSQL筆記(八)
時間 2021-01-18
標籤
NoSQL數據庫
第八章 MongoDB實戰
一、 MongoDB數據存儲格式
- JSON
- JSON概述:
JSON:JavaScript Object Notation(JavaScript對象表示法)
JSON是存儲和交換文本信息的語法,類似 XML
JSON數據庫語句可以容易被解析
Web應用大量使用
NAME-VALUE配對
MongoDB第一版支持
- JSON語法:
JSON就是一串字符串 只不過元素會使用特定的符號標註
{} 雙括號表示對象
[] 中括號表示數組
「」 雙引號內是屬性或值
: 冒號表示後者是前者的值(這個值可以是字符串、數字、也可以是另一個數組或對象)
- BSON
- BSON是一種類JSON的二進制編碼存儲形式,簡稱Binary JSON
- BSON和JSON一樣,支持內嵌的文檔對象和數組對象
- BSON有JSON沒有的一些數據類型,如Date和BinData類型
二、 MongoDB的關鍵特性
- 高性能
- MongoDB提供高性能的數據持久化。尤其是支持嵌入式數據模型,可減少數據庫系統上的I/O活動。
- 索引支持更快的查詢,包括嵌入式文檔和數組的鍵
- 豐富的查詢語言
- MongoDB支持豐富的查詢語言:
普通查詢、條件查詢、limit限制結果集數量、高級查詢
- 支持讀寫操作、數據聚合、文本搜索和地理空間查詢
- 高可用性和數據持久化
- MongoDB的複製集(副本集)提供:
數據冗餘,自動故障轉移
- 數據持久化:
副本集是一組保持相同數據集的MongoDB服務器,提供冗餘增加數據可用性
- 水平可擴展
- MongoDB的缺點
- 空間的預分配;
- 字段名所佔用的空間
- 刪除記錄不能釋放空間
三、 MongoDB的數據邏輯結構
-
層次關係
文檔(document)、集合(collection)、數據庫(database)、實例
-
數據庫命名的規則
- 不能是空字符串
- 不能含有空格,$,/,\,\0
- 全部小寫
- 最多64個字節
- 不能與系統保留庫同名,如admin,local以及config
四、 MongoDB架構部署
部署模型演化:MongoDB部署可以從簡單逐步演化到非常強大也相當複雜
- 主從操作日誌oplog
- MongoDB的Replica Set架構是通過一個日誌oplog來存儲寫操作的
- 從節點主動從主服務器上獲取oplog。執行進而完成增量式的數據同步
- 主從集羣可以使用單臺也可以使用多臺,但一般不超過個位數
- 副本集
- 副本集是一種進化的主從結構,可以將副本集看做一個整體。
- 副本集自動會選舉一個活動active節點。這個節點被用來直接訪問。其他副本則成爲從服務器進行數據同步
- 當活動節點整體失效時,副本集自動選舉一個新的active節點來提供服務。
- 分片部署集羣
MongoDB創建一個分片集羣需要三種角色:
- 分片服務器用於存儲數據的分片,每個分片可以是一個實例或實例的副本集
- 配置服務器分用於存儲所有分片節點的配置信息、每個數據塊的分片鍵範圍、每個數據塊在分片的分佈情況、該集羣中所有數據庫和集合的分片的配置信息
- 路由進程是前段路由,客戶端由前段路由進入訪問
- 副本集與分片集羣結合
- 分片:
使用副本集,確保每個數據節點都具有備份、自動容錯轉移和自動恢復能力
- 配置服務器:使用三個配置服務器,確保元數據的完整性
- 路由進程:使用三個路由進程,實現負載平衡,提高客戶端接入性能。
五、 MongoDB應用場景
- 遊戲場景
使用MongoDB存儲遊戲用戶信息,用戶的裝備、積分等直接以內嵌文檔的形式存儲,方便查詢、更新。
- 物流場景
使用MongoDB存儲訂單信息,訂單狀態在運送過程中會不斷更新,以MongoDB內嵌數組的形式來存儲,一次查詢就能將訂單所 有的變更讀取出來。
- 社交場景
使用MongoDB存儲存儲用戶信息,以及用戶發表的朋友圈信息, 通過地理位置索引實現附近的人、地點等功能。
- 物聯網場景
使用MongoDB存儲所有接入的智能設備信息,以及設備彙報 的日誌信息,並對這些信息進行多維度的分析。
- 視頻直播 使用MongoDB存儲用戶信息、禮物信息等。