MongoDB數據庫核心概念
# MongoDB數據庫核心概念
## 1.NoSQL數據庫介紹
NoSQL意思是不僅僅是sql。
NoSQL指的是菲關系型數據庫,NoSQL有時稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據的統稱。
NoSQL就是非關聯形式的數據庫,數據存儲是key value形式。
NoSQL類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
## 2.MongoDB數據庫介紹
MongoDB由C++語言編寫,是一個基于分布式文件存儲的開源數據庫系統,是專為可擴展性、高性能和高可用性設計的數據庫,是非關系型數據庫中功能最豐富,最像關系型數據庫,MongoDB的數據結構是json和bjson格式。
MongoDB是可以應用于各種規模的企業,各個行業以及各類應用程序的開源數據庫,作為一個適用于敏捷開發的數據庫,MongoDB的數據模式可以隨著應用程序的發展靈活的更新。
隨著應用程序的更新,數據庫某張表可能需要增加一個或多個字段,而mysql這種關系型數據庫需要修改表結構,并且在更新成千上萬條數據,這個過程可能會導致數據庫死鎖,這種更新字段放到了非關系型數據庫mongodb中,就會變得非常簡單,只需要添加新字段后,新數據進來時應用即可,舊數據不會有變動,大大減少了數據庫的壓力。
MongoDB是一種叫做BSON(二進制JSON)的存儲形式作為數據存儲。
## 3.MongoDB支持的數據格式
### 3.1.JSON格式的數據類型
JSON是一種輕量級的數據交換格式,json采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣,這些特性使json成為理想的數據交換語言,易于人閱讀和編寫,同時也易于機器解析和生成。
MongoDB使用json文檔存儲記錄。
**json格式:**
`{
"id": "f274ef35-05a2-40c6-9b84-ff1e97702300",
"version": "7.6.2",
"hostname": "nginx-6b949875bc-hrzrp",
"ephemeral_id": "1025c85b-df07-4c4b-98d4-f5593293ef0e",
"type": "filebeat"
}`
json格式解析網站:https://www.bejson.com/
![\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lMJ0cFeY-1638239458838)(.\mongodb-筆記圖片存放\image-20210213095657806.png)\]](https://img-blog.csdnimg.cn/68bc2c0b0a5949119e0476136dc1df15.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmlhbmd4bH4=,size_20,color_FFFFFF,t_70,g_se,x_16)
### 3.2.BSON格式
BSON是一種類JSON的二進制形式的存儲格式,簡稱Binary JSON,它和json一樣,支持內嵌的文檔對象和數組對象,但是BSON有JSON沒有的一些數據類型,比如Date和BinData類型。
BSON的優點是靈活性高,但它的缺點就是空間利用率不是很理想。
BSON的特點:輕量性、可遍歷性、高效性。
## 4.MongoDB數據庫的特性
**高性能**
- MongoDB提供高性能的數據持久化,尤其是支持嵌入式數據模型減少數據庫系統上的I/O操作。
- MySQL需要查詢10張表,MongoDB一張表就可以搞定。
- 豐富的語言查詢,MongoDB支持豐富的查詢語言來進行讀寫操作以及數據匯總。
**高可用性**
- MongoDB的復制工具是副本集,提供自動故障轉移和數據冗余。
- MongoDB之前有主從復制,后來的主從復制集群稱之為副本集。
**水平可擴展性**
- MongoDB提供可擴展性,作為其核心功能的一部分,分片是將數據分散在一組機器上。
- MongoDB副本集擴容也無需像redis需要遷移槽位,MongoDB可以直接擴容
**支持多種存儲引擎**
- WiredTiger存儲引擎、MMAPv1存儲引擎和InMemory引擎。
## 5.MongoDB程序
MOngoDB Derives:客戶端程序
MongoDB Stitch:API服務
MongoDB Atlas:云上部署MongoDB
MongoDB Cloud Manager:管理MongoDB的軟件包
MongoDB Charts:可視化圖表
## 6.MongoDB應用場景
**游戲場景**
- 使用 MongoDB 存儲游戲用戶信息,用戶的裝備、積分等直接以內嵌文檔的形式存儲,方便查詢、更新。
**物流場景**
- 使用 MongoDB 存儲訂單信息,訂單狀態在運送過程中會不斷更新,以 MongoDB 內嵌數組的形式來存儲,一次查詢就能將訂單所有的變更讀取出來。
**社交場景**
- 使用 MongoDB 存儲存儲用戶信息,以及用戶發表的朋友圈信息,通過地理位置索引實現附近的人、地點等功能。
**物聯網場景**
- 使用 MongoDB 存儲所有接入的智能設備信息,以及設備匯報的日志信息,并對這些信息進行多維度的分析。
**視頻直播**
- 使用 MongoDB 存儲用戶信息、禮物信息等,用戶評論。
**電商場景**
- 商城上衣和褲子兩種商品,除了有共同屬性,如產地、價格、材質、顏色等外,還有各自有不同的屬性集,如上衣的獨有屬性是肩寬、胸圍、袖長等,褲子的獨有屬性是臀圍、腳口和褲長等。
MongoDB 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。