mongodb的優缺點及應用場景,每日一練
「這是我參與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
關鍵字對比
四、資料模型
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。
五、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、MongoDB Community Server
4、選擇release版
5、下載zip檔案,解壓
6、建立data/db目錄,命令列啟動程式
mongod --dbpath=..\data\db
7、由於找不到vcruntime140_1.dll,無法繼續執行程式碼
七、由於找不到vcruntime140_1.dll,無法繼續執行程式碼
1、下載vcruntime140_1.dll檔案
2、將vcruntime140_1.dll檔案拷貝到C:\Windows\System32即可
3、再次命令列啟動程式
mongod --dbpath=..\data\db
4、MongoDB預設埠號27017
如果想修改埠號,可以通過–port指定埠號。
八、安裝compass圖形化管理工具
1、下載地址
http://docs.mongodb.com/compass/master/install/
2、compass安裝成功、啟動
點選MongoDBCompass.exe
3、compass連線MongoDB
mongodb://127.0.0.1:27017