天天看點

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/

MongoDB資料庫核心概念

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 存儲使用者資訊、禮物資訊等,使用者評論。
  • 商城上衣和褲子兩種商品,除了有共同屬性,如産地、價格、材質、顔色等外,還有各自有不同的屬性集,如上衣的獨有屬性是肩寬、胸圍、袖長等,褲子的獨有屬性是臀圍、腳口和褲長等。