![]() |
學(xué)校地址:湖南省 長沙市 雨花區(qū) 車站南路紅花坡路口 |
![]() |
學(xué)校地址:湖南省 長沙市 雨花區(qū) 車站南路紅花坡路口 |
異地同構(gòu)數(shù)據(jù)庫合并在電力系統(tǒng)中之應(yīng)用
羅鳴,陳軼佳,龍建忠
(四川大學(xué),四川成都 610064)
摘 要:提出了一種新穎之方案,該方案有效地解決了在電力系統(tǒng)數(shù)據(jù)庫實(shí)際應(yīng)用中遇到之特定之異地同構(gòu)數(shù)據(jù)庫合并問題[陽光電子學(xué)校維修專家友情提示]。該方案利用SQLSERVER2000提供之DBLIBRARY編程接口并通過C++語言加以了實(shí)現(xiàn)[陽光電子學(xué)校維修專家友情提示]。還介紹了利用C++通過DBLIBRARY實(shí)現(xiàn)對SQLSERVER數(shù)據(jù)庫之操作方法[陽光電子學(xué)校維修專家友情提示]。采用這種編程方法,電力系統(tǒng)數(shù)據(jù)庫開發(fā)人員可以根據(jù)實(shí)際情況對數(shù)據(jù)庫進(jìn)行特定操作,具有極大之靈活性[陽光電子學(xué)校維修專家友情提示]。
關(guān)鍵詞:電力系統(tǒng)數(shù)據(jù)庫;同構(gòu)數(shù)據(jù)庫合并;SQLSERVER2000;DBLIBRARY
隨著時(shí)代之發(fā)展,各個(gè)電力企業(yè)已經(jīng)加快了自己信息化之進(jìn)程,辦公自動(dòng)化(OA)、MIS系統(tǒng)、電力市場和營銷系統(tǒng)、電力調(diào)度系統(tǒng)(EMS)、配電管理系統(tǒng)(DMS)、呼叫中心(Call Center)以及電力自動(dòng)化管理系統(tǒng)已經(jīng)有廣泛之應(yīng)用[陽光電子學(xué)校維修專家友情提示]。對這些應(yīng)用而言,數(shù)據(jù)庫均在其中扮演了重要之角色[陽光電子學(xué)校維修專家友情提示]。微軟公司之SQLSERV-ER2000數(shù)據(jù)庫具有高性能、可靠性和方便應(yīng)用之特點(diǎn),目前已被中國之電力企業(yè)廣泛采用[陽光電子學(xué)校維修專家友情提示]。
由于行業(yè)之特殊性,電力系統(tǒng)之?dāng)?shù)據(jù)庫應(yīng)用環(huán)境非常復(fù)雜[陽光電子學(xué)校維修專家友情提示]。在實(shí)際工作中往往有一些同構(gòu)數(shù)據(jù)庫同時(shí)運(yùn)行在獨(dú)立之服務(wù)器上[陽光電子學(xué)校維修專家友情提示]。到了一定之時(shí)候,由于工作環(huán)境變化、服務(wù)器升級或數(shù)據(jù)備份等各種原因,需要將這些異地同構(gòu)數(shù)據(jù)庫里面之?dāng)?shù)據(jù)合并到一起,存儲在同一臺服務(wù)器上[陽光電子學(xué)校維修專家友情提示]。解決這類問題之傳統(tǒng)方案是利用SQLSERVER2000提供之DTS(數(shù)據(jù)轉(zhuǎn)換服務(wù))功能來實(shí)現(xiàn)[陽光電子學(xué)校維修專家友情提示]。然而,由于各個(gè)服務(wù)器之間相互獨(dú)立(不提交協(xié)議),利用DTS功能之方案往往會(huì)遇到數(shù)據(jù)沖突之問題[陽光電子學(xué)校維修專家友情提示]。
數(shù)據(jù)沖突之情況往往集中在主鍵之沖突上[陽光電子學(xué)校維修專家友情提示]。在數(shù)據(jù)庫之表中,往往存在著一個(gè)主鍵,這個(gè)主鍵作為各項(xiàng)記錄之唯一標(biāo)識,是不能重復(fù)之[陽光電子學(xué)校維修專家友情提示]。將這個(gè)主鍵作為一張表之標(biāo)識列,從1開始,逐步遞增,命名為MAINID,是 通用之做法[陽光電子學(xué)校維修專家友情提示]。其他之表往往是將這個(gè)MAINID作為一個(gè)外鍵索引,通過它來定位其中之各條記錄[陽光電子學(xué)校維修專家友情提示]。由于幾臺服務(wù)器之間相互獨(dú)立,這個(gè)MAINID很湖南陽光電子學(xué)校維修專家認(rèn)為:也許相同[陽光電子學(xué)校維修專家友情提示]。在將具有相同MAINID之?dāng)?shù)據(jù)導(dǎo)入到同一個(gè)數(shù)據(jù)庫時(shí),如果不作事先之處理,將肯定出現(xiàn)數(shù)據(jù)沖突[陽光電子學(xué)校維修專家友情提示]。
針對這種情況,提出了自己編寫數(shù)據(jù)轉(zhuǎn)換接口之方案,將各異地同構(gòu)數(shù)據(jù)庫里面之?dāng)?shù)據(jù)作適應(yīng)性之轉(zhuǎn)換后再導(dǎo)入到同一服務(wù)器中[陽光電子學(xué)校維修專家友情提示]。
1 方案介紹
為了清楚地說明問題,這里舉一個(gè)電站地質(zhì)勘探情況數(shù)據(jù)庫之例子[陽光電子學(xué)校維修專家友情提示]。
1.1 數(shù)據(jù)庫結(jié)構(gòu)介紹
為了說明問題,將實(shí)際之?dāng)?shù)據(jù)庫結(jié)構(gòu)做了簡化[陽光電子學(xué)校維修專家友情提示]。
數(shù)據(jù)庫DB有兩個(gè)表:MAIN表和DATA表[陽光電子學(xué)校維修專家友情提示]。兩表之?dāng)?shù)據(jù)項(xiàng)如下表所示:
MAIN表作為主表,其MAINID項(xiàng)作為主鍵,且作為表之標(biāo)識列,種子為1,遞增步長為1,具有唯一性,唯一對應(yīng)著一個(gè)勘測地區(qū)[陽光電子學(xué)校維修專家友情提示]。Directory數(shù)據(jù)項(xiàng)表示存儲相應(yīng)地區(qū)之地質(zhì)勘測圖像文件之文件夾名[陽光電子學(xué)校維修專家友情提示]。
DATA表中MAINID作為外鍵索引,對應(yīng)著MAIN表中之?dāng)?shù)據(jù)[陽光電子學(xué)校維修專家友情提示]。表明該行數(shù)據(jù)之PicName數(shù)據(jù)項(xiàng)代表之地址勘測圖像文件存儲在MAIN表中具有相同MAINID之Directory數(shù)據(jù)項(xiàng)代表之文件夾下面,Pic-Name數(shù)據(jù)項(xiàng)服從UNIQUE約束,也就是說文件名是唯一之,不能重復(fù)[陽光電子學(xué)校維修專家友情提示]。
1.2 方案之主要步驟
(1)登陸到源數(shù)據(jù)庫[陽光電子學(xué)校維修專家友情提示]。源數(shù)據(jù)庫就是各個(gè)獨(dú)立之?dāng)?shù)據(jù)庫[陽光電子學(xué)校維修專家友情提示]。
(2)將MAIN表和DATA表之?dāng)?shù)據(jù)分別導(dǎo)出到oldmain.txt和olddata.txt文件中[陽光電子學(xué)校維修專家友情提示]。文件之第一行存儲數(shù)據(jù)項(xiàng)之?dāng)?shù)目,之后每行對應(yīng)著數(shù)據(jù)庫中相應(yīng)表之一條記錄,同一行每一列數(shù)據(jù)之間用逗號“,”隔開[陽光電子學(xué)校維修專家友情提示]。 后一行是自定義之文件結(jié)束標(biāo)志“~”[陽光電子學(xué)校維修專家友情提示]。
例如,oldmain.txt里之?dāng)?shù)據(jù)湖南陽光電子學(xué)校維修專家認(rèn)為:也許是這樣之:
(3)將main表中 小之MAINID存儲在min-mainid.txt文件中[陽光電子學(xué)校維修專家友情提示]。
(4)連接到目標(biāo)數(shù)據(jù)庫[陽光電子學(xué)校維修專家友情提示]。目標(biāo)數(shù)據(jù)庫往往就是 終數(shù)據(jù)所在之?dāng)?shù)據(jù)庫[陽光電子學(xué)校維修專家友情提示]。
(5)將目標(biāo)服務(wù)器main表中 大之MAINID存儲在maxmainid.txt文件中[陽光電子學(xué)校維修專家友情提示]。
(6)根據(jù)maxmainid.txt和minmainid.txt文件里之?dāng)?shù)據(jù),計(jì)算出源數(shù)據(jù)庫里之MAINID之改變量,計(jì)算公式如下:
ChangeMent=MaxID+1-MinID
其中,ChangeMent是源數(shù)據(jù)庫中MAINID之改變量,MaxID是目標(biāo)數(shù)據(jù)庫中 大之MAINID,MinID是源數(shù)據(jù)庫中 小之MAINID[陽光電子學(xué)校維修專家友情提示]。
(7)逐行讀取oldmain.txt,olddata.txt文件,根據(jù)求出之ChangeMent,將對應(yīng)之MAINID修改后,再寫入到新之文件newdata.txt,newmain.txt中[陽光電子學(xué)校維修專家友情提示]。MAINID之修改公式如下:
NewID=OldID+ChangeMent
其中,NewID是修改后之MAINID,也就是入到目標(biāo)庫后,該項(xiàng)數(shù)據(jù)對應(yīng)之MAINID;OldID是該項(xiàng)數(shù)據(jù)在源數(shù)據(jù)庫中之MAINID,ChangeMent是上面計(jì)算出來之MAINID之該變量[陽光電子學(xué)校維修專家友情提示]。
(8)將newdata.txt,newmain.txt中之?dāng)?shù)據(jù)逐行讀出,插入到目標(biāo)機(jī)數(shù)據(jù)庫中去[陽光電子學(xué)校維修專家友情提示]。
(9)退出[陽光電子學(xué)校維修專家友情提示]。
上述步驟之流程如圖1所示[陽光電子學(xué)校維修專家友情提示]。
2 編程方法
在這里介紹一下利用DBLIBRARY編程操作SQLSERVER2000數(shù)據(jù)庫之方法[陽光電子學(xué)校維修專家友情提示]。
2.1 DBLIBRARY介紹
DBLIBRARY是SQLSERVER2000提供之用C語言開發(fā)SQLSERVER2000應(yīng)用程序之函數(shù)庫[陽光電子學(xué)校維修專家友情提示]。他含了
[1] [2] 下一頁
湖南省陽光電子技術(shù)學(xué)校常年面向全國招生.安置就業(yè)。考試合格頒發(fā)全國通用權(quán)威證書:《中華人民共和國職業(yè)資格證》 、《電工證》 、《焊工證》 。采用我校多年來獨(dú)創(chuàng)的“模塊教學(xué)法”,理論與實(shí)踐相結(jié)合、原理+圖紙+機(jī)器三位一體的教學(xué)模式,半天理論,半天實(shí)踐,通俗易懂,確保無任何基礎(chǔ)者也能全面掌握維修技能、成為同行業(yè)中的佼佼者。工作(一期不會(huì),免費(fèi)學(xué)會(huì)為止)。