關(guān)于MongoDB數(shù)據(jù)庫核心概念
MongoDB數(shù)據(jù)庫核心概念
1.NoSQL數(shù)據(jù)庫介紹
NoSQL意思是不僅僅是sql。
NoSQL指的是菲關(guān)系型數(shù)據(jù)庫,NoSQL有時(shí)稱作Not Only SQL的縮寫,是對不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)的統(tǒng)稱。
NoSQL就是非關(guān)聯(lián)形式的數(shù)據(jù)庫,數(shù)據(jù)存儲是key value形式。
NoSQL類型的數(shù)據(jù)存儲不需要固定的模式,無需多余操作就可以橫向擴(kuò)展。
2.MongoDB數(shù)據(jù)庫介紹
MongoDB由C++語言編寫,是一個(gè)基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng),是專為可擴(kuò)展性、高性能和高可用性設(shè)計(jì)的數(shù)據(jù)庫,是非關(guān)系型數(shù)據(jù)庫中功能最豐富,最像關(guān)系型數(shù)據(jù)庫,MongoDB的數(shù)據(jù)結(jié)構(gòu)是json和bjson格式。
MongoDB是可以應(yīng)用于各種規(guī)模的企業(yè),各個(gè)行業(yè)以及各類應(yīng)用程序的開源數(shù)據(jù)庫,作為一個(gè)適用于敏捷開發(fā)的數(shù)據(jù)庫,MongoDB的數(shù)據(jù)模式可以隨著應(yīng)用程序的發(fā)展靈活的更新。
隨著應(yīng)用程序的更新,數(shù)據(jù)庫某張表可能需要增加一個(gè)或多個(gè)字段,而mysql這種關(guān)系型數(shù)據(jù)庫需要修改表結(jié)構(gòu),并且在更新成千上萬條數(shù)據(jù),這個(gè)過程可能會導(dǎo)致數(shù)據(jù)庫死鎖,這種更新字段放到了非關(guān)系型數(shù)據(jù)庫mongodb中,就會變得非常簡單,只需要添加新字段后,新數(shù)據(jù)進(jìn)來時(shí)應(yīng)用即可,舊數(shù)據(jù)不會有變動,大大減少了數(shù)據(jù)庫的壓力。
MongoDB是一種叫做BSON(二進(jìn)制JSON)的存儲形式作為數(shù)據(jù)存儲。
3.MongoDB支持的數(shù)據(jù)格式
3.1.JSON格式的數(shù)據(jù)類型
JSON是一種輕量級的數(shù)據(jù)交換格式,json采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣,這些特性使json成為理想的數(shù)據(jù)交換語言,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。
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格式解析網(wǎng)站:https://www.bejson.com/
3.2.BSON格式
BSON是一種類JSON的二進(jìn)制形式的存儲格式,簡稱Binary JSON,它和json一樣,支持內(nèi)嵌的文檔對象和數(shù)組對象,但是BSON有JSON沒有的一些數(shù)據(jù)類型,比如Date和BinData類型。
BSON的優(yōu)點(diǎn)是靈活性高,但它的缺點(diǎn)就是空間利用率不是很理想。
BSON的特點(diǎn):輕量性、可遍歷性、高效性。
4.MongoDB數(shù)據(jù)庫的特性
高性能
- MongoDB提供高性能的數(shù)據(jù)持久化,尤其是支持嵌入式數(shù)據(jù)模型減少數(shù)據(jù)庫系統(tǒng)上的I/O操作。
- MySQL需要查詢10張表,MongoDB一張表就可以搞定。
- 豐富的語言查詢,MongoDB支持豐富的查詢語言來進(jìn)行讀寫操作以及數(shù)據(jù)匯總。
高可用性
- MongoDB的復(fù)制工具是副本集,提供自動故障轉(zhuǎn)移和數(shù)據(jù)冗余。
- MongoDB之前有主從復(fù)制,后來的主從復(fù)制集群稱之為副本集。
水平可擴(kuò)展性
- MongoDB提供可擴(kuò)展性,作為其核心功能的一部分,分片是將數(shù)據(jù)分散在一組機(jī)器上。
- MongoDB副本集擴(kuò)容也無需像redis需要遷移槽位,MongoDB可以直接擴(kuò)容
支持多種存儲引擎
- WiredTiger存儲引擎、MMAPv1存儲引擎和InMemory引擎。
5.MongoDB程序
MOngoDB Derives:客戶端程序
MongoDB Stitch:API服務(wù)
MongoDB Atlas:云上部署MongoDB
MongoDB Cloud Manager:管理MongoDB的軟件包
MongoDB Charts:可視化圖表
6.MongoDB應(yīng)用場景
游戲場景
- 使用 MongoDB 存儲游戲用戶信息,用戶的裝備、積分等直接以內(nèi)嵌文檔的形式存儲,方便查詢、更新。
物流場景
- 使用 MongoDB 存儲訂單信息,訂單狀態(tài)在運(yùn)送過程中會不斷更新,以 MongoDB 內(nèi)嵌數(shù)組的形式來存儲,一次查詢就能將訂單所有的變更讀取出來。
社交場景
- 使用 MongoDB 存儲存儲用戶信息,以及用戶發(fā)表的朋友圈信息,通過地理位置索引實(shí)現(xiàn)附近的人、地點(diǎn)等功能。
物聯(lián)網(wǎng)場景
- 使用 MongoDB 存儲所有接入的智能設(shè)備信息,以及設(shè)備匯報(bào)的日志信息,并對這些信息進(jìn)行多維度的分析。
視頻直播
- 使用 MongoDB 存儲用戶信息、禮物信息等,用戶評論。
電商場景
- 商城上衣和褲子兩種商品,除了有共同屬性,如產(chǎn)地、價(jià)格、材質(zhì)、顏色等外,還有各自有不同的屬性集,如上衣的獨(dú)有屬性是肩寬、胸圍、袖長等,褲子的獨(dú)有屬性是臀圍、腳口和褲長等。
到此這篇關(guān)于關(guān)于MongoDB數(shù)據(jù)庫核心概念的文章就介紹到這了,更多相關(guān)MongoDB數(shù)據(jù)庫概念內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mongodb中根據(jù)時(shí)間過濾進(jìn)行查詢的操作方法
這篇文章主要介紹了mongodb中簡單的根據(jù)時(shí)間過濾進(jìn)行查詢,文末補(bǔ)充介紹了如何根據(jù)日期過濾/查找MongoDB中的記錄,結(jié)合實(shí)例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟
這篇文章主要介紹了mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10MongoDB中aggregate()方法實(shí)例詳解
MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等),并返回計(jì)算后的數(shù)據(jù)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于MongoDB中aggregate()方法的相關(guān)資料,需要的朋友可以參考下2023-01-01mongoDB 多重?cái)?shù)組查詢(AngularJS綁定顯示 nodejs)
這篇文章主要介紹了mongoDB 多重?cái)?shù)組查詢(AngularJS綁定顯示 nodejs),需要的朋友可以參考下2017-06-06MongoDB創(chuàng)建與刪除數(shù)據(jù)庫
這篇文章介紹了MongoDB創(chuàng)建與刪除數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-061億條記錄的MongoDB數(shù)據(jù)庫隨機(jī)查詢性能測試
這篇文章主要為大家分享下1億條記錄的MongoDB數(shù)據(jù)庫隨機(jī)查詢性能測試結(jié)果,需要的朋友可以參考下2013-12-12