文章詳情頁
Oracle 9i數(shù)據(jù)庫中實(shí)體化視圖簡介
瀏覽:95日期:2023-11-13 16:16:24
今天的數(shù)據(jù)庫,無論是數(shù)據(jù)倉庫、數(shù)據(jù)中心還是OLTP 系統(tǒng),都包含大量的信息等待人們?nèi)グl(fā)現(xiàn)和理解。然而,如何以一種及時的方式查找和表示這些信息是一個重大的問題,尤其是當(dāng)需要搜索龐大數(shù)量信息的時候。 實(shí)體化視圖能夠幫助解決這個問題,因?yàn)樗峁┝艘环N快速訪問和報告數(shù)據(jù)的方法。 簡介 實(shí)體化視圖首先在Oracle8i 中引入,是稱為“概要治理”的組件的一部分。可能您的公司已經(jīng)在使用實(shí)體化視圖,但只知道它的其他名字,例如概要或聚合表。在這里我們討論如何創(chuàng)建和治理實(shí)體化視圖,還討論查詢重寫功能如何透明地重寫SQL 查詢,從而使用實(shí)體化視圖來縮短查詢響應(yīng)時間。這將使數(shù)據(jù)庫用戶完全無需知道存在哪些實(shí)體化視圖。 實(shí)體化視圖應(yīng)看作是一種非凡的視圖,它物理上存在于數(shù)據(jù)庫內(nèi)部,可以包括聯(lián)接和/或聚合。它能夠在執(zhí)行之前預(yù)先計算開銷大的聯(lián)接和聚合操作,因此它的存在縮短了查詢執(zhí)行時間。 今天,使用自身概要的公司花費(fèi)了大量的時間用于手工創(chuàng)建概要、識別將創(chuàng)建哪些概要、對概要進(jìn)行索引和更新,以及建議用戶使用哪些概要。 現(xiàn)在DBA 將僅須在開始時創(chuàng)建實(shí)體化視圖,而無論數(shù)據(jù)源何時發(fā)生變化,它都將被自動更新。此外還有一個概要顧問組件,它向DBA 推薦創(chuàng)建、刪除和保留哪些實(shí)體化視圖。 數(shù)據(jù)倉庫或數(shù)據(jù)庫用戶將可以體會到使用實(shí)體化視圖的最大好處之一,DBA 無須再告訴他們存在哪些實(shí)體化視圖。他們可以對數(shù)據(jù)庫中的表或視圖編寫自己的查詢。然后Oracle 服務(wù)器的查詢重寫機(jī)制將自動重寫SQL 查詢以使用實(shí)體化視圖。這樣就大大縮短了查詢響應(yīng)時間,終端用戶無須“了解概要”。 為何使用概要治理 當(dāng)向數(shù)據(jù)倉庫終端用戶問起他們希望從中獲得什么,大部分人都會回答:快速準(zhǔn)確的信息。但是這也給數(shù)據(jù)倉庫設(shè)計者出了個大難題:為了回答“在y 地點(diǎn)我們賣出多少件x 產(chǎn)品”,同時希望避免讀取表中的每一行,必須建立一條到數(shù)據(jù)的快速路由。 解決此問題最常見的辦法之一就是創(chuàng)建概要表,Oracle 將其稱為實(shí)體化視圖。這一工作包括首先要理解典型負(fù)荷,然后創(chuàng)建規(guī)模非常小的實(shí)體化視圖,實(shí)體化視圖中可以包含所需信息的聯(lián)接和/或聚合。例如,為了回答前面的問題,實(shí)體化視圖中每種產(chǎn)品對應(yīng)于一行,指明每個區(qū)域的銷售量。因此假如一家公司在5 個地點(diǎn)銷售2000 件產(chǎn)品,則將要讀取的最大行數(shù)始終為10000,而無論已經(jīng)售出多少商品。 很明顯,實(shí)體化視圖必須保證精確,但該技術(shù)意味著終端用戶現(xiàn)在需要讀取的行數(shù)很少,因此可以始終快速地接收結(jié)果。數(shù)據(jù)庫容量已經(jīng)增長到兆兆字節(jié),因此使用這樣的方法來縮短查詢響應(yīng)時間就顯得越來越重要。今天許多站點(diǎn)都創(chuàng)建了自己的概要表,因此使用Oracle8 概要治理所帶來的額外好處是: 1、Oracle 中的查詢重寫機(jī)制是透明的并采用實(shí)體化視圖(即使它僅能部分滿足查詢的需要)。 2、具有高級的查詢重寫,可以使用實(shí)體化視圖對不同聚合級別(例如按照星期、月和年)進(jìn)行報告。 3、自動化機(jī)制刷新實(shí)體化視圖,單個請求刷新所有實(shí)體化視圖。 4、DBA 不再需要花時間查找應(yīng)創(chuàng)建哪些實(shí)體化視圖。系統(tǒng)將基于過去對數(shù)據(jù)庫或數(shù)據(jù)倉庫的查詢,向DBA 提供有關(guān)需要哪些概要的信息。 概要治理組件 組成概要治理的有五個組件: 1、維度。 2、實(shí)體化視圖。 3、刷新。 4、查詢重寫。 5、概要顧問。 并不需要使用所有組件,但所選用的組件越多,獲得的優(yōu)勢就越多。現(xiàn)在我們將具體探討這些組件。 模式需求 用于實(shí)體化視圖的模式類型或設(shè)計沒有什么限制。因此在數(shù)據(jù)倉庫環(huán)境中,模式可以是雪花式的設(shè)計,但這并不是必須的。 對于熟悉產(chǎn)品系統(tǒng)中數(shù)據(jù)庫設(shè)計技術(shù)的設(shè)計者來說,在一個數(shù)據(jù)倉庫中必須使用不同的規(guī)則和技術(shù)。例如,產(chǎn)品數(shù)據(jù)庫通常是規(guī)范化的,因此在這種情況下,時間維的表示方法最好是采用三個表:日、月、年。聯(lián)接條件應(yīng)該滿足:將每個日期行連接到一個(僅一個)月份行,每個月份行連接到一個(僅一個)年份行。數(shù)據(jù)倉庫實(shí)現(xiàn)通常將導(dǎo)致一個完全非規(guī)范化的的時間維表,其中日期、月份、年份欄都處于同一個表中。不過,無論設(shè)計使用的是規(guī)范化還是非規(guī)范化表,都可以使用實(shí)體化視圖。
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
