




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
武漢天喻通訊技術有限公司李文祥2012年6月初識第一部分MongoDB簡介What’sMongoDB?MongoDBisascalable,high-performance,opensource
NoSQLdatabase.WritteninC++應用場景特性NoSQL(NotOnlySql)水平可擴展開源分布式非關系型模式自由支持簡易復制簡單的API最終的一致性(非ACID)大容量數(shù)據(jù)常見的NoSQLCassandraTairWEB應用為什么用NoSQL需求三高Highperformance
對數(shù)據(jù)庫高并發(fā)讀寫的需求HugeStorage
對海量數(shù)據(jù)的高效率存儲和訪問的需求HighScalability&&HighAvailability
對數(shù)據(jù)庫的高可擴展性和高可用性的需求RDBMS部分特性無用武之地數(shù)據(jù)庫事務一致性需求數(shù)據(jù)庫的寫實時性和讀實時性需求對復雜的SQL查詢,特別是多表關聯(lián)查詢的需求NoSQL特點總結超大量的數(shù)據(jù)的處理服務器硬件從專用服務器向PC平民化解決了性能瓶頸簡單的操作活躍的開源社區(qū)支持者MongoDB’sFeatures:面向文檔存儲完整的索引支持支持復制和故障恢復易擴展模式自由可自由更新數(shù)據(jù)結構支持Map/ReduceGridFS關于MongoDB的一些概念模式自由(schema-free)面向文檔Key/Value集合JSON格式的擴展“BSON”
BinarySerializedDocumentNotation
MongoDB工作方式傳統(tǒng)的關系數(shù)據(jù)庫一般由數(shù)據(jù)庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB同樣也是由數(shù)據(jù)庫(database)、集合(collection)、文檔對象(document)三個層次組成。文檔類似于json的鍵值對。{“name”:”jone”,”age”:13}集合一組文檔的集合。一個集合下的穩(wěn)定無模式限制。注意:集合命名不能為空,\0,不能以system.開頭,不能含有$數(shù)據(jù)庫命名小寫不能含有空格,$\/\0等在32位系統(tǒng)上,不支持大于2.5G的數(shù)據(jù)。單個文檔大小限制為16M鎖粒度太粗,MongoDB使用的是一把全局的讀寫鎖不支持join操作和事務機制,這個確實是非MongoDB要做的領域對內存要求比較大,至少要保證熱數(shù)據(jù)(索引,數(shù)據(jù)及系統(tǒng)其它開銷)都能裝進內存用戶權限方面比較弱,將機器部署在安全的內網(wǎng)環(huán)境中,盡量不要用權限,2.0后有改進對于數(shù)組型的數(shù)據(jù)操作不夠豐富
MongoDB的局限與不足MongoDB適用場景網(wǎng)站數(shù)據(jù):MongoDB非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復制及高度伸縮性;緩存:由于性能很高,MongoDB也適合作為信息基礎設施的緩存層。在系統(tǒng)重啟之后,由MongoDB搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載;大尺寸,低價值的數(shù)據(jù):使用傳統(tǒng)的關系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進行存儲;高伸縮性的場景:MongoDB非常適合由數(shù)十或數(shù)百臺服務器組成的數(shù)據(jù)庫。MongoDB對MapReduce引擎的內置支持;用于對象及JSON數(shù)據(jù)的存儲:MongoDB的BSON數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢;MongoDB數(shù)據(jù)類型null
布爾
ture|false整數(shù)
123浮點
12.3字符串
“helloworld”對象ID
用newObjectId()來申明。日期用newDate()來申明時間戳數(shù)組
[“apple”,”blanan”,”pear”]內嵌文檔{“username”:“jone”,“age”:13,“contact”:{“home”:”123”,”moblie”:”456”}}RegExp
正則表達式/[a-z]/
MongoDB的ObjectId第二部分MongoDB的基本操作MongoDB的基本操作與SQL語句對比SQLSELECT*FROMthingsWHEREname="mongo“SELECTjFROMthingsWHEREx=4MongoDB>db.things.find({name:"mongo"}).forEach(function(x){print(tojson(x));});db.things.find({x:4},{j:true}).forEach(function(x){print(tojson(x));});MongoDB的基本操作與SQL語句對比SQLselect*fromthingswhere'economy'intagsorderbytsDESClimit10MongoDB>db.things.find({tags:'economy'}).sort({ts:-1}).limit(10);基于Mongo_db|MoTools|MongoModel開發(fā)classMongo_db{……}MongoDB連接類負責與MongoDB通信classMoTools{……}MongoDB操作語法生成工具類可以便捷的生成符合PHPMongoDB驅動語法的常用的查詢更新語法classMongoModel{……}基于MongoDB的數(shù)據(jù)模型的基類程序中的數(shù)據(jù)模型都繼承自此類,此類中已定義了數(shù)據(jù)模型通用的方法,如:getAll、getOne、delete、deleteAll、get_info|loadById、add|insert、batchInsert、edit、geoNear、以及數(shù)據(jù)驗證方法_valid、getRequiredFields、_dataEnough、MongoModel介紹MongoModel介紹新增add(array$data)
添加一條記錄insert(array$data)插入一條數(shù)據(jù)see$this->add($data);batchInsert(array$data)批量插入數(shù)據(jù)刪除delete($where=array())deleteAll($where=array())MongoModel介紹更新edit($id,array$data)查詢get_info($id)loadById($id,$fields=array(),$excludes=array())getOne($select=array(),array$where=array())getAll($select=array(),array$where=array(),$order=array(),$count=20,$offset=0)/***獲取文檔列表*@paramarray|string$select支持name,age,address寫法*@paramarray$where*@paramarray|string$order支持namedesc,ageasc寫法*@paramint$count*@paramint$offset*@returnarray*/geoNear(array$location=array(),$distance=0,$num=10,$query=array())MongoModel及MoTools應用MongoModel及MoTools應用更多關于MongoDB的PHP驅動API在線手冊:/manual/en/book.mongo.php第三部分MongoDB的高級應用L
B
S的興起LBS應用中基于位置的查詢在傳統(tǒng)的解決方案,開發(fā)人員需要根據(jù)復雜的幾何運算與大量的SQL語句進行查找,這無疑加大的開發(fā)人員的開發(fā)難度,查詢性能也難以保證。我們需要更為方便高效的解決方案MongoDB為我們完美解決此類LBS問題基于地理空間(
Geospatial)索引的查詢基于經(jīng)緯度的2D索引基于平面的查詢:$near、$box、$center、$polygon基于球面的查詢:$nearSphere、$centerSphere……
v1.8+.手冊:/display/DOCS/Geospatial+Indexing基于地理空間(
Geospatial)索引的查詢基于地理空間(
Geospatial)索引的查詢使用場景:獲取某一坐標點附近的標注物第四部分MongoDB的存儲機制MongoDB使用的存儲引擎使用內存映射文件mmap實現(xiàn),而32位機器受地址空間限制,所以單個實例最大數(shù)據(jù)空間僅為2.5G左右,64位機器基本無限制(128T),故建議使用64位機器部署。每個數(shù)據(jù)庫由一個.ns元數(shù)據(jù)文件,以及多個數(shù)據(jù)文件組成(dbname.{0,1,2,……},以自增的數(shù)字為擴展名)。為了防止小數(shù)據(jù)庫浪費空間,MongoDB的數(shù)據(jù)文件默認從16M開始,倍數(shù)級別增加,2G為單個數(shù)據(jù)文件的大小上限。數(shù)據(jù)很少但磁盤占用了上G的空間?存儲空間預分配策略16M>32M>64M>128M>256M>512M>1G>2G>2G>……MMAP存儲引擎原理詳解MMAP:mapafileondiskinmemory
MMAP存儲引擎原理詳解-1GKernel≈0.5Gstackmongod……————————————
≈2.5G
MMAP存儲引擎原理詳解目前AMD64
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆黑龍江省友誼縣紅興隆管理局第一高級中學高三新課程第三次適應性測試英語試題含解析
- 2025年江蘇省盱眙縣第三中學初三年級第一次教學質量診斷性聯(lián)合考試物理試題含解析
- 2024-2025學年云南省曲靖市麒麟?yún)^(qū)五中高三第二學期期末練習數(shù)學試題試卷含解析
- 加強職業(yè)教育調研
- 小魚艇創(chuàng)意畫課件
- 心理健康教育專題
- 教育中的心理效應讀書分享會
- 上海市崇明區(qū)2025屆高三高考二模地理試卷(含答案)
- 2025《房地產(chǎn)經(jīng)紀業(yè)務操作》房地產(chǎn)經(jīng)紀人考前沖刺必會300題-含詳解
- 云南省衛(wèi)生健康系統(tǒng)事業(yè)單位招聘-基礎知識類近年考試真題庫(含答案)
- 中國近現(xiàn)代史綱要(上海建橋學院)智慧樹知到答案章節(jié)測試2023年
- 外研版高中英語新教材必修三Unit1隨身課本-Understandingideas01
- 運動技能學習與控制課件第一章運動技能學習與控制概述
- 口袋妖怪白金詳細圖文攻略(整理全)
- GB/T 9575-2013橡膠和塑料軟管軟管規(guī)格和最大最小內徑及切割長度公差
- GB/T 7588.1-2020電梯制造與安裝安全規(guī)范第1部分:乘客電梯和載貨電梯
- GB/T 6495.2-1996光伏器件第2部分:標準太陽電池的要求
- GA/T 950-2019防彈材料及產(chǎn)品V50試驗方法
- 中醫(yī)骨傷科學課件
- 化工基礎知識培訓課件
- 【精品】六年級下冊語文試題-閱讀理解專項訓練5含答案全國通用
評論
0/150
提交評論