數(shù)據(jù)集成
1.數(shù)據(jù)集成概述[1]
就大型企業(yè)和政府部門的信息化而言,信息系統(tǒng)建設通常具有階段性和分布性的特點,這就導致“信息孤島”現(xiàn)象的存在。“信息孤島”是指不同軟件間,尤其是不同部門間的數(shù)據(jù)信息不能共享,造成系統(tǒng)中存在大量冗余數(shù)據(jù)、垃圾數(shù)據(jù),無法保證數(shù)據(jù)的一致性,嚴重地阻礙了企業(yè)信息化建設的整體進程。為解決這一問題,人們開始關注數(shù)據(jù)集成研究。
數(shù)據(jù)集成就是將若干個分散的數(shù)據(jù)源中的數(shù)據(jù),邏輯地或物理地集成到一個統(tǒng)一的數(shù)據(jù)集合中。數(shù)據(jù)集成的核心任務是要將互相關聯(lián)的分布式異構數(shù)據(jù)源集成到一起,使用戶能夠以透明的方式訪問這些數(shù)據(jù)源。集成是指維護數(shù)據(jù)源整體上的數(shù)據(jù)一致性、提高信息共享利用的效率;透明的方式是指用戶無需關心如何實現(xiàn)對異構數(shù)據(jù)源數(shù)據(jù)的訪問,只關心以何種方式訪問何種數(shù)據(jù)。實現(xiàn)數(shù)據(jù)集成的系統(tǒng)稱作數(shù)據(jù)集成系統(tǒng)(見下圖),它為用戶提供統(tǒng)一的數(shù)據(jù)源訪問接口,執(zhí)行用戶對數(shù)據(jù)源的訪問請求。
數(shù)據(jù)集成的數(shù)據(jù)源主要指DBMS,廣義上也包括各類XML文檔、HTML文檔、電子郵件、普通文件等結構化、半結構化信息。數(shù)據(jù)集成是信息系統(tǒng)集成的基礎和關鍵。好的數(shù)據(jù)集成系統(tǒng)要保證用戶以低代價、高效率使用異構的數(shù)據(jù)。要實現(xiàn)這個目標,必須解決數(shù)據(jù)集成中的~些難題。
數(shù)據(jù)集成的難點可以歸納為以下主要方面:
1)異構性。被集成的數(shù)據(jù)源通常是獨立開發(fā)的,數(shù)據(jù)模型異構,給集成帶來很大困難。這些異構性主要表現(xiàn)在:數(shù)據(jù)語義、相同語義數(shù)據(jù)的表達形式、數(shù)據(jù)源的使用環(huán)境等。
2)分布性。數(shù)據(jù)源是異地分布的,依賴網(wǎng)絡傳輸數(shù)據(jù),這就存在網(wǎng)絡傳輸?shù)男阅芎桶踩缘葐栴}。
3)自治性。各個數(shù)據(jù)源有很強的自治性,它們可以在不通知集成系統(tǒng)的前提下改變自身的結構和數(shù)據(jù),給數(shù)據(jù)集成系統(tǒng)的魯棒性提出挑戰(zhàn)。
數(shù)據(jù)源的異構性一直是困擾很多數(shù)據(jù)集成系統(tǒng)的核心問題,也是人們在數(shù)據(jù)集成方面研究的熱點。異構性的難點主要表現(xiàn)在語法異構和語義異構上。語法異構一般指源數(shù)據(jù)和目的數(shù)據(jù)之間命名規(guī)則及數(shù)據(jù)類型存在不同。對數(shù)據(jù)庫而言,命名規(guī)則指表名和字段名。語法異構相對簡單,只要實現(xiàn)字段到字段、記錄到記錄的映射,解決其中的名字沖突和數(shù)據(jù)類型沖突。這種映射都很直接,比較容易實現(xiàn)。因此,語法異構無需關心數(shù)據(jù)的內(nèi)容和含義,只要知道數(shù)據(jù)結構信息,完成源數(shù)據(jù)結構到目的數(shù)據(jù)結構之間的映射就可以了。
當數(shù)據(jù)集成要考慮數(shù)據(jù)的內(nèi)容和含義時,就進入到語義異構的層次上。語義異構要比語法異構復雜的多,它往往是需要破壞字段的原子性,即需要直接處理數(shù)據(jù)內(nèi)容。常見的語義異構包括以下一些方式:字段拆分、字段合并、字段數(shù)據(jù)格式變換、記錄間字段轉移等。語法異構和語義異構的區(qū)別可以追溯到數(shù)據(jù)源建模時的差異:當數(shù)據(jù)源的實體關系模型相同,只是命名規(guī)則不同時,造成的只是數(shù)據(jù)源之間的語法異構;當數(shù)據(jù)源構建實體模型時,若采用不同的粒度劃分、不同的實體間關系以及不同的字段數(shù)據(jù)語義表示,必然會造成數(shù)據(jù)源間的語義異構,給數(shù)據(jù)集成帶來很大麻煩。
事實上,現(xiàn)實中數(shù)據(jù)集成系統(tǒng)的語法異構現(xiàn)象是普遍存在的。上面提到的幾種語法異構屬于較為規(guī)則的語法異構,可以用特定的映射方法解決這些問題。還有一些不常見或不易被發(fā)現(xiàn)的語法異構,例如數(shù)據(jù)源在構建時隱含了一些約束信息,在數(shù)據(jù)集成時,這些約束不易被發(fā)現(xiàn),往往會造成錯誤的產(chǎn)生。如某個數(shù)據(jù)項用來定義月份,隱含著其值只能在1~12之間,而集成時如果忽略了這一約束,很可能造成荒謬的結果。此外,復雜的關系模型也會造成很多語義異構現(xiàn)象。
2.數(shù)據(jù)集成的分類[2]
數(shù)據(jù)集成可以分為下述4個層次。
- 1.基本數(shù)據(jù)集成
基本數(shù)據(jù)集成面臨的問題很多。
通用標識符問題是數(shù)據(jù)集成時遇到的最難的問題之一。由于同一業(yè)務實體存在于多個系統(tǒng)源中,并且沒有明確的辦法確認這些實體是同一實體時,就會產(chǎn)生這類問題。處理該問題的辦法如下。
(1)隔離。保證實體的每次出現(xiàn)都指派一個唯一標識符。
(2)調(diào)和。確認哪些實體是相同的,并且將該實體的各次出現(xiàn)合并起來。
當目標元素有多個來源時,指定某一系統(tǒng)在沖突時占主導地位。
數(shù)據(jù)丟失問題是最常見的問題之一,一般解決的辦法是為丟失的數(shù)據(jù)產(chǎn)生一個非常接近實際的估計值來進行處理。
- 2.多級視圖集成
多級視圖機制有助于對數(shù)據(jù)源之間的關系進行集成:底層數(shù)據(jù)表示方式為局部模型的局部格式,如關系和文件;中間數(shù)據(jù)表示為公共模式格式,如擴展關系模型或對象模型;高級數(shù)據(jù)表示為綜合模型格式。
視圖的集成化過程為兩級映射:
(1)數(shù)據(jù)從局部數(shù)據(jù)庫中,經(jīng)過數(shù)據(jù)翻譯、轉換并集成為符合公共模型格式的中間視圖。
(2)進行語義沖突消除、數(shù)據(jù)集成和數(shù)據(jù)導出處理,將中間視圖集成為綜合視圖。
- 3.模式集成
模型合并屬于數(shù)據(jù)庫設計問題,其設計的好壞常視設計者的經(jīng)驗而定,在實際應用中很少有成熟的理論指導。
實際應用中,數(shù)據(jù)源的模式集成和數(shù)據(jù)庫設計仍有相當?shù)牟罹啵缒J郊蓵r出現(xiàn)的命名、單位、結構和抽象層次等沖突問題,就無法照搬模式設計的經(jīng)驗。
在眾多互操作系統(tǒng)中,模式集成的基本框架如屬性等價、關聯(lián)等價和類等價可最終歸于屬性等價。
- 4.多粒度數(shù)據(jù)集成
多粒度數(shù)據(jù)集成是異構數(shù)據(jù)集成中最難處理的問題,理想的多粒度數(shù)據(jù)集成模式是自動逐步抽象。
數(shù)據(jù)綜合(或數(shù)據(jù)抽象)指由高精度數(shù)據(jù)經(jīng)過抽象形成精度較低、但是粒度較大的數(shù)據(jù)。其作用過程為從多個較高精度的局部數(shù)據(jù)中,獲得較低精度的全局數(shù)據(jù)。在這個過程中,要對各局域中的數(shù)據(jù)進行綜合,提取其主要特征。數(shù)據(jù)綜合集成的過程實際上是特征提取和歸并的過程。
數(shù)據(jù)細化指通過由一定精度的數(shù)據(jù)獲取精度較高的數(shù)據(jù),實現(xiàn)該過程的主要途徑有:時空轉換,相關分析或者由綜合中數(shù)據(jù)變動的記錄進行恢復。數(shù)據(jù)集成是最終實現(xiàn)數(shù)據(jù)共享和輔助決策的基礎。
3.常見數(shù)據(jù)集成方法[1]
- 1.聯(lián)邦數(shù)據(jù)庫
聯(lián)邦數(shù)據(jù)庫是早期人們采用的一種模式集成方法。模式集成是人們最早采用的數(shù)據(jù)集成方法。其基本思想是,在構建集成系統(tǒng)時將各數(shù)據(jù)源的數(shù)據(jù)視圖集成為全局模式,使用戶能夠按照全局模式透明地訪問各數(shù)據(jù)源的數(shù)據(jù)。全局模式描述了數(shù)據(jù)源共享數(shù)據(jù)的結構、語義及操作等。用戶直接在全局模式的基礎上提交請求,由數(shù)據(jù)集成系統(tǒng)處理這些請求,轉換成各個數(shù)據(jù)源在本地數(shù)據(jù)視圖基礎上能夠執(zhí)行的請求。模式集成方法的特點是直接為用戶提供透明的數(shù)據(jù)訪問方法。由于用戶使用的全局模式是虛擬的數(shù)據(jù)源視圖,一些學者也把模式集成方法稱為虛擬視圖集成方法。模式集成要解決兩個基本問題:構建全局模式與數(shù)據(jù)源數(shù)據(jù)視圖間的映射關系;處理用戶在全局模式基礎上的查詢請求。
模式集成過程需要將原來異構的數(shù)據(jù)模式作適當?shù)霓D換,消除數(shù)據(jù)源間的異構性,映射成全局模式。全局模式與數(shù)據(jù)源數(shù)據(jù)視圖問映射的構建方法有兩種:全局視圖法和局部視圖法。全局視圖法中的全局模式是在數(shù)據(jù)源數(shù)據(jù)視圖基礎上建立的,。它由一系列元素組成,每個元素對應一個數(shù)據(jù)源,表示相應數(shù)據(jù)源的數(shù)據(jù)結構和操作;局部視圖法先構建全局模式,數(shù)據(jù)源的數(shù)據(jù)視圖則是在全局模式基礎上定義,由全局模式按一定的規(guī)則推理得到。用戶在全局模式基礎上查詢請求需要被映射成各個數(shù)據(jù)源能夠執(zhí)行的查詢請求。
在聯(lián)邦數(shù)據(jù)庫中,數(shù)據(jù)源之間共享自己的一部分數(shù)據(jù)模式,形成一個聯(lián)邦模式(見圖)。聯(lián)邦數(shù)據(jù)庫系統(tǒng)按集成度可分為兩類:采用緊密耦合聯(lián)邦數(shù)據(jù)庫系統(tǒng)和采用松散耦合聯(lián)邦數(shù)據(jù)庫系統(tǒng)。緊密耦合聯(lián)邦數(shù)據(jù)庫系統(tǒng)使用統(tǒng)一的全局模式,將各數(shù)據(jù)源的數(shù)據(jù)模式映射到全局數(shù)據(jù)模式上,解決了數(shù)據(jù)源間的異構性。這種方法集成度較高,用戶參與少;缺點是構建一個全局數(shù)據(jù)模式的算法復雜,擴展性差。松散耦合聯(lián)邦數(shù)據(jù)庫系統(tǒng)比較特殊,沒有全局模式,采用聯(lián)邦模式。該方法提供統(tǒng)一的查詢語言,將很多異梅性問題交給用戶自己去解決。松散耦合方法對數(shù)據(jù)的集成度不高,但其數(shù)據(jù)源的自治性強、動態(tài)性能好,集成系統(tǒng)不需要維護一個全局模式。
- 2.中間件集成方法
中間件集成方法是目前比較流行的數(shù)據(jù)集成方法,中間件模式通過統(tǒng)一的全局數(shù)據(jù)模型來訪問異構的數(shù)據(jù)庫、遺留系統(tǒng)、Web資源等。中間件位于異構數(shù)據(jù)源系統(tǒng)(數(shù)據(jù)層)和應用程序(應用層)之間,向下協(xié)調(diào)各數(shù)據(jù)源系統(tǒng),向上為訪問集成數(shù)據(jù)的應用提供統(tǒng)’一數(shù)據(jù)模式和數(shù)據(jù)訪問的通用接口。各數(shù)據(jù)源的應用仍然完成它們的任務,中間件系統(tǒng)則主要集中為異構數(shù)據(jù)源提供一個高層次檢索服務。它同樣使用全局數(shù)據(jù)模式,通過在中間層提供一個統(tǒng)一的數(shù)據(jù)邏輯視圖來隱藏底層的數(shù)據(jù)細節(jié),使得用戶可以把集成數(shù)據(jù)源看為一個統(tǒng)一的整體。這種模型下的關鍵問題是如何構造這個邏輯視圖并使得不同數(shù)據(jù)源之間能映射到這個中間層。
G.Wiederhold最早給出了基于中間件的集成方法的構架。與聯(lián)邦數(shù)據(jù)庫不同,中間件系統(tǒng)不僅能夠集成結構化的數(shù)據(jù)源信息,還可以集成半結構化或非結構化數(shù)據(jù)源中的信息,如Web信息。美國斯坦福大學Garcia—Molina等人在1994年開發(fā)了TSIMMIS系統(tǒng),就是一個典型的中間件集成系統(tǒng)。
典型的基于中間件的數(shù)據(jù)集成系統(tǒng),如下圖所示,主要包括中間件和封裝器,其中每個數(shù)據(jù)源對應一個封裝器,中間件通過封裝器和各個數(shù)據(jù)源交互。用戶在全局數(shù)據(jù)模式的基礎上向中間件發(fā)出查詢請求。中間件處理用戶請求,將其轉換成各個數(shù)據(jù)源能夠處理的子查詢請求,并對此過程進行優(yōu)化,以提高查詢處理的并發(fā)性,減少響應時間。封裝器對特定數(shù)據(jù)源進行了封裝,將其數(shù)據(jù)模型轉換為系統(tǒng)所采用的通用模型,并提供一致的訪問機制。中間件將各個子查詢請求發(fā)送給封裝器,由封裝器來和其封裝的數(shù)據(jù)源交互,執(zhí)行子查詢請求,并將結果返回給中間件。
中間件注重于全局查詢的處理和優(yōu)化,相對于聯(lián)邦數(shù)據(jù)庫系統(tǒng)的優(yōu)勢在于:它能夠集成非數(shù)據(jù)庫形式的數(shù)據(jù)源,有很好的查詢性能,自治性強;中間件集成的缺點在于它通常是只讀的,而聯(lián)邦數(shù)據(jù)庫對讀寫都支持。
- 3.數(shù)據(jù)倉庫方法
數(shù)據(jù)倉庫方法是一種典型的數(shù)據(jù)復制方法。該方法將各個數(shù)據(jù)源的數(shù)據(jù)復制到同一處,即數(shù)據(jù)倉庫。用戶則像訪問普通數(shù)據(jù)庫一樣直接訪問數(shù)據(jù)倉庫,如圖所示。
數(shù)據(jù)倉庫是在數(shù)據(jù)庫已經(jīng)大量存在的情況下,為了進一步挖掘數(shù)據(jù)資源和決策需要而產(chǎn)生的。目前,大部分數(shù)據(jù)倉庫還是用關系數(shù)據(jù)庫管理系統(tǒng)來管理的,但它決不是所謂的“大型數(shù)據(jù)庫”。數(shù)據(jù)倉庫方案建設的目的,是將前端查詢和分析作為基礎,由于有較大的冗余,所以需要的存儲容量也較大。數(shù)據(jù)倉庫是一個環(huán)境,而不是一件產(chǎn)品,提供用戶用于決策支持的當前和歷史數(shù)據(jù),這些數(shù)據(jù)在傳統(tǒng)的操作型數(shù)據(jù)庫中很難或不能得到。
數(shù)據(jù)倉庫技術是為了有效地把操作型數(shù)據(jù)集成到統(tǒng)一的環(huán)境中以提供決策型數(shù)據(jù)訪問的各種技術和模塊的總稱。所做的一切都是為了讓用戶更快、更方便地查詢所需要的信息,提供決策支持。
簡而言之,從內(nèi)容和設計的原則來講,傳統(tǒng)的操作型數(shù)據(jù)庫是面向事務設計的,數(shù)據(jù)庫中通常存儲在線交易數(shù)據(jù),設計時盡量避免冗余,一般采用符合范式的規(guī)則來設計。而數(shù)據(jù)倉庫是面向主題設計的,數(shù)據(jù)倉庫中存儲的一般是歷史數(shù)據(jù),在設計時有意引入冗余,采用反范式的方式來設計。
另一方面,從設計的目的來講,數(shù)據(jù)庫是為捕獲數(shù)據(jù)而設計,而數(shù)據(jù)倉庫是為分析數(shù)據(jù)而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,例如時間、部門,維表中存放的就是這些角度的定義;事實表里放著要查詢的數(shù)據(jù),同時有維的ID。
4.數(shù)據(jù)集成的作用
數(shù)據(jù)集成對于企業(yè)信息系統(tǒng)的作用
數(shù)據(jù)集成的出現(xiàn)使企業(yè)能夠將后端的ERP信息遷移到Internet上。數(shù)據(jù)集成產(chǎn)品在一個公司的Internet計算機與SAP、Oracle和PeopleSoft等公司的后端系統(tǒng)之間提供“高速緩存”或數(shù)據(jù)分級。
數(shù)據(jù)集成提供了在一個企業(yè)主計算機上存儲的后端信息的一幅鏡像。當一個Internet客戶需要檢查一項訂單的狀態(tài)時,這項查詢就被轉移到數(shù)據(jù)集成軟件。因此,并非總需要訪問該企業(yè)的主計算機。數(shù)據(jù)集成軟件擁有足夠的智能,知道什么時候與主計算機保持同步以便使數(shù)據(jù)不斷更新。為電子商務應用集成ERP數(shù)據(jù)是通過數(shù)據(jù)分級和直接訪問ERP數(shù)據(jù)這兩者的結合來完成的,它包括使用一個數(shù)據(jù)服務器和一些數(shù)據(jù)高速緩存器。數(shù)據(jù)集成軟件以智能方式將直接實時的和分批的數(shù)據(jù)存取方法混和起來,以便從一個ERP系統(tǒng)中抽取數(shù)據(jù)。
數(shù)據(jù)從一個或多個源前進到一個或多個目標表以及信息類型(如XML),數(shù)據(jù)移動的步驟包括確定應該從中抽取數(shù)據(jù)的源、數(shù)據(jù)應當進行的轉換以及向什么地方發(fā)送數(shù)據(jù)。用戶通過一個圖形用戶接口來指定數(shù)據(jù)映射和轉換。
由用戶定義的程序控制每一塊數(shù)據(jù)的移動并確定這種移動之間的內(nèi)部相關性。例如,如果一個目標表依靠其他目標表的值,則使用一些程序來指定一個數(shù)據(jù)服務器應當按什么次序來管理這些目標表中的單個數(shù)據(jù)移動。數(shù)據(jù)移動可以被設計來以批量方式或實時方式運行,并由管理員來創(chuàng)建和管理,以控制ERP、電子商務、客戶關系管理、供應鏈管理以及通信應用之間的數(shù)據(jù)移動。數(shù)據(jù)移動使用分布式查詢優(yōu)化、多線程、存儲器內(nèi)數(shù)據(jù)轉換和并行流水線操作來提供很高的數(shù)據(jù)通過量和可伸縮性。例如,要管理抽取程序并從SAP軟件中來執(zhí)行批量數(shù)據(jù)抽取,可使用優(yōu)化的ABAP代碼(SAP的專有編程語言),不需要開發(fā)和維護定制的ABAP代碼。