雲端計算設計模式(十四)——實體化檢視模式
雲端計算設計模式(十四)——實體化檢視模式
產生過在一個或多個數據儲存中的資料預填充的觀點時,資料被格式化以不利於所需的查詢操作的一種方式。這種模式可以幫助支援高效的查詢和提取資料,並提高應用程式的效能。
背景和問題
何時儲存資料時,優先順序為開發者和資料管理員經常集中在如何將資料儲存,而不是它是如何讀出。所選擇的儲存格式通常是密切相關的資料,用於管理資料的大小和資料的完整性,並且在使用的那種儲存的要求的格式。例如,使用的NoSQL文獻商店時,該資料通常被表示為一系列的聚集體,其每一個包含了所有的資訊,該實體。
然而,這可能對查詢產生負面影響。當查詢需要從一些實體,如訂單的幾個客戶沒有所有的
解決方案
以支援高效的查詢,一個常見的解決方案是生成,預先,即物化資料中最適合於所要求的結果集的格式的圖。其中源資料不是一個格式適合於查詢,在那裡產生一個合適的查詢中的實體化檢視模式描述產生資料的預先填充的觀點在環境中是困難的,或者其中的查詢效能差,由於該資料或該性質資料儲存區。
這些例項化檢視,其中只包含一個查詢所需的資料,以便應用程式能夠快速獲得他們需要的資訊。除了連線表或組合的資料實體,物化檢視可以包括計算列或資料項的指定作為查詢的一部分的當前值,組合值或對資料項執行的轉換的結果,和值。物化檢視甚至可以
關鍵的一點是,一個實體化檢視,它包含的資料完全是一次性的,因為它可以完全從源資料儲存重建。例項化檢視是不能直接更新的應用程式,因此它實際上是一個專門的快取。
何時該檢視更改源資料,檢視必須被更新以包括新的資訊。這可以在適當的日程自動發生,或在系統檢測到變化到原始資料的時候。在其他情況下,可能需要手動重新生成檢視。
圖1示出如何實體化檢視圖案可能被使用的例子。
圖1 - 實體化檢視模式
問題和注意事項
在決定如何實現這個模式時,請考慮以下幾點:
•考慮如何以及何時該檢視將被更新。理想的情況下,將被再生響應於一個事件,指示改變到所述源資料,儘管在某些情況下,這可能導致過度的
•在某些系統中,使用事件採購圖案保持僅修改的資料的事件儲存區時,例如,實體化檢視可能是必要的。通過檢查所有事件,以確定當前狀態預先填充的觀點可以得到從事件儲存資訊的唯一方式。在使用事件採購時比其它情況下,有必要測量的優點是物化檢視可以提供。物化檢視往往是專門針對一個或少數的查詢。如果許多查詢必須被使用,維護例項化檢視可能會導致不可接受的儲存容量的要求和儲存成本。
•生成的檢視時,和更新檢視時,如果這發生在一個日程表考慮資料一致性的影響。如果源資料發生了變化時,生成的檢視時的點,在該檢視中的資料的複製可能會與原來的資料完全一致。
•考慮在那裡你將儲存的檢視。認為不必位於同一商店或分割槽的原始資料。它可能是從幾個不同的分割槽合併的一個子集。
•如果檢視是短暫的,僅僅是用來通過反映該資料的當前狀態來提高查詢效能,或提高擴充套件性,它可被儲存在快取記憶體中或者在一個較不可靠的位置。它可以的,如果失去了重建。
•當定義一個實體化檢視中,在資料項或列的基礎上計算的或現有的資料項的轉換的檢視,在查詢傳遞的值,或者對這些值,其中,這是適當的組合發揮其最大價值。
•凡儲存機制支援它,考慮索引實體化檢視,以進一步提高效能。大多數關係型資料庫支援索引的意見,因為這樣做是基於Apache Hadoop的大資料解決方案。
何時使用這個模式
這種模式非常適合於:
•建立例項化檢視以上資料是難以直接查詢,或者查詢必須以提取儲存在歸一化,半結構化或非結構化的方式資料非常複雜。
•建立臨時檢視,可以顯著提高查詢效能,或可直接充當UI源檢視或資料傳輸物件(DTO的),進行報告,或進行顯示。
•支援偶爾連線或斷開連線的情況,其中連線到資料儲存並不總是可用的。該檢視可能在這種情況下被本地快取。
•簡化查詢和在不需要源資料格式的知識的方式曝光資料用於實驗。例如,通過在一個或多個數據庫,或在NoSQL的儲存的一個或多個結構域結合不同的表,然後格式化的資料,以滿足它的最終用途。
•提供訪問源資料的特定子集,出於安全或隱私原因,不應該是一般訪問,公開進行修改,或者完全暴露給使用者。
•使用基於他們的個人能力不同的資料儲存在彌合脫節。例如,通過使用雲儲存中是有效率的用於寫入作為基準資料儲存,並能提供良好的查詢和讀取效能保持例項化檢視的關係資料庫。
這種模式可能不適合於下列情況:
•源資料簡單,便於查詢。
•源資料非常迅速的變化,或者可以在不使用檢視來訪問。中建立檢視處理開銷可能會避免在這些情況下。
•一致性是一個高優先順序。的意見可能並不總是與原始資料完全一致。
例子
圖2示出了使用實體化檢視模式的一個例子。在訂單,訂單項資料,並在微軟的Azure儲存帳戶單獨的分割槽表的客戶相結合,生成包含在電子類別中的每個產品銷售總額的檢視,客戶是誰的採購數量的計數在一起每個專案。
圖2 - 使用實體化檢視模式產生銷售的總結
建立這個例項化檢視需要複雜的查詢。然而,通過將查詢結果作為實體化檢視,使用者可以輕鬆獲得的結果和直接使用它們,或將其納入另一個查詢。觀點很可能在一個報告系統或儀表板中使用,所以可以更新計劃的基礎上,如每週一次。
注意:
雖然這個例子使用的Azure表儲存,許多關係資料庫管理系統還提供了例項化檢視的原生支援。