六 MongoDB的串連

來源:互聯網
上載者:User

MongoDB是一個資料庫伺服器,在等待用戶端串連的時候,可以以前台或後台方式運行。當你啟動MongoDB後,可以看到如下輸出:

~/$ ./mongod # # some logging output # Tue Mar 9 11:15:43 waiting for connections on port 27017 Tue Mar 9 11:15:43 web admin interface listening on port 28017 

輸出將停在這裡,並等待用戶端串連到27017連接埠。一旦你串連到資料庫並開始發送命令,它將繼續輸出正執行的操作。你可以使用任何一種MongoDB的 驅動 或是 Mongo
shell 來串連到資料庫。

但你_不能_通過瀏覽器訪問27017連接埠 http://localhost:27017。資料庫不接受HTTP方式訪問該連接埠。

標準連接字串格式
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 是一個必填的首碼,它標識當前字串是標準串連格式。
  • {{username:password@}}可選。給出使用者名稱和密碼後,驅動將在串連到資料庫後嘗試登入。
  • host1 uri裡唯一的必填項,資料庫的串連地址。
  • :portX 可選。預設串連到27017連接埠。
  • /database 是希望串連到的資料庫名,只有在提供 username:password@ 後該值才有效。如果不指定,預設將串連"admin"資料庫。

可以任意指定多個資料庫和連接埠,這用於實現串連到replica pairs/sets。

可選項有:

  • connect=direct|replicaset

    • direct: 直接建立一個到伺服器的串連。如果指定了多個host,將按先後順序挨個嘗試建立串連,直到串連建立成功為止。如果只指定了一個host,則 direct 為預設值。
    • replicaset: 使用creplica set semantics建立串連(即使只提供了一個host)。指定的host作為種子列表來尋找完整的replica set。當指定多個host時 replicaset 為預設值。
  • replicaset=name

    • 驅動驗證建立串連的replica set的名字。隱含 connect=replicaset。
  • slaveok=true|false

    • true: 對於 connect=direct 模式,驅動對列表中的第一個伺服器建立串連,即使它不是主伺服器。對 connect=replicaset 模式,驅動將所有寫操作發送到主節點,將所有讀操作按round
      robin順序分發到從節點。
    • false: 對 connect=direct 模式,驅動按順序嘗試所有host直到找到主節點。對 connect=replicaset 模式,驅動將只串連到主節點,並將所有讀操作和寫操作都發送到主節點。
  • safe=true|false

    • true: 驅動在每次更新操作後都發送 getlasterror 命令以確保更新成功(參考 w 和 wtimeout)。
    • false: 驅動每次更新操作後不發送 getlasterror 命令。
  • w=n

    • 驅動給 getlasterror 發送 { w : n } 命令。隱含 safe=true。
  • wtimeout=ms

    • 驅動給 getlasterror 添加 { wtimeout : ms } 參數。隱含 safe=true。
  • fsync=true|false

    • true: 驅動給 getlasterror 添加 { fsync : true } 參數。隱含 safe=true。
    • false: 驅動不添加 fsync 參數。
樣本

串連到一個運行在本機預設連接埠(27017)的MongoDB

mongodb://localhost 

串連到一個運行在本機預設連接埠(27017)的MongoDB,並以使用者名稱"fred"和密碼"foobar"登入,登入後將預設使用admin資料庫

mongodb://fred:foobar@localhost 

串連到一個運行在本機預設連接埠(27017)的MongoDB,並以使用者名稱"fred"和密碼"foobar"登入,登入後將使用baz資料庫

mongodb://fred:foobar@localhost/baz 

串連到一個replica pair,一台伺服器在example1.com,另一台在example2.com

mongodb://example1.com:27017,example2.com:27017 

串連到原生一個replica set(連接埠分別為27017,27018,27019)

mongodb://localhost,localhost:27018,localhost:27019 

串連到三台伺服器的replica set,將所有寫操作發送到主節點,所有讀操作分發到從節點

 mongodb://host1,host2,host3/?slaveok=true 

串連到第一台伺服器並響應,無論它是replica set的一台,也無論它是主節點還是從節點

 mongodb://host1,host2,host3/?connect=direct;slaveok=true 

註:這種類型的連接字串可用於在你偏好使用某台伺服器但有可供替換的伺服器的時候。

使用safe模式串連到本機

 mongodb://localhost/?safe=true 

使用safe模式串連到replica set,等待備份在至少兩台機器上完成,timeout時間為2秒

 mongodb://host1,host2,host3/?safe=true;w=2;wtimeout=2000 
串連池

 

每個TCP串連將對應一個資料庫線程。因此強烈建議你使用某種形式的串連池技術。幸運的是,大部分官方資料庫驅動已經內建實現了這個功能。但如果你使用CGI或是PHP,對應每個新的請求可能啟動一個新的應用進程,這種情況下需要特別注意串連的處理。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.