毛永剛
大慶油田油氣田開發(fā)軟件項(xiàng)目經(jīng)理部 黑龍江 大慶 163000
目前我國石油企業(yè)的數(shù)據(jù)庫的發(fā)展方向是勘探開發(fā)生產(chǎn)專業(yè)數(shù)據(jù)集成化、一體化方向,實(shí)現(xiàn)企業(yè)數(shù)據(jù)資產(chǎn)的集中,現(xiàn)在更有一種趨勢(shì)就是建立統(tǒng)一的油田數(shù)據(jù)中心。像這樣具有技術(shù)密集型特征的產(chǎn)業(yè),石油企業(yè)中的各個(gè)生產(chǎn)部門既做到內(nèi)部專業(yè)化分工精細(xì)而且在地理位置上做到分散,這些就是造成業(yè)務(wù)數(shù)據(jù)分散的客觀原因;在業(yè)務(wù)方面,它們既要理清各自的數(shù)據(jù),又要彼此交換數(shù)據(jù),如何應(yīng)對(duì)數(shù)據(jù)的分散、做到兩方數(shù)據(jù)可以同步、做到數(shù)據(jù)中心數(shù)據(jù)能夠匯總到一起,這就是關(guān)于油田數(shù)據(jù)庫建設(shè)讓人頭疼的地方,但是一個(gè)事務(wù)的出現(xiàn)為讓我們覺得我們還有可能解決這個(gè)問題,那就是分布式數(shù)據(jù)庫系統(tǒng)技術(shù)。本文就此問題討論了如何實(shí)現(xiàn)不同數(shù)據(jù)庫之間的資料交換和數(shù)據(jù)同步并有效的利用分布式數(shù)據(jù)庫技術(shù)。
將分布式技術(shù)和數(shù)據(jù)庫技術(shù)相結(jié)合起來就構(gòu)成了分布式數(shù)據(jù)庫技術(shù)。從大意上講就是,物理方面分散在計(jì)算機(jī)網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn),而邏輯上卻是一個(gè)數(shù)據(jù)集合并在同一個(gè)系統(tǒng)上,這就是分布式數(shù)據(jù)庫。它讓不同區(qū)域的數(shù)據(jù)可以共享成為現(xiàn)實(shí)。其中數(shù)據(jù)方位的分布式透明性是其最重要的特點(diǎn),說白了也就是我們可不考慮數(shù)據(jù)的分布情況,可以放心訪問數(shù)據(jù),程序的正確性不會(huì)因?yàn)閿?shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)移而受影響。此外,數(shù)據(jù)庫結(jié)點(diǎn)的自治是分布式數(shù)據(jù)庫的強(qiáng)調(diào)點(diǎn)而不是強(qiáng)調(diào)集中控制系統(tǒng)。在分布式數(shù)據(jù)庫中有一個(gè)必要的特性那就是數(shù)據(jù)冗余。關(guān)于數(shù)據(jù)冗余的特點(diǎn),一方面讓系統(tǒng)的更有效的運(yùn)行,另一方面讓局部數(shù)據(jù)更加具有可用性,確保在某數(shù)據(jù)庫節(jié)點(diǎn)出現(xiàn)事故時(shí),不會(huì)影響到系統(tǒng)的應(yīng)用。當(dāng)前,Omacle和SQLServer是比較常用的兩個(gè)分布式數(shù)據(jù)庫[1]。
我們利用分布式數(shù)據(jù)庫就可以依據(jù)用戶提出的需求去組織數(shù)據(jù)的分布,同時(shí)對(duì)數(shù)據(jù)關(guān)系進(jìn)行分片。數(shù)據(jù)和數(shù)據(jù)存儲(chǔ)可以通過復(fù)制、分片、復(fù)制+分片等方法進(jìn)行數(shù)據(jù)交換。指被用來維護(hù)關(guān)系的幾個(gè)相同的副本,將這些副本在不同的數(shù)據(jù)庫結(jié)點(diǎn)進(jìn)行存儲(chǔ)就是復(fù)制。將關(guān)系分化為幾個(gè)片段,將不同數(shù)據(jù)庫節(jié)點(diǎn)在各個(gè)片段上進(jìn)行存儲(chǔ)就是分片,水平分片、垂直分片、混合分片是當(dāng)前主要的分片方式。將關(guān)系分劃為幾個(gè)片段,每個(gè)片段的幾個(gè)副本都會(huì)被系統(tǒng)維護(hù)技術(shù)復(fù)制+分片。
石油的企業(yè)里大慶油田算是一個(gè)典型例子,企業(yè)應(yīng)該開始建設(shè)數(shù)據(jù)中心,因?yàn)橛卸鄠€(gè)采油廠、專業(yè)技術(shù)公司都為其提供數(shù)據(jù)來源,其中涉及錄井、鉆井、采油、試油、測(cè)井、作業(yè)等不同專業(yè)單位,這些單位平時(shí)在干業(yè)務(wù)上都是各自處理各自的數(shù)據(jù),但是因?yàn)橐€進(jìn)行數(shù)據(jù)交換故需要在數(shù)據(jù)中心總庫和各采油廠、專業(yè)化公司的分庫與之間建立專業(yè)數(shù)據(jù)庫,而且各采油廠與專業(yè)化公司分庫之間也要進(jìn)行數(shù)據(jù)交換,另外,應(yīng)用項(xiàng)目庫還要由總庫提供數(shù)據(jù)支持。總的來說,在石油企業(yè)中,內(nèi)部的數(shù)據(jù)進(jìn)行交換會(huì)很復(fù)雜,所以統(tǒng)一規(guī)則是很有必要的,這是系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享的前提。
為了確保順利實(shí)現(xiàn)數(shù)據(jù)的交換,首先要確定關(guān)于數(shù)據(jù)中心業(yè)務(wù)數(shù)據(jù)庫的標(biāo)準(zhǔn)和必須全部統(tǒng)一單位編碼、數(shù)據(jù)采集規(guī)范,做到全局?jǐn)?shù)據(jù)的兩個(gè)特性:完整性和一致性。二者,為順應(yīng)存儲(chǔ)和交換實(shí)際數(shù)據(jù)的需要,并要全部統(tǒng)一數(shù)據(jù)庫類型,就必須統(tǒng)一采用Oracle數(shù)據(jù)庫。在數(shù)據(jù)庫實(shí)施過程中,總庫、分庫會(huì)被自下而上而構(gòu)成分布式數(shù)據(jù)庫系統(tǒng),各個(gè)分庫依舊存放本單位的數(shù)據(jù),總庫的數(shù)據(jù)庫就是存放所有單位的數(shù)據(jù),并且要檢查數(shù)據(jù)完整性和一致性,這個(gè)方法會(huì)有一點(diǎn)數(shù)據(jù)冗余,優(yōu)點(diǎn)是同一數(shù)據(jù)會(huì)在不同場(chǎng)地存儲(chǔ)多個(gè)副本,提升了局部應(yīng)用的效率,并使得系統(tǒng)更加可靠而且變得更加有用。我們?cè)谠黾有虏杉瘯r(shí)只用增加一個(gè)數(shù)據(jù)庫節(jié)點(diǎn),實(shí)現(xiàn)了對(duì)當(dāng)前系統(tǒng)做到最小影響,這是用于拓展系統(tǒng)[2]。
數(shù)據(jù)存儲(chǔ)主要的主要內(nèi)容是數(shù)據(jù)的組織。系統(tǒng)按照不同的應(yīng)用的需求依據(jù)其提供的不同的數(shù)據(jù)關(guān)系而去采用不同的分片方式:①關(guān)于總庫和分庫之間的數(shù)據(jù)關(guān)系里,由于總部數(shù)據(jù)中心業(yè)務(wù)數(shù)據(jù)的子集是采油廠、專業(yè)公司的數(shù)據(jù),因?yàn)橐龅酵ㄟ^并運(yùn)算實(shí)現(xiàn)關(guān)系重構(gòu),所以采用了水平分片。②關(guān)于采油廠、專業(yè)公司之間的數(shù)據(jù)關(guān)系里,采油廠業(yè)務(wù)數(shù)據(jù)的子集是專業(yè)公司中部分?jǐn)?shù)據(jù),同樣也運(yùn)用了水平分片的方式。③關(guān)于應(yīng)用項(xiàng)目數(shù)據(jù)庫與總庫的數(shù)據(jù)關(guān)系里,這是按照應(yīng)用需求來劃分?jǐn)?shù)據(jù)的,故而需運(yùn)用垂直分片的方式。
(1)Oracle數(shù)據(jù)同步技術(shù)
Oracle的數(shù)據(jù)庫中的同步數(shù)據(jù)功能主要包含了三種類型:基本復(fù)制、高級(jí)復(fù)制、和混合復(fù)制,另外多主節(jié)點(diǎn)復(fù)制和可更新復(fù)制快照復(fù)制又可以作為高級(jí)復(fù)制的分支。如果需要在數(shù)據(jù)庫節(jié)點(diǎn)一復(fù)制的數(shù)據(jù)庫表產(chǎn)生變化(插入、刪除或者更新等),則Oracle則將這種變化放在一個(gè)延遲事務(wù)隊(duì)列(DEFTRAN)中,這就是采用了任務(wù)隊(duì)列機(jī)制。Oracle會(huì)在一個(gè)特定的時(shí)間或者是某個(gè)特定時(shí)間間隔后將延遲事務(wù)隊(duì)列中的變化“推”到數(shù)據(jù)庫節(jié)點(diǎn)2。在傳播過程中發(fā)生錯(cuò)誤之后,我們則將在錯(cuò)誤隊(duì)列DE-FERROR中找到該錯(cuò)誤。
(2)數(shù)據(jù)同步設(shè)計(jì)與實(shí)現(xiàn)
在數(shù)據(jù)中心實(shí)際建設(shè)過程中,因?yàn)榭値熵?fù)責(zé)進(jìn)行數(shù)據(jù)管理和分析,分庫的作用僅僅是存放本部門的數(shù)據(jù),由于此原因統(tǒng)一將數(shù)據(jù)的源數(shù)據(jù)庫是分庫,目標(biāo)數(shù)據(jù)庫被定義為總庫,業(yè)務(wù)數(shù)據(jù)的同步的方法就是復(fù)制,總庫將接收到分庫剛剛更新的信息。當(dāng)前企業(yè)之間的數(shù)據(jù)交換就是運(yùn)用此類方法[3]。
油田數(shù)據(jù)中心建設(shè)要是應(yīng)用了Oracle數(shù)據(jù)庫技術(shù),一定可以有利于數(shù)據(jù)分散和集中管理的矛盾的解決,使數(shù)據(jù)的共享和交換成為現(xiàn)實(shí)。這對(duì)油田信息化建設(shè)具有非凡的意義。