隨著企業e化的普及、資料庫技術應用的發展,企業利用資料庫所儲存的資料,建立各個不同角度的資料分析模型,以取得重要的商業資訊,確保掌握市場動向,做為決策支援的依據。
但因企業營運的成長,資料庫內所儲存的資料隨之增加(資料庫中所擁有的資料庫往往包含企業過去數十年營運的歷史資料)。當企業在原有的資料庫直接進行資料分析時,龐大的資料運算所造成的系統負荷(Loading),往往致使資料庫原本所肩負的作業隨之停擺。
為了避免上述的問題,大多數的企業會獨立出另一組資料庫,並將原本運行中的資料庫的資料掘轉(ETL,Extract、Transform、Load)到這個資料庫,如此,企業即可以利用這組獨立的資料庫系統進行分析,不會造成原本運行資料庫系統的負擔。
Snapshot無法因應資料倉儲實務上的需求
在Oracle的資料庫上,針對表格(Table)的轉移,大多數的資料庫管理師會由獨立出來資料庫,對原本運行的資料庫建立DB Link,以建立兩者之間的關聯(Relation),如 圖一所示,之後再採用Snapshot(在Oracle資料庫版本9i以後,即與MVIEW統稱為Material Views)的方式,將原資料庫上的資料表映射到分析用的資料庫。
不過,為了決策支援的需求,一個做為分析用途的資料庫,必須涵蓋企業的各個面向,也往往需要同時彙整多個資料庫(依支援決策的主題需求,整合並集中多個歷史資料庫的資料,我們即稱為資料倉儲-Data Warehouse)。
因此,資料表映射(snapshot)的做法,或許解決了一對一的資料表轉入問題。但是在資料倉儲的實務應用上,經常碰到多個不同的資料來源,同時要轉移並集中到資料倉儲中的某個單一資料表或MVIEW的情況,就不能採用這樣的做法。如圖二所示,由於分析用資料庫中MVIEW B 已由資料庫A中的Table A 映射了,因此資料庫B的Table A’則無法針對相同的MVIEW B進行映射。
再者,由於Material View的本身並不是資料表,所以在使用的靈活度上,並沒有辦法與資料表相提並論。特別是在資料倉儲的應用上,以整合性(Integration)為例,由於資料倉儲中的資料,是由多個資料庫整合而成的,因此在資料表的規畫,有時為了區別資料來源,會在原有的資料表再加入一個可以代表資料來源的欄位。
再以不可淘汰性(Non-Volatilizable)為例,當資料存放至資料倉儲後,便不易被修改或刪除,但Material View內所儲存的資料,會因著資料表本體的改變而改變,甚至會有歷史資料遺失的情形產生。
資料掘轉面臨效能問題
為了避免上述的問題,在資料倉儲的環境下,大部分資料庫的Table scheme規畫者(Designer),並不會以Material View做為最終的資料儲存方式(當然,資料轉入資料倉儲,或者在資料分析成報表呈現的過程中,我們還是有可能以Material View 來做為技術上的輔佑),一般而言,我們最後還是會以實體的資料表作為資料存放的基本儲存空間,因此,為了避免資料被重複的儲存(或因重複儲存而產生錯誤),在傳統進行資料掘轉的過程中,最後會進行下述兩個步驟:
1. 修改:針對已經存在資料倉儲資料表中的資料進行更新。
2. 新增:對於尚未存在資料倉儲資料表中的資料進行新增。
由於 Full Table Scan(掃瞄整個資料庫的內容),不論在I/O或Buffer cache上都會佔用較大量的系統資源,因此在資料庫的設計規畫及SQL語法的撰寫中,我們會儘量避免對資料表做 Full Table Scan 。
但在資料倉儲的資料掘轉過程中,不論新增或修改那一個執行步驟先被執行(一般而言會先進行「修改」),在修改或新增的動作執行之前,資料庫系統都會對已經存放在資料倉儲中的該資料表來進行Full Table Scan,以確認資料是否存在,進而決定是否要修改(或新增);並且在SQL語法的設計上,insert與update又是個別且獨立執行的,因此兩次的Full Table Scan,是資料掘轉的過程中不可避免的。
再加上,資料倉儲中往往儲存了成萬上億筆的歷史資料,因此在系統資源浪費上則更為嚴重,當然,這樣的情況往往會導致資料庫系統效能上的問題。
為解決Snapshot與效能問題,Oracle推出Merge技術
為了減少Full Table Scan的次數,以提升SQL語法的效能,也為了讓資料倉儲中單一的資料表,可以同時接受多個資料表的掘轉(ETL),再者,為避免資料來源中的資料記錄(records)被刪除後,對資料倉儲內所存放的資料記錄之影響,Oracle資料庫在版本9i後提出了MERGE的SQL語法,讓資料庫管理者可以藉由該語法在一次的 Full Table Scan中同時達到資料的修改與新增,並讓資料倉儲中的資料表,可以同時接受多個資料表來源而不會比彼此衝突,相對的也避免了資料來源異動後的影響。
資料倉儲小秘笈 |
Tip 1 什麼是資料倉儲? 有別於傳統的OLTP(Online Transaction Processing)系統,資料倉儲技術主要是應用於企業決策相關資料的收集–整合內部或外部不同來源、不同時期的資料,配合ETL(粹取、轉換)等方法,將格式及定義不一致的資料加以處理後,再存入資料庫,以方便企業決策者分析顧客資料。 Tip 2 資料倉儲的特性: 2. 具整合性的(Integration):為了更全面、多角度的分析,資料倉儲在設計上需整合異質資料庫。 3. 富歷史意義(Time Variation):大量保存歷史與現在資料,提供未來預測的判斷。 4. 不可淘汰性(Non-Volatilizable):當資料存放在資料倉儲中,便不輕易再異動,只會被查詢,因此具有唯讀與累積的特性。 Tip 3 Full Table Scan的時間問題: |
杜奕鋒/艾群科技技術顧問,崑山大學講師。國立中央大學畢業,專精於商業流程設計、資料庫管理、T-SQL 及軟體整合。通過 OCP(8i/9i/10g)、RHCE、SCSA、SCNA、SCJP 等認證。
曾任職於 104 人力銀行,負責 eHRPortal 及 WorkFlow 系統整合;中華民國紡拓會,負責紡織業 ERP 系統導入;亦曾擔任臺灣護理學會系統導入顧問;並曾授課於關渡基督書院、永達技術學院。
熱門新聞
2025-01-13
2025-01-15
2025-01-14
2025-01-14
2025-01-13