mongodb初識-完整的理解并應(yīng)用(非常清晰)_第1頁
mongodb初識-完整的理解并應(yīng)用(非常清晰)_第2頁
mongodb初識-完整的理解并應(yīng)用(非常清晰)_第3頁
mongodb初識-完整的理解并應(yīng)用(非常清晰)_第4頁
mongodb初識-完整的理解并應(yīng)用(非常清晰)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

武漢天喻通訊技術(shù)有限公司李文祥2012年6月初識第一部分MongoDB簡介What’sMongoDB?MongoDBisascalable,high-performance,opensource

NoSQLdatabase.WritteninC++應(yīng)用場景特性NoSQL(NotOnlySql)水平可擴(kuò)展開源分布式非關(guān)系型模式自由支持簡易復(fù)制簡單的API最終的一致性(非ACID)大容量數(shù)據(jù)常見的NoSQLCassandraTairWEB應(yīng)用為什么用NoSQL需求三高Highperformance

對數(shù)據(jù)庫高并發(fā)讀寫的需求HugeStorage

對海量數(shù)據(jù)的高效率存儲和訪問的需求HighScalability&&HighAvailability

對數(shù)據(jù)庫的高可擴(kuò)展性和高可用性的需求RDBMS部分特性無用武之地數(shù)據(jù)庫事務(wù)一致性需求數(shù)據(jù)庫的寫實時性和讀實時性需求對復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求NoSQL特點總結(jié)超大量的數(shù)據(jù)的處理服務(wù)器硬件從專用服務(wù)器向PC平民化解決了性能瓶頸簡單的操作活躍的開源社區(qū)支持者M(jìn)ongoDB’sFeatures:面向文檔存儲完整的索引支持支持復(fù)制和故障恢復(fù)易擴(kuò)展模式自由可自由更新數(shù)據(jù)結(jié)構(gòu)支持Map/ReduceGridFS關(guān)于MongoDB的一些概念模式自由(schema-free)面向文檔Key/Value集合JSON格式的擴(kuò)展“BSON”

BinarySerializedDocumentNotation

MongoDB工作方式傳統(tǒng)的關(guān)系數(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操作和事務(wù)機(jī)制,這個確實是非MongoDB要做的領(lǐng)域?qū)?nèi)存要求比較大,至少要保證熱數(shù)據(jù)(索引,數(shù)據(jù)及系統(tǒng)其它開銷)都能裝進(jìn)內(nèi)存用戶權(quán)限方面比較弱,將機(jī)器部署在安全的內(nèi)網(wǎng)環(huán)境中,盡量不要用權(quán)限,2.0后有改進(jìn)對于數(shù)組型的數(shù)據(jù)操作不夠豐富

MongoDB的局限與不足MongoDB適用場景網(wǎng)站數(shù)據(jù):MongoDB非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性;緩存:由于性能很高,MongoDB也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由MongoDB搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載;大尺寸,低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進(jìn)行存儲;高伸縮性的場景:MongoDB非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。MongoDB對MapReduce引擎的內(nèi)置支持;用于對象及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”]內(nèi)嵌文檔{“username”:“jone”,“age”:13,“contact”:{“home”:”123”,”moblie”:”456”}}RegExp

正則表達(dá)式/[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連接類負(fù)責(zé)與MongoDB通信classMoTools{……}MongoDB操作語法生成工具類可以便捷的生成符合PHPMongoDB驅(qū)動語法的常用的查詢更新語法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應(yīng)用MongoModel及MoTools應(yīng)用更多關(guān)于MongoDB的PHP驅(qū)動API在線手冊:/manual/en/book.mongo.php第三部分MongoDB的高級應(yīng)用L

B

S的興起LBS應(yīng)用中基于位置的查詢在傳統(tǒng)的解決方案,開發(fā)人員需要根據(jù)復(fù)雜的幾何運(yùn)算與大量的SQL語句進(jìn)行查找,這無疑加大的開發(fā)人員的開發(fā)難度,查詢性能也難以保證。我們需要更為方便高效的解決方案MongoDB為我們完美解決此類LBS問題基于地理空間(

Geospatial)索引的查詢基于經(jīng)緯度的2D索引基于平面的查詢:$near、$box、$center、$polygon基于球面的查詢:$nearSphere、$centerSphere……

v1.8+.手冊:/display/DOCS/Geospatial+Indexing基于地理空間(

Geospatial)索引的查詢基于地理空間(

Geospatial)索引的查詢使用場景:獲取某一坐標(biāo)點附近的標(biāo)注物第四部分MongoDB的存儲機(jī)制MongoDB使用的存儲引擎使用內(nèi)存映射文件mmap實現(xiàn),而32位機(jī)器受地址空間限制,所以單個實例最大數(shù)據(jù)空間僅為2.5G左右,64位機(jī)器基本無限制(128T),故建議使用64位機(jī)器部署。每個數(shù)據(jù)庫由一個.ns元數(shù)據(jù)文件,以及多個數(shù)據(jù)文件組成(dbname.{0,1,2,……},以自增的數(shù)字為擴(kuò)展名)。為了防止小數(shù)據(jù)庫浪費(fèi)空間,MongoDB的數(shù)據(jù)文件默認(rèn)從16M開始,倍數(shù)級別增加,2G為單個數(shù)據(jù)文件的大小上限。數(shù)據(jù)很少但磁盤占用了上G的空間?存儲空間預(yù)分配策略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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論