三通it學院-mongodb筆記數(shù)據(jù)庫,存儲的是Bson json二進制化_第1頁
三通it學院-mongodb筆記數(shù)據(jù)庫,存儲的是Bson json二進制化_第2頁
三通it學院-mongodb筆記數(shù)據(jù)庫,存儲的是Bson json二進制化_第3頁
三通it學院-mongodb筆記數(shù)據(jù)庫,存儲的是Bson json二進制化_第4頁
三通it學院-mongodb筆記數(shù)據(jù)庫,存儲的是Bson json二進制化_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

kv數(shù)據(jù)庫mongodb文檔數(shù)據(jù)庫,的是文檔(Bson->json的二進制化特點:內部執(zhí)行引擎為JS解釋器,把文檔成bson結構,在查詢時,轉換為JS對象,并可以js語法來操作.傳統(tǒng)型數(shù)據(jù)庫:結構化數(shù)據(jù),定好了表結構后,每一行的內容,必是符合表結構的,就是說--列mongo文檔型數(shù)據(jù)庫:表下的每篇文檔,都可以有自己獨特的結構(json對象都可以有自己獨思路:如果有,影評,影評的回復,回復的打分在傳統(tǒng)型數(shù)據(jù)庫中,至少要4,關聯(lián)度非常復雜. {}]}mongodb1: 的stable2:3:不用編譯,本身就是編譯后的二進制可執(zhí)行文件4:mongod./bin/mongod--dbpath/path/to/database--logpath/path/to/log--fork--port參數(shù)解釋--dbpath--logpath--port運行端口(--fork進程運5:mongodb非常的占磁盤空間,3-4G左右可以用--smallfiles選項來啟動,將會占用較小空間400M左右1:mongo命show usedatabaseNameshowtables/collections查看當前庫下的Mongodb的庫是隱式創(chuàng)建,use一個不存在的庫然后在該庫下創(chuàng)建collection,即可創(chuàng)建庫增:insert介紹:mongodb的是文檔,.文檔是json格式的對象.語法:db.collectionName.isnert();1:2:增加單個文檔,并指定_id3.增加多個文檔])刪語法db.collection.remove(查詢表達式,選項選項是指{justOne:true/false},是否只刪一行,默認為1:json2:查詢表達式匹配的行,將被刪掉3:如果不寫查詢表達式,collections中的所有文檔將被刪掉1:stusn屬性值為’001’2:stugenderm的文檔,1行改update改誰?改成什么樣?--新值或賦值表達式 語法db.collection.update(查詢表達式,新值,選項);news表中,nameQQ的文檔,并把其文檔值改為{name:’MSN’},結果:文檔中的其他列也不見了,改后只有_idname列了. $unset$rename$inc$setOnInsertupserttrue時,insert操作時,可以補充的字段Option的作用name=’wuyong’的文檔,將被修改沒有_id=99的文檔被修改,因此直接插入該文檔multi:是指修改多行(即使查詢表達式命中多行,1行,如果想改多行,可以用此選newsage=21的文檔,都修改查find,語法db.collection.find(查詢表達式,查詢的列);Db.collections.find(表達式,{1:1,2:1});2:查詢所有文檔,gender(_id屬性默認總是查出來3:db.stu.find({},{gender:1,gender屬性,且不查詢_id3:gendermalename查詢表達式1:{filed:value是指查詢fieldvalue2:$ne!=作用--filedvalue3:$nin-->notin4:$all語法field列是一個數(shù)組,v1,v25:語法作用:field6:是指7:”諾基亞”8:用$where例db.goods.find({$where:'this.cat_id3&&this.cat_id注意:用$where查詢時mongodbbsonjson結構的對象,Update時可用的操作符{"_id":ObjectId("51fc01c4f5de93e1f2856e33"),"age":13,"area":"chaoyang","gender":"male","name":"lisi"}$setOnInsertmysql游標操 游標是什么phpfopen打開文件,得到一個資源一樣,通過資源,可以一行一行的讀文件游標varcursor= Cursor.hasNext(),判斷游標是否已經(jīng)取到盡頭Cursor.Next(),1個單元whilevarmycursor=......例//游varcursor=//也可以簡寫 例vargettitle=function(obj)varcursor=10000行,100頁,10行一般地,我們假設每頁N行,page(1)*N行,再取N行,mysql中l(wèi)imitoffset,N來實現(xiàn)mongo中,skip(),limit()函數(shù)來實現(xiàn)的varmycursor901頁,10varmytcursor通過cursor得到所有數(shù)據(jù),并返回數(shù)組.>varcursor= //2注意:原因:會把所有的行立即以對象形式組織在內存里.btree來組織索引文件,2.4版本以后,hash索引"cursor":"BasicCursor",說明沒有索揮作用"nscannedObjects":1000理論上要掃描多少行cursor":"BtreeCursorsn_1",btree索引常用命令查看當前索引狀態(tài) 1是升續(xù)2是降續(xù)創(chuàng)建多列索引db.collection.ensureIndex({field1:1/-1,field2:1/- 如果針對field做索引,針對不含field列的文檔,將不建立索引適宜于:小部分文檔含有某列時.{"_id": b"),"": "{"_id": c"),"": "{"_id": e"),"": "{"_id": ")如上內容,最后一行沒有列,對于最后一行的分別當成null和忽略最后一行來處理.創(chuàng)建哈希索引(2.4新增的mysqloptimizetableMongodb1:導入/導出可以操作的是本地的mongodb服務器,也可以是的.-h --port -uusername-p 2:mongoexportjson格式的文件問:導出哪個庫,哪,哪幾列,哪幾行?- - - - - 導出csv格式(便于和傳統(tǒng)數(shù)據(jù)庫交換數(shù)據(jù)例[root@localhostmongodb]#./bin/mongoexport-dtest-cnews-otest.jsonconnectedto:exported3records[root@localhostmongodb]#ls [root@localhostmongodb]#more{"_id":{"$oid":"51fc59c9fecc28d8316cfc03"},"title":"aaaa"{"_id":{"$oid":"51fcaa3c5eed52c903a91837"},"title":"todayissataday"{"_id":{"$oid":"51fcaa445eed52c903a91838"},"title":"oknow"2:goods_id,goods_name./bin/mongoexport-dtest-cgoods-fgoods_id,goods_name-o3:1000-o注_idMongoimport-d-c待導入的表(不存在會自己創(chuàng)建-- --file1:./bin/mongoimport-dtest-cgoods--file2:導入./bin/mongoimport-dtest-cgoods--typecsv-fgoods_id,goods_name--file./bin/mongoimport-dtest-cgoods--typecsv--headline-fgoods_id,goods_name--file./goodsall.csvmongodumpbson- - - 例mongodum-d [-c表名 規(guī)律 2:2個文件,bson結構的數(shù)據(jù)文件json3:如果不表名,導出所有的mongorestore導入二進制文件./bin/mongorestore-dtest--directoryperdbdump/test/(mongodump時的備 mongodb注意mongodb中,admin數(shù)據(jù)庫,牽涉到服務器配置層面的操作,數(shù)據(jù)useadmin相當于進入超級用戶管理模式mongo的用戶是以數(shù)據(jù)庫為單位來建立的,每個數(shù)據(jù)庫有自己的管理員我們在設置用戶時,admin數(shù)據(jù)庫下建立管理員這個管理員登陸后,相當于超0:1:命令注意:添加用戶后,我們再次退出并登陸,發(fā)現(xiàn)依然可以直接讀數(shù)據(jù)庫?原因:mongodb服務器啟動時,默認不是需要認證的.要讓用戶生效,需要啟動服務器時,--auth選項.這樣,操作時,就需要認證了.例1:use2:use3:usedb.changeUserPassword(用戶名,新use注:如果需要給用戶添加的權限,可以用json結構來傳遞用戶參例usereplicationsetreplicattionset多臺服務器相同的數(shù)據(jù)副本,提高服務器的可用性Replicationsetmkdir-p/data/r0/data/r11:3個實例,集./bin/mongod./bin/mongod./bin/mongodrsconf}]}3:4:>use./bin/mongo--port>use>showSatAug1716:03:55.786JavaScriptexecutionfailed:error:{"$err":"notmasterandslaveOk=false","code":13435}8.1出現(xiàn)上述錯誤,slave>show#primary1:在3立服務器上,分別運行27017,27018,27019實例,互為副本集,形成3套replset2:3臺服務器上,configserver,27020端口上3:./bin/mongos--port30000--dbconfig./bin/mongo--port5:replset6:7:Fieldcollection的一個字段,filed的值,來計算應該分到哪一個片上.filed叫”片鍵”,shardkeyN篇文檔,形成一個塊"chunk",chunk,chunk,區(qū)別比較大時,(>=3),chunk,移到另一個片上,以chunk為單位,問:10萬條數(shù)據(jù),2個答:chunk比較大(config數(shù)據(jù)庫中,修改chunksize的值問:既然優(yōu)先往某個片上插入,當chunk失衡時,自然,隨著數(shù)據(jù)的增多,shard的實例之間,有chunk來回移動的現(xiàn)象,這將帶來什么問題?答:IO的增加,接上問:能否我定義一個規(guī)則,N1個塊,Mchunk,Mchunk預告分配在不同片上.以后的數(shù)據(jù)直接入各自預分配好的chunk,不再來回移動答:能,手動預先分片!shop.user表為例1:sh.shardCollection(‘shop.user’,{userid:1});user表用useridshard2:for(vari=1;i<=40;i++){sh.splitAt('shop.user',{userid:i*1000})}//1K2K...40K這樣的界限切好chunk(雖然chunk是空的),chunk將會均勻移動到各片上.3:mongosuser數(shù)據(jù).chunk上,chunk就不會來回移項目功能如新 點擊短跳轉到原始 /acF54V>統(tǒng)一解析到固定頁面上去.解決:在apache中用URL重寫,在nginx中,1:如何生成短的參數(shù),如分析1:短2:為公眾服務,的特別多1,2是相互的--短自然就少.2:如果跳轉.答:302跳轉1:a-zA-Z0-9,,6262進制的數(shù)7位可以62^7,約等于約4萬億條數(shù)2:編碼看起來”無規(guī)律一些 10URLid,62進制籌備內容1:2:mongodb的建模庫:info表文檔的格式 ,:3:全局的序號表生成生判斷原始網(wǎng)判斷原始網(wǎng),MongodbShard短項目移植到mongo集ShardBBShardDAAIP Mongodb問題mongos路由器,10條數(shù)據(jù),發(fā)現(xiàn)并沒有均勻的分布在B,D兩個片上,而是都在B上.原因:mongodb并不是按行的級別,在片上平均分配.1:數(shù)據(jù)先往主片上添加,chunk(塊)里,這個塊達到一定大小(64M),再生成新塊.2:新塊仍然是主片上3configdb2塊,而其他片的chunk過少,則會chunk過去.在大型系統(tǒng)中,chunk的自動移動,(balance程序控制的),IO的壓力.預先分片,pre-split注意:collectionUse 例

[0,10000]-->1chunk(10000,20000]->chunk.,系統(tǒng)會預告生成這些空塊,shard片之間達到平衡.然后再插入數(shù)據(jù),chunk不會再自動轉移.MongotopN秒內,inserts每秒插入query每秒查詢update每秒更新delete每秒刪除getmore每秒查詢游標command每秒總命令flushes每秒同步次數(shù)mappedmmap內存大小(M)size虛擬內存(M)res物理內存faults取內存頁面失敗次數(shù)(swap調)lockeddb鎖住某庫的時間idxmiss索引未qr隊列里命令qw隊列里寫入命令ar活動的命aw活動的命令netIn接收的流量netOut發(fā)出的流量conn當前打開連接數(shù)set集名稱repl在集中的名端口{reduce:function(curr,result){t+=}{t+=}#sum(){reduce:function(curr,result){result.num+=},{reduce:function(curr,result){if(curr.shop_price>result.max){result.max=}}{reduce:function(curr,result)t+=result.sum+= finalize:function(result){res

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論