每日一句
Failure will never overtake me if my determination to succeed is strong enough.
只要我成功的決心足夠強,失敗就永遠不會打倒我,
概述
MongoDB 是由C++語言撰寫的,是一個基于分布式檔案存盤的開源資料庫系統,
在高負載的情況下,添加更多的節點,可以保證服務器性能,
MongoDB 旨在為WEB應用提供可擴展的高性能資料存盤解決方案,
MongoDB 將資料存盤為一個檔案,資料結構由鍵值(key=>value)對組成,MongoDB 檔案類似于 JSON 物件,欄位值可以包含其他檔案,陣列及檔案陣列,
主要特點
- MongoDB的提供了一個面向檔案存盤,操作起來比較簡單和容易,
- 你可以在MongoDB記錄中設定任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實作更快的排序,
- 你可以通過本地或者網路創建資料鏡像,這使得MongoDB有更強的擴展性,
- 如果負載的增加(需要更多的存盤空間和更強的處理能力) ,它可以分布在計算機網路中的其他節點上這就是所謂的分片,
- Mongo支持豐富的查詢運算式,查詢指令使用JSON形式的標記,可輕易查詢檔案中內嵌的物件及陣列,
- MongoDb 使用update()命令可以實作替換完成的檔案(資料)或者一些指定的資料欄位 ,
- Mongodb中的Map/reduce主要是用來對資料進行批量處理和聚合操作,
- Map和Reduce,Map函式呼叫emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函式進行處理,
- Map函式和Reduce函式是使用Javascript撰寫的,并可以通過db.runCommand或mapreduce命令來執行MapReduce操作,
- GridFS是MongoDB中的一個內置功能,可以用于存放大量小檔案,
- MongoDB允許在服務端執行腳本,可以用Javascript撰寫某個函式,直接在服務端執行,也可以把函式的定義存盤在服務端,下次直接呼叫即可,
- MongoDB支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言,
- MongoDB安裝簡單,
發展歷史
- 2007年10月,MongoDB由10gen團隊所發展,2009年2月首度推出,
- 2012年05月23日,MongoDB2.1 開發分支發布了! 該版本采用全新架構,包含諸多增強,
- 2012年06月06日,MongoDB 2.0.6 發布,分布式檔案資料庫,
- 2013年04月23日,MongoDB 2.4.3 發布,此版本包括了一些性能優化,功能增強以及bug修復,
- 2013年08月20日,MongoDB 2.4.6 發布,是目前最新的穩定版,
應用場景
傳統的關系型資料庫(如MySQL),在資料操作的‘三高’需求以及應對web2.0的網站需求時,顯得力不從心,
關于三高的解釋:
- High performance - 對資料庫高并發讀寫的需求
- Huge Storage - 對海量資料的高效率存盤和訪問的需求,
- High Scalability && High Availability - 對資料庫的高可擴展性和高可用性的需求,
使用MongoDB可以應對三高需求,
具體應用場景
- 社交場景:使用MongoDB存盤用戶資訊,以及用戶發表的朋友圈資訊,通過地理位置索引實作附近的人、地點等功能,
- 游戲場景:使用MongoDB存盤游戲用戶資訊,用戶的裝備、積分等直接以內嵌檔案的形式存盤,方便查詢、高效率存盤,
- 物流場景:使用MongoDB存盤訂單資訊,訂單狀態在運送程序中會不斷更新,以MongoDB內嵌陣列的形式來存盤,一次查詢就能將訂單所有的變更讀取出來,
- 物聯網場景:使用MongoDB存盤所有接入的智能設備資訊,以及設備匯報的日志資訊,并對這些資訊進行多維度的分析,
- 視頻直播:使用MongoDB存盤用戶資訊、點贊互動的資訊等,
什么時候選擇MongoDB
在架構選型上,關于是否要選擇它,可以考慮以下的幾個特征:
- 資料量大
- 讀寫頻繁
- 價值較低的資料,對事務性要求不高,不需要復雜join 支持
- 新應用、新業務、需求會變、資料模型無法確定,想快速迭代開發
- 應用需要2000 - 3000 以上的讀寫QPS(更高也可以)
- 應用需要TB甚至PB級別的資料存盤
- 應用發展迅速,需要能夠快速水平擴展
- 應用要求存盤的資料不丟失
- 應用需要99.999%高可用
- 應用需要大量的地址位置查詢、文本查詢
如果上述有1個符合,可以考慮 MongoDB,2個及以上的符合,選擇 MongoDB 絕不會后悔,
美文佳句
每當秋風驟起,那柿樹上的一片片葉子,就紛紛落下來了,給人一種歲月易逝、時不我待的感覺,而這時候的柿子,個個都裸露了出來,它們站在高高的樹枝上,在深秋陽光的照耀下,呈現出晶瑩剔透的光澤,給人一種歲月靜美的印象、果實甜蜜的傭訓,
你好,我是yltrcc,日常分享技術點滴,歡迎關注我:ylcoder
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/418101.html
標籤:其他
上一篇:RabbitMQ 環境安裝
下一篇:DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | NEURAL NETWORKS
