文章詳情頁(yè)
Oracle9i中數(shù)據(jù)倉(cāng)庫(kù)的增強(qiáng)及其價(jià)值
瀏覽:35日期:2023-11-13 09:07:26
數(shù)據(jù)倉(cāng)庫(kù)需要從各種不同的數(shù)據(jù)源取得各種不同的數(shù)據(jù),并且把這些巨大數(shù)據(jù)量的數(shù)據(jù)轉(zhuǎn)換成對(duì)于用戶(hù)可用的數(shù)據(jù),為企業(yè)的決策支持提供數(shù)據(jù)支持。這個(gè)過(guò)程經(jīng)常被稱(chēng)為ETL(提取、轉(zhuǎn)換、裝載)。提取過(guò)程涉及把數(shù)據(jù)從不同的來(lái)源提取出來(lái),比如,一些服務(wù)提供商需要從上百個(gè)網(wǎng)站提取數(shù)據(jù),然后生成用戶(hù)可用的數(shù)據(jù)。這個(gè)過(guò)程中,最最消耗時(shí)間的部分是轉(zhuǎn)換和裝載數(shù)據(jù)這兩個(gè)步驟,在這些步驟中,要根據(jù)現(xiàn)有數(shù)據(jù)指定規(guī)則,然后按照這些規(guī)則來(lái)過(guò)濾數(shù)據(jù),并且把合格的數(shù)據(jù)裝載到數(shù)據(jù)倉(cāng)庫(kù)里邊去。而這個(gè)步驟地最大困難就是要盡量不影響數(shù)據(jù)倉(cāng)庫(kù)和源數(shù)據(jù)庫(kù)的性能,并且對(duì)于不同的數(shù)據(jù)量能夠有一定的可伸縮性,并且在最短的時(shí)間內(nèi)完成。 當(dāng)前絕大多數(shù)的ETL步驟都是通過(guò)第三方工具來(lái)進(jìn)行的。這些工具能夠在把數(shù)據(jù)轉(zhuǎn)換并裝入到數(shù)據(jù)倉(cāng)庫(kù)之前,對(duì)數(shù)據(jù)進(jìn)行一些特定的處理。當(dāng)數(shù)據(jù)轉(zhuǎn)換完成以后,再用Oracle的并行插入和裝載工具把這些數(shù)據(jù)插入到Oracle數(shù)據(jù)庫(kù)。Oracle數(shù)據(jù)庫(kù)的最主要的作用是治理這些數(shù)據(jù)行、索引和約束。有些ETL過(guò)程是串行進(jìn)行的,因此需要使用更多的數(shù)據(jù)庫(kù)資源來(lái)進(jìn)行這些轉(zhuǎn)換和裝載過(guò)程。假如使用這類(lèi)串行裝載方法的話(huà),首先利用一些第三方工具,數(shù)據(jù)先被提取出來(lái),然后放到一個(gè)中間過(guò)渡區(qū)域里邊,在使用PL/SQL或者Java 再在數(shù)據(jù)庫(kù)里邊進(jìn)行轉(zhuǎn)換,最后再把結(jié)果插入到數(shù)據(jù)庫(kù)的表里邊。這個(gè)復(fù)雜的過(guò)程導(dǎo)致了這種方法不可避免的弱點(diǎn):可伸縮性差、在萬(wàn)一出現(xiàn)差錯(cuò)時(shí)難以控制。 Oracle9i 引進(jìn)了新的'邊裝載邊轉(zhuǎn)換'的辦法來(lái)取代那些過(guò)時(shí)的串行處理步驟:先轉(zhuǎn)換然后裝載或者先裝載然后轉(zhuǎn)換。在這種新方法里,數(shù)據(jù)庫(kù)參與了數(shù)據(jù)轉(zhuǎn)換和裝載的過(guò)程,成為了ETL過(guò)程的一個(gè)有機(jī)組成部分。而另外有些原來(lái)是必須的步驟則沒(méi)有繼續(xù)存在地必要了,另一些則可以得到改進(jìn)。Oracle 9i提供以下功能來(lái)幫助這個(gè)轉(zhuǎn)換、裝載步驟更加快速而高效。 Oracle Change Data Capture (OCDC)Framework 可以用來(lái)優(yōu)化ETL過(guò)程中的數(shù)據(jù)提取這個(gè)步驟,建立一個(gè)可重復(fù)使用的執(zhí)行步驟。OCDC能夠捕捉Oracle數(shù)據(jù)庫(kù)中變化的數(shù)據(jù)。使用對(duì)稱(chēng)復(fù)制技術(shù)和Logminer技術(shù),假如原始數(shù)據(jù)是來(lái)自O(shè)racle數(shù)據(jù)庫(kù)的話(huà),那么Oracle能夠很輕易實(shí)現(xiàn)幾個(gè)數(shù)據(jù)庫(kù)的改變了的數(shù)據(jù)的同步化和異步化工作。對(duì)于非Oracle數(shù)據(jù)庫(kù),Oracle公司也提供了API,幫助第三方軟件廠(chǎng)商開(kāi)發(fā)工具,來(lái)實(shí)現(xiàn)非Oracle數(shù)據(jù)庫(kù)和Oracle數(shù)據(jù)庫(kù)的集成。 External Tables這個(gè)特性能夠使一些外部數(shù)據(jù)源(比如一個(gè)普通文本文件)能夠像存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)普通表里邊的數(shù)據(jù)一樣被透明地存取。這個(gè)特性的唯一限制是:這張表是只讀的,不能修改。對(duì)于SQL,PL/SQL和Java程序來(lái)講,這些虛擬表不用首先被裝載到數(shù)據(jù)庫(kù)里邊然后才能讀取。這樣的話(huà),裝載和轉(zhuǎn)換步驟就被集成到一起了,不再需要在數(shù)據(jù)庫(kù)里邊存儲(chǔ)中間數(shù)據(jù)。 Multi Table Insert 這是一個(gè)任何DBA和開(kāi)發(fā)人員都會(huì)欣賞的新特性。在8i和以前的版本里面,想要把同樣的數(shù)據(jù)插入到多張表里邊,你不得不編寫(xiě)一個(gè)存儲(chǔ)過(guò)程,或者執(zhí)行多次SQL語(yǔ)句。在Oracle 9i里邊,這些都可以不用了。一個(gè)SQL語(yǔ)句就可以解決這個(gè)問(wèn)題。另外一個(gè)值得注重的新特性是Upset語(yǔ)句,它用一個(gè)語(yǔ)句提供了Update和Insert的功能,根據(jù)條件分別執(zhí)行Insert或者Update語(yǔ)句。還有一個(gè)很有用的增強(qiáng)就是答應(yīng)在一個(gè)Oracle數(shù)據(jù)庫(kù)里邊有多個(gè)Block的大小。這對(duì)于在不同Oracle數(shù)據(jù)庫(kù)之間使用可移動(dòng)表空間這個(gè)特性是非常要害的。從9i開(kāi)始,可移動(dòng)表空間的大小不一定需要是同樣的塊大小了。 有了以上這些新特性以及其他一些本文沒(méi)有提及的新特性之后,Oracle不僅僅適用于數(shù)據(jù)處理,也更加適用于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境下的使用。
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
