MongDB概述

1. 什麼是NoSQl
NoSQL:Not Only SQL,本質也是一種數據庫的技術,相對於傳統數據庫技術NoSQL不會遵循一些SQL的約束,比如:
1.1SQL標準:select * from table_name update table_name set delete from table_name 這些傳統關係型數據庫(Oracle、Mysql,DB2)等關係型數據都遵循的sql標準。
1.2事務的ACID特性:A(Atomicity原子性) C(Consistency一致性)I(Isolation 隔離性)D(Durability持久性)
1.3表結構等(NoSQL沒有所謂的表結構)

2. NoSQL優點:
2.1滿足對數據庫的高併發讀寫(一個應用中最先出現性能瓶頸的就是DB層,一般Mysql能支持的併發在機器硬盤上爲300左右,固態硬盤上爲700左右。因此高併發場景下很容易突破數據庫的性能瓶頸,關係型數據庫在高併發讀寫性能上用戶體驗較差或者當併發大到一定量是直接導致數據庫崩潰)
2.2對海量數據的搞笑存儲和訪問(傳統關係型數據庫當單表數據超過700萬的時候用戶體驗就會極差,當數據量大到一定程度的時候需要考慮分庫分表分區分片,讀寫分離,集羣等手段保證數據庫的性能。傳統關係型數據庫的橫向擴展或縱向擴展維護成本較高,以及分佈式事務的處理難度較大)
2.3對數據庫的高擴展性和高可用性(相對於傳統關係型數據庫更容易實現水平擴展和集羣搭建)
2.4靈活的數據結構,滿足數據結構不固定的場景(傳統關係型數據庫有固定的表結構當需求頻繁變化而且數據結構不定的時候,新的需求往往會因爲涉及表結構的修改導致需求變更開發工作量大或牽一髮而動全身的表結構修改不能實現新的需求)
3. NoSQL缺點:
3.1一般不支持事務,即使現在一些NoSQL已經支持了事務如Redis,MongoDB但是它們的事務都是弱一致性的事務,從事務支持的完整性和嚴格性上大不如關係型數據庫
3.2實現複雜的SQL查詢難度較大(比如要實現傳統關係型數據庫多表關聯各種聚合函數的報表查詢使用NoSQL實現難度較大)
3.3運維人員數據維護門檻較高(目前的運維人員對關係型數據庫的維護比較拿手,但是要維護NoSQL數據庫還需學習)
3.4目前不是主流的數據庫技術(目前主流的數據庫技術依然是關係型數據庫)
4. NoSql數據庫分類
MongDB概述
5. Mongodb的基礎概念
目前在NoSql數據庫中Mongodb排名第一,因此學習Mongodb非常有必要
Mongdb:是一個數據庫,高性能、無模式、文檔型NoSQL數據庫,是目前NoSQL中最熱門的數據庫,開源產品,是NoSQL中功能最豐富且最像關係型數據庫的NoSQL數據庫
特性:
5.1面向集合文檔的存儲:適合存儲Bson(json的擴展)形式的數據
5.2格式自由,數據格式不固定,生產環境下修改結構都不影響程序的運行
5.3強大的查詢API,面向對象的查詢語言,基本覆蓋sql語言的所有功能
5.4完整的索引支持,支持查詢計劃
5.5支持複製(主從)和自動故障轉移(高可用單點故障)
5.6支持二進制數據及大型對象(文件)的搞笑存儲
5.7使用分片集羣提升系統擴展性
5.8使用內存映射存儲引擎,把對硬盤的物理IO操作轉換爲內存操作提高讀寫性能但比較吃內存
6. Mongodb基本概念圖解
MongDB概述
7. MongoDB概念與RDMS概念對比
MongDB概述
8. 如何決定一個業務場景是否需要使用MongoDB
並沒有某一業務場景必須使用Mongodb才能解決,能用Mongodb解決的用關係型數據庫都能解決,但是當選擇使用Mongodb可以讓問題或業務場景解決的成本更低的時候就可以考慮使用Mongodb,問題的解決成本包括(學習成本,開發成本,運維成本等)
MongDB概述
以上如果第一個yes被否定就不建議使用mongodb,如果上述第一個必須yes的滿足需求其餘的選項中滿足任意一個或多個都可以使用mongodb,滿足的項越多越能體現mongodb的優勢。
9. MongoDB使用場景
Mongodb的應用已經***到各個計算機軟件領域,如遊戲、物流、電商、內容管理、社交網絡、物聯網、視頻直播等
9.1遊戲場景:使用Mongodb存儲遊戲用戶信息,用戶的裝備,積分等直接以內嵌文檔的形式存儲,方便查詢更新
9.2物流場景:使用Mongodb存儲商品評論、訂單信息,訂單狀態狀態在運送過程中會不斷更新,以Mongodb內嵌數組的形式來存儲,一次查詢就能將訂單所有的變更讀取出來
9.3社交場景:使用Mongodb存儲用戶信息,以及用戶發表的朋友圈信息,通過地理位置索引實現查找附近的人,服務場所等功能
9.4物聯網場景:使用Mongodb存儲所有接入的只能設備的信息,以及設備彙報的日誌信息,並對這些信息進行多維度的分析
9.5視頻直播:使用Mongodb存儲用戶信息,禮物信息等

10. 那些業務場景下不能使用MongoDB
10.1要求高度的事務性的系統:例如銀行系統、財務系統、支付系統等,因爲Mongodb對事務的支持完整性和嚴格性較弱
10.2傳統的商業智能應用:特定問題的數據分析,多數據實體關聯(多表join操作)涉及到複雜的關聯查詢的報表系統,高度優化查詢的系統
10.3使用sql方便,數據結構相對固定以上情況不建議使用Mongodb
本人才疏學淺,文檔多有瑕疵,有誤之處,萬望海涵和批評指正
虛而不思則罔,思而不學則殆
業精於勤而荒於嬉,行成於思而毀於隨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章