1. 程式人生 > >雲端計算設計模式(十四)——實體化檢視模式

雲端計算設計模式(十四)——實體化檢視模式

雲端計算設計模式(十四)——實體化檢視模式


產生一個或多個數據儲存中的資料預填充的觀點時,資料被格式化以不利於所需的查詢操作的一種方式。這種模式可以幫助支援高效的查詢和提取資料並提高應用程式的效能

背景和問題


何時儲存資料時,優先順序為開發者和資料管理員經常集中在如何將資料儲存,而不是它是如何讀出。所選擇的儲存格式通常是密切相關的資料用於管理資料的大小和資料的完整性,並且使用的那種儲存要求的格式。例如,使用的NoSQL文獻商店,該資料通常被表示為一系列的聚集體,其每一個包含了所有資訊,該實體

然而,這可能對查詢產生負面影響。當查詢需要一些實體,如訂單幾個客戶沒有所有

順序的資訊的彙總資料的一個子集,它必須提取所有的相關實體資料,以獲得所需的資訊。

解決方案


以支援高效的查詢,一個常見的解決方案是生成預先,即物化資料最適合所要求的結果的格式的圖。其中源資料不是一個格式適合於查詢,在那裡產生一個合適的查詢中的實體化檢視模式描述產生資料預先填充的觀點環境中是困難的,或者其中的查詢效能差,由於該資料性質資料儲存區。

這些例項化檢視其中只包含一個查詢所需的資料以便應用程式能夠快速獲得他們需要的資訊除了連線表組合的資料實體,物化檢視可以包括計算列資料項的指定作為查詢的一部分的當前值組合值或資料項執行的轉換的結果,和值。物化檢視甚至可以

就某一個單一的查詢優化。

關鍵的一點是,一個實體化檢視,它包含的資料完全是一次性的,因為它可以完全從源資料儲存重建。例項化檢視不能直接更新的應用程式,因此它實際上是一個專門的快取。

何時該檢視更改源資料,檢視必須被更新以包括新的資訊這可以在適當的日程自動發生在系統檢測到變化到原始資料的時候其他情況下,可能需要手動重新生成檢視

圖1示出如何實體化檢視圖案可能被使用的例子

圖1  - 實體化檢視模式

問題和注意事項


在決定如何實現這個模式時,請考慮以下幾點
•考慮如何以及何時該檢視將被更新理想的情況下,將被再生響應於一個事件,指示改變到所述資料,儘管在某些情況下,這可能導致過度的

開銷,如果源資料發生急劇的變化或者,考慮使用計劃任務外部觸發手動操作來啟動該檢視再生。
在某些系統中使用事件採購圖案保持修改的資料事件儲存區,例如,實體化檢視可能是必要的通過檢查所有事件,以確定當前狀態預先填充的觀點可以得到事件儲存資訊的唯一方式。使用事件採購其它情況下,有必要測量的優點是物化檢視可以提供物化檢視往往是專門針對一個少數的查詢如果許多查詢必須被使用,維護例項化檢視可能會導致不可接受的儲存容量的要求和儲存成本
生成檢視和更新檢視,如果這發生在一個日程表考慮資料一致性的影響。如果源資料發生了變化,生成檢視該檢視中的資料的複製可能會與原來的資料完全一致。
•考慮在那裡你將儲存檢視。認為不必位於同一商店或分割槽的原始資料它可能是幾個不同的分割槽合併的一個子集。
如果檢視短暫的,僅僅是用來通過反映該資料的當前狀態來提高查詢效能提高擴充套件性,可被儲存在快取記憶體中或者一個較不可靠的位置可以的,如果失去了重建。
當定義一個實體化檢視中,在資料項或列的基礎上計算的或現有的資料項的轉換檢視在查詢傳遞的值或者對這些值,其中,這是適當的組合發揮其最大價值
儲存機制支援它考慮索引實體化檢視,以進一步提高效能。大多數關係型資料庫支援索引意見因為這樣做是基於Apache Hadoop的大資料解決方案

何時使用這個模式


這種模式非常適合於
•建立例項化檢視以上資料是難以直接查詢,或者查詢必須以提取儲存在歸一化半結構化或非結構化的方式資料非常複雜
•建立臨時檢視,可以顯著提高查詢效能可直接充當UI源檢視或資料傳輸物件DTO的進行報告進行顯示。
支援偶爾連線斷開連線的情況,其中連線到資料儲存並不總是可用的該檢視可能這種情況下被本地快取
•簡化查詢和不需要源資料格式知識的方式曝光資料用於實驗例如,通過一個或多個數據庫NoSQL的儲存的一個或多個結構域結合不同的表,然後格式化資料,以滿足它的最終用途
提供訪問源資料的特定子集,出於安全隱私原因不應該是一般訪問,公開進行修改或者完全暴露給使用者。
使用基於他們的個人能力不同的資料儲存彌合脫節例如通過使用儲存中是有效率的用於寫入作為基準資料儲存,能提供良好的查詢讀取效能保持例項化檢視的關係資料庫。

這種模式可能不適合下列情況
•源資料簡單,便於查詢
•源資料非常迅速的變化,或者可以在不使用檢視來訪問。建立檢視處理開銷可能會避免在這些情況下
一致性是一個高優先順序的意見可能並不總是與原始資料完全一致。

例子


圖2示出了使用實體化檢視模式的一個例子。在訂單訂單項資料並在微軟的Azure儲存帳戶單獨的分割槽的客戶相結合,生成包含電子類別中的每個產品銷售總額的檢視客戶是誰的採購數量的計數在一起每個專案

圖2 - 使用實體化檢視模式產生銷售的總結


建立這個例項化檢視需要複雜的查詢。然而,通過將查詢結果作為實體化檢視使用者可以輕鬆獲得的結果和直接使用它們,或將其納入另一個查詢觀點很可能在一個報告系統或儀表板中使用,所以可以更新計劃的基礎上,如每週一次

注意:

雖然這個例子使用的Azure表儲存許多關係資料庫管理系統還提供了例項化檢視的原生支援