《MongoDB高手課》學習記錄(第十五天)

第十五天

今天學習《18 | 設計模式集錦》,主要講了列轉行、版本字段、近似計算、預聚合四個文檔設計模式和它的應用場景。乾貨不少。設計模式

列轉行

以存儲電影信息的文檔爲例,由於各個國家的首映時間不一樣,咱們的最簡單的想法可能爲了統計方便,會每增長一個上映地點,就增長一個統計字段,而後再給這個字段建一個索引。這樣統計查詢的速度是快了,可是系統寫入的效率卻降低了。
image.png
那麼怎麼解決這個問題呢?採用內嵌數組的方式來組織數據,減小字段數量。而後經過創建內聯索引來解決查詢的問題。
image.png數組

小結

image.png

版本字段

文檔模型的優點就是能夠靈活的組織數據,可是面臨的問題,就是到底何時對文檔進行了更改,沒辦法直觀的看出來。
image.png
怎麼解決這個問題呢?加個版本字段。這樣就能夠直觀看出來,當前文檔是什麼版本,當前這個版本的文檔與上一個版本有什麼區分,也方便升級。
image.png學習

小結

image.png

近似計算

要對一個頁面的點擊量進行統計,也就是埋點每點擊一次,就更新一下統計數據,但一般咱們的統計並非要求很是精確的。這樣形成的問題就是,系統大部分壓力都產生在更新點擊數量上了。
image.png
怎麼解決?使用近似計算,也就是原來我是每點擊一次就更新一下,調整爲每隔N次,好比10次更新一下數據。
image.pngspa

小結

image.png

預聚合

這個模式與上個相比就是要求統計精確的數據。好比銷售業績,遊戲排名等,這樣的,咱們基本就是經過聚合計算來進行數據的彙總。但這樣形成的問題就是每次統計都會形成系統計算壓力過大。
image.png
怎麼解決?將統計分解到文檔中,也就是給文檔預置統計字段,每次更新都更新一下統計數據,減小集中統計時候的系統壓力。
image.png設計

小結

image.png

總結

今天課程就是講解了這4個模式,看起來很簡單,但想要用好,確實須要多多思考。明天開始事務的學習。3d

相關文章
相關標籤/搜索