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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求HighScalability&&HighAvailability

對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求RDBMS部分特性無(wú)用武之地?cái)?shù)據(jù)庫(kù)事務(wù)一致性需求數(shù)據(jù)庫(kù)的寫(xiě)實(shí)時(shí)性和讀實(shí)時(shí)性需求對(duì)復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求NoSQL特點(diǎn)總結(jié)超大量的數(shù)據(jù)的處理服務(wù)器硬件從專用服務(wù)器向PC平民化解決了性能瓶頸簡(jiǎn)單的操作活躍的開(kāi)源社區(qū)支持者M(jìn)ongoDB’sFeatures:面向文檔存儲(chǔ)完整的索引支持支持復(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ù)庫(kù)一般由數(shù)據(jù)庫(kù)(database)、表(table)、記錄(record)三個(gè)層次概念組成,MongoDB同樣也是由數(shù)據(jù)庫(kù)(database)、集合(collection)、文檔對(duì)象(document)三個(gè)層次組成。文檔類似于json的鍵值對(duì)。{“name”:”jone”,”age”:13}集合一組文檔的集合。一個(gè)集合下的穩(wěn)定無(wú)模式限制。注意:集合命名不能為空,\0,不能以system.開(kāi)頭,不能含有$數(shù)據(jù)庫(kù)命名小寫(xiě)不能含有空格,$\/\0等在32位系統(tǒng)上,不支持大于2.5G的數(shù)據(jù)。單個(gè)文檔大小限制為16M鎖粒度太粗,MongoDB使用的是一把全局的讀寫(xiě)鎖不支持join操作和事務(wù)機(jī)制,這個(gè)確實(shí)是非MongoDB要做的領(lǐng)域?qū)?nèi)存要求比較大,至少要保證熱數(shù)據(jù)(索引,數(shù)據(jù)及系統(tǒng)其它開(kāi)銷(xiāo))都能裝進(jìn)內(nèi)存用戶權(quán)限方面比較弱,將機(jī)器部署在安全的內(nèi)網(wǎng)環(huán)境中,盡量不要用權(quán)限,2.0后有改進(jìn)對(duì)于數(shù)組型的數(shù)據(jù)操作不夠豐富

MongoDB的局限與不足MongoDB適用場(chǎng)景網(wǎng)站數(shù)據(jù):MongoDB非常適合實(shí)時(shí)的插入,更新與查詢,并具備網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需的復(fù)制及高度伸縮性;緩存:由于性能很高,MongoDB也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由MongoDB搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過(guò)載;大尺寸,低價(jià)值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)一些數(shù)據(jù)時(shí)可能會(huì)比較昂貴,在此之前,很多時(shí)候程序員往往會(huì)選擇傳統(tǒng)的文件進(jìn)行存儲(chǔ);高伸縮性的場(chǎng)景:MongoDB非常適合由數(shù)十或數(shù)百臺(tái)服務(wù)器組成的數(shù)據(jù)庫(kù)。MongoDB對(duì)MapReduce引擎的內(nèi)置支持;用于對(duì)象及JSON數(shù)據(jù)的存儲(chǔ):MongoDB的BSON數(shù)據(jù)格式非常適合文檔化格式的存儲(chǔ)及查詢;MongoDB數(shù)據(jù)類型null

布爾

ture|false整數(shù)

123浮點(diǎn)

12.3字符串

“helloworld”對(duì)象ID

用newObjectId()來(lái)申明。日期用newDate()來(lái)申明時(shí)間戳數(shù)組

[“apple”,”blanan”,”pear”]內(nèi)嵌文檔{“username”:“jone”,“age”:13,“contact”:{“home”:”123”,”moblie”:”456”}}RegExp

正則表達(dá)式/[a-z]/

MongoDB的ObjectId第二部分MongoDB的基本操作MongoDB的基本操作與SQL語(yǔ)句對(duì)比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語(yǔ)句對(duì)比SQLselect*fromthingswhere'economy'intagsorderbytsDESClimit10MongoDB>db.things.find({tags:'economy'}).sort({ts:-1}).limit(10);基于Mongo_db|MoTools|MongoModel開(kāi)發(fā)classMongo_db{……}MongoDB連接類負(fù)責(zé)與MongoDB通信classMoTools{……}MongoDB操作語(yǔ)法生成工具類可以便捷的生成符合PHPMongoDB驅(qū)動(dòng)語(yǔ)法的常用的查詢更新語(yǔ)法classMongoModel{……}基于MongoDB的數(shù)據(jù)模型的基類程序中的數(shù)據(jù)模型都繼承自此類,此類中已定義了數(shù)據(jù)模型通用的方法,如:getAll、getOne、delete、deleteAll、get_info|loadById、add|insert、batchInsert、edit、geoNear、以及數(shù)據(jù)驗(yàn)證方法_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寫(xiě)法*@paramarray$where*@paramarray|string$order支持namedesc,ageasc寫(xiě)法*@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ū)動(dòng)API在線手冊(cè):/manual/en/book.mongo.php第三部分MongoDB的高級(jí)應(yīng)用L

B

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

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

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

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

Geospatial)索引的查詢使用場(chǎng)景:獲取某一坐標(biāo)點(diǎn)附近的標(biāo)注物第四部分MongoDB的存儲(chǔ)機(jī)制MongoDB使用的存儲(chǔ)引擎使用內(nèi)存映射文件mmap實(shí)現(xiàn),而32位機(jī)器受地址空間限制,所以單個(gè)實(shí)例最大數(shù)據(jù)空間僅為2.5G左右,64位機(jī)器基本無(wú)限制(128T),故建議使用64位機(jī)器部署。每個(gè)數(shù)據(jù)庫(kù)由一個(gè).ns元數(shù)據(jù)文件,以及多個(gè)數(shù)據(jù)文件組成(dbname.{0,1,2,……},以自增的數(shù)字為擴(kuò)展名)。為了防止小數(shù)據(jù)庫(kù)浪費(fèi)空間,MongoDB的數(shù)據(jù)文件默認(rèn)從16M開(kāi)始,倍數(shù)級(jí)別增加,2G為單個(gè)數(shù)據(jù)文件的大小上限。數(shù)據(jù)很少但磁盤(pán)占用了上G的空間?存儲(chǔ)空間預(yù)分配策略16M>32M>64M>128M>256M>512M>1G>2G>2G>……MMAP存儲(chǔ)引擎原理詳解MMAP:mapafileondiskinmemory

MMAP存儲(chǔ)引擎原理詳解-1GKernel≈0.5Gstackmongod……————————————

≈2.5G

MMAP存儲(chǔ)引擎原理詳解目前AMD64

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論