《MongoDB快速實戰(zhàn)》要點:
本文介紹了MongoDB快速實戰(zhàn),希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫
百度搜索:小強測試品牌
轉(zhuǎn)發(fā)+點贊=支持
交流群:522720170
點擊右上角“存眷”按鈕可以訂閱我們哦
mongodb介紹
MongoDB是一個高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比擬熱門的一種.它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲方式.Mongo使用C++開發(fā).Mongo的官方網(wǎng)站地址是:http://www.mongodb.org/
NoSql,全稱是 Not Only Sql,指的是非關(guān)系型的數(shù)據(jù)庫.下一代數(shù)據(jù)庫主要辦理幾個要點:非關(guān)系型的、分布式的、開源的、水平可擴展的.原始的目的是為了大規(guī)模web應(yīng)用,這場運動開始于2009年初,通常特性應(yīng)用如:模式自由、支持簡易復(fù)制、簡單的API、最終的一致性(非ACID)、大容量數(shù)據(jù)等.NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲,當(dāng)然還有其他的文檔型的、列存儲、圖型數(shù)據(jù)庫、xml數(shù)據(jù)庫等.
特點
高性能、易部署、易使用,存儲數(shù)據(jù)非常便利.主要功能特性有:
面向集合存儲,易存儲對象類型的數(shù)據(jù).
模式自由.
支持動態(tài)查詢.
支持完全索引,包括內(nèi)部對象.
支持查詢.
支持復(fù)制和故障恢復(fù).
使用高效的二進(jìn)制數(shù)據(jù)存儲,包含大型對象(如視頻等).
自動處理碎片,以支持云計算條理的擴展性
支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅(qū)動法式,社區(qū)中也提供了對Erlang及.NET等平臺的驅(qū)動法式.
文件存儲格式為BSON(一種JSON的擴展).
可通過網(wǎng)絡(luò)拜訪.
功能
面向集合的存儲:適合存儲對象及JSON形式的數(shù)據(jù).
動態(tài)查詢:Mongo支持豐富的查詢表達(dá)式.查詢指令使用JSON形式的標(biāo)志,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組.
完整的索引支持:包含文檔內(nèi)嵌對象及數(shù)組.Mongo的查詢優(yōu)化器會分析查詢表達(dá)式,并生成一個高效的查詢計劃.
查詢監(jiān)視:Mongo包括一個監(jiān)視工具用于分析數(shù)據(jù)庫操作的性能.
復(fù)制及自動故障轉(zhuǎn)移:Mongo數(shù)據(jù)庫支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主-從模式及服務(wù)器之間的相互復(fù)制.復(fù)制的主要目標(biāo)是提供冗余及自動故障轉(zhuǎn)移.
高效的傳統(tǒng)存儲方式:支持二進(jìn)制數(shù)據(jù)及大型對象(如照片或圖片)
自動分片以支持云級其余伸縮性:自動分片功能支持水平的數(shù)據(jù)庫集群,可動態(tài)添加額外的機器.
適用場景
網(wǎng)站數(shù)據(jù):Mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性.
緩存:由于性能很高,Mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層.
大尺寸,低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比擬昂貴,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進(jìn)行存儲.
高伸縮性的場景:Mongo非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫.Mongo的路線圖中已經(jīng)包括對MapReduce引擎的內(nèi)置支持.
用于對象及JSON數(shù)據(jù)的存儲:Mongo的BSON數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢.
MongoDB的使用限制
高度事務(wù)性的系統(tǒng):例如銀行或會計系統(tǒng).傳統(tǒng)的關(guān)系型數(shù)據(jù)庫目前還是更適用于必要大量原子性復(fù)雜事務(wù)的應(yīng)用程序.
傳統(tǒng)的商業(yè)智能應(yīng)用:針對特定問題的BI數(shù)據(jù)庫會對發(fā)生高度優(yōu)化的查詢方式.對于此類應(yīng)用,數(shù)據(jù)倉庫可能是更合適的選擇.
安裝與運行
官網(wǎng)下載對應(yīng)的版本,必定要分清楚是32位還是64位
此處以32位的tar.gz包為例子
tar
mv改名,改名為mongodb
mv移動到/opt目錄下,并修改權(quán)限為777
mkdir -p /data/db,并修改權(quán)限為777
vi ~/.bashrc
參加:export PATH=/opt/mongodb/bin:$PATH
重啟機器
輸入命令mongod即可啟動,可以看到端口,瀏覽器拜訪IP+端口即可(不要關(guān)閉該窗口)
如果無法啟動就刪除掉/data/db下的mongod.lock
mongoVUE基本操作
MongoVUE是一個MongoDB在windwos下的客戶端管理工具,一般都會使用它來操作.
name隨便寫,server寫你服務(wù)器的ip,port端標(biāo)語,mongodb的默認(rèn)端口是27017,然后連接就OK
體系布局
MongoDB 的文檔(document) ,相當(dāng)于關(guān)系數(shù)據(jù)庫中的一行記錄.
多個文檔組成一個集合(collection) ,相當(dāng)于關(guān)系數(shù)據(jù)庫的表.
多個集合(collection) ,邏輯上組織在一起,便是數(shù)據(jù)庫(database) .
一個 MongoDB 實例支持多個數(shù)據(jù)庫(database) .
單條件查詢
in查詢
多條件查詢and
多條件查詢or
顯示查詢字段
排序(1 升序;-1 降序)
插入記錄
修改記錄
刪除記錄
輸入條件,運行即可刪除
mongodb監(jiān)控——mongostat
getmore:通常發(fā)生在結(jié)果集比擬大的查詢時, 第一個query返回了部分結(jié)果,后續(xù)的結(jié)果是通過getmore來獲取的
flushs:每秒執(zhí)行同步將數(shù)據(jù)寫入硬盤的次數(shù).
mapped 映射到內(nèi)存的數(shù)據(jù)大小,單位是MB,
vsize:虛擬內(nèi)存使用量,單位MB
res:物理內(nèi)存使用量,單位MB
faults:每秒拜訪失敗數(shù)(只有Linux有),數(shù)據(jù)被交換出物理內(nèi)存,放到swap.不要超過100,否則就是機器內(nèi)存太小,造成頻繁swap寫入.此時要升級內(nèi)存或者擴展
locked db:被鎖的時間百分比,盡量控制在10%以下
idx miss %:索引不命中所占百分比.如果太高的話就要考慮索引是不是設(shè)計不合理
qr|qw ar|aw: mongo負(fù)載高時,命令來不及處置,mongo將命令放入隊列. qr|qw 等待讀/寫的隊列長度 ar|aw 執(zhí)行讀/寫操作客戶端數(shù)量.
conn:有多少連接
mongodb profiler
類似于mysql中的慢查詢
開啟profile
db.setProfilingLevel(n);
n:
0 - 關(guān)閉性能闡發(fā),測試環(huán)境可以打開,生成環(huán)境關(guān)閉,對性能有很大影響
1 - 開啟慢查詢?nèi)罩?執(zhí)行時間大于100毫秒的語句
2 - 開啟所有操作日志
db.setProfilingLevel(level , slowms);
Mongo Profile 記錄是直接存在系統(tǒng)db里的,記錄位置local》collections》system.profile
重點指標(biāo)以及常見優(yōu)化
millis: 該命令執(zhí)行耗時,以毫秒記
responseLength:查詢返回的長度
nscanned:在執(zhí)行查詢操作的時候掃描了多少對象
nreturned:從查詢中返回的成果對象
如果 nscanned(掃描的記錄數(shù))遠(yuǎn)大于 nreturned(返回成果的記錄數(shù))的話,那么我們就要考慮通過加索引來優(yōu)化記錄定位了.
db.表名.ensureIndex({age:1}) //1(升序);-1(降序)
對于創(chuàng)建索引的建議是:如果很少讀,那么盡量不要添加索引,因為索引越多,寫操作會越慢.如果讀量很大,那么創(chuàng)建索引還是比擬劃算的.
當(dāng)返回的結(jié)果集很大時即responseLength值相當(dāng)大時,會使得性能下降,在做find查詢時,必要添加第二個查詢參數(shù),只獲取必要顯示的字段.
造成慢查詢可能是索引的問題,也可能是數(shù)據(jù)不在內(nèi)存造成(磁盤讀入).
最大連接數(shù)
db.serverStatus().connections;
current數(shù)值+available數(shù)值便是當(dāng)前mongodb最大連接數(shù)
啟動里面加參數(shù) --maxConns=3000
不要忘了linux中的打開最大文件連接數(shù)會影響此處的設(shè)置,必定要把他也調(diào)大
mongo主從復(fù)制
架構(gòu)上和mysql的主從復(fù)制類似,原理如下:
mongodb的復(fù)制至少需要兩個服務(wù)器或者節(jié)點.其中一個是主,負(fù)責(zé)處理客戶端哀求,其余為從,負(fù)責(zé)映射主節(jié)點的數(shù)據(jù).主節(jié)點記錄在其上執(zhí)行的所有操作.從節(jié)點定期輪詢主節(jié)點獲得操作,然后對自己的數(shù)據(jù)副本執(zhí)行這些操作.
打開oplog
百度搜索:小強測試品牌
轉(zhuǎn)發(fā)+點贊=支持
交流群:522720170
點擊右上角“存眷”按鈕可以訂閱我們哦
《MongoDB快速實戰(zhàn)》是否對您有啟發(fā),歡迎查看更多與《MongoDB快速實戰(zhàn)》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9238.html