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