Ruby操作MongoDB(進階)-建立資料庫用戶端串連

來源:互聯網
上載者:User

標籤:ruby   tutorials   mongodb   client   資料庫連接   

在Ruby的MongoDB2.4.3驅動版本中,通過建立一個Mongo::Client對象來構建一個Ruby的資料庫連接。Mongo::Client構造器提供兩種構造方式:一是通過提供主機列表和一些選擇性參數,另外還有通過一個串連URI。建立好的資料庫連接預設串連到admin資料庫。

1.使用Mongo::Client建立資料庫用戶端串連

1.1. 單伺服器模式建立資料庫連接

在單伺服器模式下建立資料庫連接,只需提供一個主機串連參數。另外,還可以通過消除自動探索步驟強制將叢集拓撲轉換為單機模式。可以通過下述三種方式建立單伺服器模式下的資料庫連接

Mongo::Client.new([‘127.0.0.1:27017‘],:database=>‘mydb‘)

Mongo::Client.new([‘127.0.0.1:27017‘],:database=>‘mydb‘,:connect=>:direct)

Mongo::Client.new(‘mongodb://127.0.0.1:27017/mydb‘)

1.2. 複本集模式建立資料庫連接

通過傳遞一個或多個主機地址參數和複本集名字,可以建立一個到複本集的資料庫連接。即使在建立時沒有完全提供複本集的所有資訊,MongoDB的磁碟機的自動探索模式可以找到複本集中的所有成員。棄置站台集中的資料庫連接可以通過下面的形式建立:

Mongo::Client.new([‘127.0.0.1:27017‘,‘127.0.0.1:27018‘],:database=>‘mydb‘,:replica_set=>‘myapp‘)

Mongo::Client.new(‘mongdb://127.0.0.1:27017,127.0.0.1:27018/mydb?replicaSet=myapp‘)

1.3. 共用叢集模式建立資料庫連接

通過傳遞一個或多的Mongos 主機,來建立一個共用叢集模式。自動探索模式可以限定伺服器是mongos執行個體,但如果你關閉了自動探索模式,就要將shared參數傳遞到串連中來實現叢集模式資料庫連接的建立。通過以下三種例子可以建立資料庫連接:

Mongo::Client.new([‘127.0.0.1:27017‘],:database=>‘mydb‘)

Mongo::Client.new([‘127.0.0.1:27017‘],:database=>‘mydb‘,:connect=>:shared)

Mongo::Client.new(‘mongodb://127.0.0.1:27017/mydb?connect=shared‘)

2. 資料庫用戶端串連參數選項

在使用Mongo::Client時,可以通過多個不同的選擇性參數來配置驅動的行為,可以通過在構造器中配置這些參數或者將它們通過URI提供給Mongo::Client.

鑒於URI的參數設定方式需要使用駝峰格式,這不是Ruby的標準格式。下面的表格中列出了URI格式的參數配置選項,以及相對應的使用Ruby構造器的參數選項。使用上述兩種參數設定方式時需要注意URI參數設定中的選項時間單位是毫秒,而在Ruby構造器中對應的是float類型的秒。

3. URI參數及對應Ruby參數


URI選項 Ruby選項
replicaSet=String :replica_set=>String
connect=String :connect=>Symbol
ssl=Boolean :ssl=>true|false
connectTimeoutMS=Integer :connect_timeout=>Float
socketTimeoutMS=Integer :socket_timeout=>Float
serverSelectionTimeoutMS=Integer :server_selection_timeout=>Float
localThresholdMS=Integer :local_threshold=>Float
maxPoolSize=Integer :max_pool_size=>Integer


minPoolSize=Integer :min_pool_size=>Integer
waitQueueTimeoutMS=Integer :wait_queue_timeout=>Float
w=Integer|String { :write=>{:w=>Integer|String}}
wtimeoutMS=Integer { :write=>{:wtimeout=>Float}}
journal=Boolean { :write=>{:j=>true|false}}
fsync=Boolean { :write =>{:fsync=>true|false}}
readPreference=String { :read=>{:mode=>Symbol}}
readPreferenceTags=String { :read=>{:tag_sets=>Array<String> }}



authSource=String :auth_source=>String
authMechanism=String :auth_meth=>Symbol
authMechanismProperties=Strings { :auth_mech_properties=>{:service_realm=>String,:canonicalize_host_name=>true|false,:service_name=>String}}
4. 下面會詳細講解Ruby中每個選項的作用,預設值和類型

參數 參數描述 參數類型 預設值
:replica_set 當使用複本集模式時,該參數用於設定複本集的名字,且可以在啟用自動探索模式時通過名字過濾伺服器

String

none
:ssl 通知用戶端通過SSL串連到伺服器 Boolean false
:ssl_cert 用於設定認證檔案路徑,該認證用於識別評鑑到MongoDB串連是否有效。如果設定了該選項,將會比:ssl_cret_string的值和:ssl_sret_object的值具有更高的使用優先順序 String

none

:ssl_cert_string 該string欄位包含了使用PEM編碼的用於鑒別串連有效性的認證資訊。如果設定了該參數,它比:ssl_cret_object的值具有更高的使用優先順序 String none
:ssl_cert_object 使用OpenSSL::X509::Certificate認證鑒別到MongoDB的串連 OpenSSL::X509::Certificate none
:ssl_key 鑒別串連有效性的私密金鑰檔案。雖然秘鑰檔案與憑證存放區在同一個檔案,但是兩個需要被精確匹配。如果設定了該參數,它比:ssl_key_string和:ssl_key_object具有更高的使用優先順序 String none
:ssl_key_string 包含用於鑒別串連有效性的使用PEM編碼的私密金鑰字串資訊。如果設定了這個參數,它比:ssl_key_object具有更高的使用優先順序 String none
:ssl_key_object 鑒別串連有效性的私密金鑰對象 OpenSSL::PKey none
:ssl_key_pass_phrase 私密金鑰的密碼資訊 String none

:ssl_ca_cert 一組把授權認證串連起來的認證資訊的儲存路徑,這些授權認證用於從串連的另一端驗證認證會否通過。參數:ssl_verfiy的使用需要設定:ssl_ca_cret,:ssl_ca_cret_string,:ssl_ca_cret_object三個參數中的一個。 String none
:ssl_ca_cert_string 包含一組把授權認證串連起來的認證資訊的字串,這些授權認證用於從串連的另一端驗證認證會否通過。參數:ssl_verfiy的使用需要設定:ssl_ca_cret,:ssl_ca_cret_string,:ssl_ca_cret_object三個參數中的一個。 String none
:ssl_ca_cert_object 代表了把授權認證串連起來的認證資訊的OpenSSL::X509::Certificate數組,這些授權認證用於從串連的另一端驗證認證會否通過。參數:ssl_verfiy的使用需要設定:ssl_ca_cret,:ssl_ca_cret_string,:ssl_ca_cret_object三個參數中的一個。 Array<OpenSSL::X509::Certificate> none
:ssl_verify 用於設定是否進行對等認證驗證 Boolean false
:connect_timeout 建立一個socket串連,拋出異常之前的等待時間(秒) Float 10秒
:socket_timeout 在一個socket執行操作拋出異常之前的等待時間(秒) Float 5秒
:max_pool_size 單個伺服器的串連池的最大串連數 Integer 5
:min_pool_size 單個伺服器的串連池的最小串連數 Integer 1
:wait_queue_timeout 等待串連池中串連變為有效狀態的等待時間 Float 1
:write

具體設定與寫相關的Hash類型的參數。其值可以為:w,:wtimeout,:j,:fsync

如{ :write =>{ :w=>2}}

Hash {:w=>1}

:read Hash類型的參數,用於具體設定首選讀模式以及對於選定伺服器的標籤集合。其值可以設定為:mode和:tag_sets。例如{ :read=>{ :mode=>secondary,:tag_sets=>["berlin"]}} Hash {:mode =>:primary}
:auth_source 具體設定了授權源資訊 String 2.6及其之後版本,如果提供了授權認證,則預設為admin;否則的話就是當前的資料庫
:auth_mech 具體設定使用的授權機制。可以是下述值的其中之一::mongodb_cr,:mongodb_x509,:plain,:scram Symbol MongoDB3.0後的版本,如果使用者提供了資格認證但是又沒有設定:auth_mech屬性,則預設為:scram。2.6版本之前,預設為:mongodb_cr
:auth_mech_properties 提供了額外的授權機制屬性 Hash none
:user 認證使用的使用者名稱稱
String none
:password 認證使用的使用者密碼 String none
:connect 覆蓋驅動的自動探索特性,並且強制將叢集拓撲結構轉變為一個特定的類型。包括::direct,:replica_set或者:shared Symbol none
:heartbeat_frequency 多個監視器非同步重新整理伺服器狀態的時間(秒) Float 30
:database 需要串連的資料庫名字 String admin
:server_selection_timeout 選定一個合適的伺服器去執行某些操作,在拋出異常之前的等待時間 Float 30

:local_threshold 設定了最近的伺服器和可以被選中的伺服器之間切換的最大延遲時間 Float 0.015
5. 逾時相關參數的設定細節




本文出自 “techFuture” 部落格,謝絕轉載!

Ruby操作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.