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官網下載地址

http://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、下載地址

http://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