2011-03-04 26 views
3

CouchDB採用a cool pattern,可用於多種其他場景。我正在談論map/reduce結果的持久B-樹索引。這個想法是預先計算彙總數據並將其存儲在B樹索引的不同級別。然後可以使用索引高效地查詢聚合,而不必總是重新聚集所有數據。然後,如果任何葉級值發生變化,只有通過樹的上升路徑必須重新計算。CouchDB用於索引彙總數據的通用名稱

例如,如果數據是隨時間推移的價格,那麼索引可以在日,月和年級別存儲項目的SUM和COUNT。然後,如果任何人想要查詢年初至今的平均價格,則所有必須做的事項是總結自年度開始以來所有整個月份的所有SUM和COUNT以及上個月的所有可用日期,然後將總和SUM總計COUNT。如果過去的價格必須改變,則變化必須通過指數傳播,但只有相應的日,月和年的價值才需要更新,即使如此,其他日期和其他月份的價值也可以重新用於計算。

這種方法的通用名稱是什麼?在任何流行的RDBMS中是否存在類似的東西?在實踐中使用它的任何經驗?

回答

5

Materialized view

「物化視圖包含查詢結果的數據庫對象,它們是位於遠程數據的本地副本,或正在使用基於表的數據聚合創建彙總表。物化存儲基於遠程表的數據的視圖也被稱爲快照。「

這是一篇維基百科文章,主要討論了在RDBMS環境中存儲結果的情況。

我個人更喜歡術語「索引視圖」。我實際上通過搜索"indexed view" on Google來發現維基百科文章。