mongodb的優缺點及應用場景,每日一練

語言: CN / TW / HK

「這是我參與2022首次更文挑戰的第3天,活動詳情查看:2022首次更文挑戰」。

一、MongoDB是什麼

1、維基百科

MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

2、簡而言之

MongoDB是文檔型的NoSQL數據庫,數據以文檔(對應關係型數據庫的記錄)的形式在MongoDB中保存,文檔實際上就是一個個JSON字符串,使用JSON的好處是非常直觀,通過一系列的Key-Value鍵值對來表示數據,符合我們的閲讀習慣。 在Java、Python中對JSON都有很好的支持,數據從MongoDB中讀取出來後,可無需轉換直接使用;支持豐富的數據結構,Value可以是普通的整型、字符串、數組、嵌套的子文檔,使用嵌套的好處是在MongoDB中僅需一次簡單的查詢就能夠獲取到你所需的數據。

二、MongoDB 的應用場景

1、MongoDB事務

MongoDB目前只支持單文檔事務,MongoDB暫時不適合需要複雜事務的場景。 靈活的文檔模型JSON格式存儲最接近真實對象模型,對開發者友好,方便快速開發迭代,可用複製集滿足數據高可靠、高可用的需求,運維較為簡單、故障自動切換可擴展分片集羣海量數據存儲。

2、多引擎支持各種強大的索引需求

  • 支持地理位置索引
  • 可用於構建各種O2O應用
  • 文本索引解決搜索的需求
  • TTL索引解決歷史數據過期的需求
  • Gridfs解決文件存儲的需求
  • aggregation & mapreduce解決數據分析場景需求,可以自己寫查詢語句或腳本,將請求分發到 MongoDB 上完成。

3、具體的應用場景

傳統的關係型數據庫在解決三高問題上的力不從心。 何為三高?

  • High performance - 對數據庫高併發讀寫的需求。
  • Huge Storage - 對海量數據的高效率存儲和訪問的需求。
  • High Scalability && High Availability- 對數據庫的高可擴展性和高可用性的需求。 MongoDB可以完美解決三高問題。

4、以下是幾個實際的應用案例:

(1)遊戲場景 使用MongoDB存儲遊戲用户信息、裝備、積分等,直接以內嵌文檔的形式存儲,方便查詢、更新。 (2)物流場景 使用MongoDB存儲訂單信息、訂單狀態、物流信息,訂單狀態在運送過程中飛速迭代、以MongoDB內嵌數組的形式來存儲,一次查詢就能將訂單所有的變更查出來,牛逼plus。 (3)社交場景 使用MongoDB存儲用户信息,朋友圈信息,通過地理位置索引實現附近的人、定位功能。 (4)物聯網場景 使用MongoDB存儲設備信息、設備彙報的日誌信息、並對這些信息進行多維度分析。 (5)視頻直播 使用MongoDB存儲用户信息、點贊互動信息。

5、選擇MongoDB的場景總結:

  • 數據量大
  • 讀寫操作頻繁
  • 數據價值較低,對事務要求不高

三、MongoDB對比MySQL

關鍵字對比

1.png

四、數據模型

MongoDB的最小存儲單位是文檔(document)對象,相當於MySQL中的行,數據以BSON文檔的形式存儲在磁盤上。 BSON是一種二進制形式的存儲格式,簡稱Binary JSON。 BSON和JSON一樣,支持內嵌的文檔對象和數組對象,但是BSON有JSON沒有的一些數據類型,如Date和BinData類型。 BSON採用了類似於C語言結構體的名稱、支持內嵌的文檔對象和數組對象,具有輕量級、可遍歷性、高效性三大特點,可以有效描述非結構化數據和結構化數據,靈活性高,但空間利用率不是很理想。 BSON中除了基本的String、integer、boolean、double、null、array和object,MongoDB還支持一些特殊的數據類型,date、object id、binary data、regular expression和code。

2.png

五、MongoDB的特點

1、高性能

MongoDB提供高性能的數據持久性。對嵌入式數據模型的支持減少了數據庫系統上的IO活動。 索引支持更快的查詢,並且包含嵌入式文檔和數組的鍵。

  • 文本索引解決搜索的需求;
  • TTL索引解決歷史數據自動過期的需求;
  • 地理位置索引可用於構建各種 O2O 應用;

2、高可用性

MongoDB的複製工具稱為副本集(reolica set),它包含提供自動故障轉移和數據宂餘。

3、高可用性

MongoDB提供了水平可擴展性作為其核心功能的一部分。 分片將數據分佈在一組集羣的機器上。(海量數據存儲、服務能力水平擴展) 從3.4起,MongoDB支持基於片鍵創建數據區域,在一個平衡的集羣中,MongoDB將一個區域所覆蓋的讀寫只定向到該區域內的那些片。

4、豐富的查詢支持

MongoDB支持豐富的查詢語言,支持讀寫(CRUD)操作、比如數據聚合、文本搜索、地理空間查詢等。

5、其他特點

如動態模式、靈活的文檔模型。

六、下載安裝MongoDB

1、 MongoDB官網下載地址

https://www.mongodb.com/try#community

2、Products – servers

3.png

3、MongoDB Community Server

4.png

4、選擇release版

5.png

5、下載zip文件,解壓

6.bmp

6、創建data/db目錄,命令行啟動程序

mongod --dbpath=..\data\db

7、由於找不到vcruntime140_1.dll,無法繼續執行代碼

7.png

七、由於找不到vcruntime140_1.dll,無法繼續執行代碼

1、下載vcruntime140_1.dll文件

2、將vcruntime140_1.dll文件拷貝到C:\Windows\System32即可

8.bmp

3、再次命令行啟動程序

mongod --dbpath=..\data\db

9.bmp

4、MongoDB默認端口號27017

如果想修改端口號,可以通過–port指定端口號。

八、安裝compass圖形化管理工具

1、下載地址

https://docs.mongodb.com/compass/master/install/

10.png

2、compass安裝成功、啟動

點擊MongoDBCompass.exe

11.png

3、compass連接MongoDB

mongodb://127.0.0.1:27017

12.png