MongoDB報表例項 標籤成員方案

2021-09-21 23:10:35 字數 2173 閱讀 5203

更加複雜,但是靈活的方法,用於路由報表查詢到乙個專屬節點去使用標籤和讀偏好。

因為使用隱藏成員,設定乙個成員為priority: 0,但是不設定它為隱藏。然而,分配乙個標籤use: reporting:

1

2

3

4

5

6

7

primary> conf = rs.config()

, ,  ] }//we'll use members[1], the instance on port 28017

primary> conf.members[1].priority = 0

primary> conf.members[1].tags =

primary> conf.version += 1

primary> rs.reconfig(conf)

[...]

像之前一樣,xucy.local:28017絕不會成為主;然而,在這種情況下其他兩個機器變得不可達,你的應用將能處理讀到報表伺服器。它會繼續不用說你的報表應該在這樣乙個事件期間暫停。

你的報表**將會像這樣(用python,這次):

1

2

3

frompymongoimportmongoreplicasetclient

frompymongo.read_preferencesimportreadpreference

rep_set=mongoreplicasetclient('xucy.local:27017,xucy.local:28017,xucy.local:29017', replicaset='test', read_preference=readpreference.secondary, tag_sets=)

以上只傳送報表查詢到副本標記有use: reporting,並且如果沒有可用的主,它根本上避免執行。在實踐中,你會丟擲異常並在你的擴充套件**中處理它們,如果你發現沒有主!更好的還是,你的監控可以設定執行時可用的值,你可以轉移,例如,reporting_system.ok()。

益處和考慮

使用標籤和讀偏好允許一些級別的靈活性,而那在隱藏成員中是不可能的。

報表例項可以容易新增

因為你的連線**是可定義的,而不是指定到乙個專門的主機,新增更多節點為報表作業,只新增他們並標記他們,像這樣:

1

primary> rs.add(})

你存在的**將會利用新的容量,並且複製集將繼續執行,不用觸發選舉和從客戶端斷開連線。

報表例項可以被跳過或刪除

報表標記可以被移動,或者甚至移除,如果你需要提供讀頻寬給其他作業在必要時。像這樣的乙個重新配置將會觸發選舉,並重連所有客戶端,但是這不會比其他選項更糟糕。注意:這是乙個反模式的通過發布生產讀到副本成員來增加常用容量。這只是乙個緊急方式。

一些驅動需要手工同步

ruby驅動(像1.9.2),例如,不會重新整理副本集的檢視除非客戶端像這樣顯式初始化,使用refresh_mode: :sync。檢查你的驅動文件。

結論

簡單的複製配置已經成為我喜歡mongodb原因之一,它使得mysql複製看起來像出自石器時代。它有些粗糙,但是已經在不斷提公升效能。無論你使用標記集合或者隱藏成員,構建乙個報表架構在mongodb的複製屬性上,簡化操作,讓你專注於構建乙個偉大的應用。

rdlc,reportview,報表例項

string sql select top 5 event time,event remark,event usemoney,event money,event sz,kind id,user id,event id from tbevent order by event time desc dat...

MongoDB索引例項

3.0版本後推薦使用createindex 來建立索引 如果文件數目較多,建立索引需要消耗一定的時間。如果系統負載較重,且有很多已經存在的文件,不能直接使用這個命令進行直接建立。需要在使用資料庫之前就將索引建立完畢。否則嚴重影響資料庫的效能。上服務時,對常用的查詢一定要新增相應的索引。由於索引需要在...

靜態成員與例項成員

靜態成員與例項成員 成員 屬性和方法。例項 由建構函式建立出來的物件。靜態成員 和建構函式相關的屬性和方法。例項成員 由建構函式建立出來的物件的屬性和方法。靜態成員與建構函式有關,例項成員與例項有關。靜態成員和例項成員一般情況下是不能直接相互訪問的,即 例項 物件 是無法直接訪問靜態成員的 反之也是...