Read Preference in MongoDB

basic concepts

(1)read preference describes how MongoDB clients/drivers route read operations to members of a replica set. five modes are primary,secondary,primaryPreferred,secondaryPreferred,nearest
(2)tag sets that is mappings of arbitrary keys and values and can customize read preference and write concern, target read operations to specific members of a replica set, so as to allow configurable awareness.
as for members in replica set or sharding cluster, they could be tagged as {‘dc’: ‘dc_1’},{‘use’: ‘reporting’, ‘disk’: ‘ssd’} or {‘rack’: ‘a’, ‘use’: ‘production’}

core process

(a)assemble a list of suitable members, taking into account member type(i.e. secondary,primary.etc)
(b)excludes members not matching the tag sets, if specified
(c)determine which suitable members is the closest to client in absolute terms.
(d)…

practice

(1)how read preference interacts with tag sets?
   (a)in mongo shell, an example looks like
db.collection.find().readPref({mode:'nearest',tags:[{'dc': 'dc_1'}]})
in mongodb enterprise 3.2, the test failed: “mode have wrong type, Excepted String, Found object”. when changing to .readPref(‘nearest’,[{‘dc’: ‘dc_1’}])
that direct read operation/cursor to nearby member in data center called dc_1.
   (b)likewise, another example
db.collection.find().readPref('primary',[{'dc':'dc_1'}]), this statement outputs an error as shown below
這裏寫圖片描述
the cause is as described errmsg field in document.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章