Mongodb雜談(一)

來源:互聯網
上載者:User

標籤:mongodb   入門   雜談   mongodb叢集   讀寫分離   

Mongodb雜談(一)


開始學習mongodb時,找一些中文部落格看。後來發現很多知識都搜不到,最後還是看官方網站和權威指南,還是這兩者靠譜,閑的時候可以多瀏覽一下。此文總結一下我入門學習mongodb的經驗。

 

Mongo shell操作mongodb

安裝完mongodb用戶端後,通過shelll來操作mongodb。我是在Ubuntu使用用戶端的,直接用apt-get來安裝,比較簡單。

 

方法1互動式(類似mysql)

串連格式mongo host:port/dbName –u userName –p password

[email protected]:~/data/test4$ mongo localhost:9019/admin–u linger –p 123123

show dbs;

show tables;


方法2指令碼式

mongo –nodb 進入mongo解譯器

> Master=new Mongo("localhost:9019")

connection to localhost:9019

> Mdb=Master.getDB("admin")

admin

> Mdb.auth("linger ","123123")

1

> Mdb.getCollectionNames()

[ "admin","system.indexes", "system.users", "test" ]

 

下面的串連方法也是可以的

Mdb =connect("localhost:9019/admin","linger ","123123")

 

方法3檔案指令碼式

mongo < test.js

test.js檔案內容

Master=new Mongo("localhost:9019")

Mdb=Master.getDB("admin")

Mdb.auth("linger","123123")

Mdb.getCollectionNames()

這裡用了輸入重新導向的方法。

官網還介紹了一個執行js的方法,

mongo localhost:27017/test myjsfile.js

但是我感覺這樣不夠靈活,因為串連的主機ip和連接埠還有dbName寫在命令裡面。

互動方法,更像操作mysql那樣。

指令碼式的方法,更像程式設計語言那樣。

 

互動式和指令碼式一些命令的對照


http://docs.mongodb.org/manual/tutorial/write-scripts-for-the-mongo-shell/#mongo-shell-new-connections

 

簡單談談增刪改讀

mongodb以json格式處理資料的,

比如插入資料

db.testTable.insert({user:”linger”,”age”,”24”})

查詢資料

db.testData.find({user:"linger"})

 

關於增刪改讀的詳細資料可以參考一下資料

增刪改讀教程

http://docs.mongodb.org/manual/applications/crud/

增刪改讀API參考手冊

http://docs.mongodb.org/manual/reference/method/

 

應用開發中mongodb的使用

Shell的方式操作mongodb,我覺得主要是管理mongodb的,這種方式做不了應用開發。

做應用開發時,我們得需要某種程式設計語言,然後通過mongodb的驅動來調用mongodb相關介面。

官網對驅動的描述是這樣子的

An application communicates with MongoDB by wayof a client library, called a driver, that handles all interaction with the database in alanguage appropriate to the application.

http://docs.mongodb.org/manual/applications/drivers/

簡單來說就是,應用通過驅動跟mongodb互動。

驅動有官方提供的,也有第三方自己開發的。

下面這張圖是各語言對應的驅動


網上意外發現雲風大哥竟然自己開發了一套lua驅動。開始他想在C Drive做一層封裝,給lua調用,後來又從協議層實現了一份。我簡單瀏覽了一下代碼,協議層是用C寫的,直接調用windows socket與server通訊,封裝好最基本的api,然後lua再調用C封裝成各種功能。

 

下面這段話來自他部落格

我曾經想在 C Driver 的基礎上做封裝。做的過程中發現 c driver 代碼品質不高,且特性支援不完整,最終我考慮自己從協議層開始重新做一份。

mongo 的文檔不算完整,我感覺協議定義也不是很嚴謹。所以在實現過程中遇到許多麻煩。原本認為一天能寫完的,結果做了三天。今天終於發行就緒一個初步的版本了。

MongoDB 的 Lua Driver

http://blog.codingnow.com/2013/06/mongodb_lua_driver.html

http://blog.codingnow.com/2013/06/lua_mongo.html

https://github.com/cloudwu/lua-mongo

 

可以將mongodb當做hadoop的輸入輸出

MongoDB Connector for Hadoop

The MongoDB Connector for Hadoop is aplugin for Hadoop

that provides the ability to use MongoDB asan input source and/or an output destination.

http://docs.mongodb.org/ecosystem/tools/hadoop/

 

 

關於主從分離

Mongodb可以做主從的叢集,主叫primary或者master,從叫secondary或者slave。

 

值得注意的是secondary預設是不可讀寫的。

當時我串連了一台secondary,想查但是出錯了。

Wed Dec 24 18:50:04.670 error: {"$err" : "not master and slaveOk=false", "code" :13435 } at src/mongo/shell/query.js:128

 

有兩種方法實現從機的查詢:

第一種方法:db.getMongo().setSlaveOk();

第二種方法:rs.slaveOk();

 

對於replica set 中的secondary 節點預設是不可讀的。

在寫多讀少的應用中,使用Replica Sets來實現讀寫分離。

通過在串連時指定或者在主庫指定slaveOk,

由Secondary來分擔讀的壓力,

Primary只承擔寫操作。

http://wengzhijuan12.blog.163.com/blog/static/3622414520137104257376/

讓mongodb的secondary支援讀操作



Replication is the process of synchronizingdata across multiple servers.http://docs.mongodb.org/manual/core/replication-introduction/

Replication用來同步各server資料,可以用來做主從分離。

 

關於Sharding 

Sharding is a method for storing data acrossmultiple machines. MongoDB uses sharding to support deployments with very largedata sets and high throughput operations.

http://docs.mongodb.org/manual/core/sharding-introduction/

簡單來說,就是Sharding是在多台機器儲存資料,起擴容的作用。




關於使用者權限

管理員身份新添加的db,

管理員身份也是直接登入不了的,

得先登入到其他db,

再用use命令來切換到剛才的添加db。

如果想直接登入,要額外添加使用者並授權。

因此,我覺得使用者和密碼是對具體的一個db來說的,而不是對mongodb來說的。

 

給資料庫recsys添加一個使用者linger,並添加讀寫權限。

db.addUser({user:"linger",pwd:"09388296",roles:["readWrite"]})


此處參考

http://docs.mongodb.org/manual/reference/method/db.addUser/#db.addUser

 


額外參考資料:

MongoDB Scripting

http://docs.mongodb.org/manual/administration/scripting/

 


本文連結:http://blog.csdn.net/lingerlanlan/article/details/42150611

本文linger



Mongodb雜談(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.