国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用SQL實(shí)現(xiàn)分布式數(shù)據(jù)復(fù)制

2019-11-18 22:13:09
字體:
供稿:網(wǎng)友
復(fù)制的概念

  復(fù)制作為一個(gè)重要并且強(qiáng)大的技術(shù),為分布式數(shù)據(jù)的存儲(chǔ)和處理提供了有力支持。微軟公司的SQL Server可以生成數(shù)
據(jù)的拷貝,并能把這些數(shù)據(jù)的拷貝分發(fā)到不同的地方,自動(dòng)進(jìn)行數(shù)據(jù)的同步,保持所有的數(shù)據(jù)拷貝具有相同的數(shù)據(jù)。SQL
Server采用一種稱為“松散一致”的復(fù)制模式在兩個(gè)數(shù)據(jù)庫之間進(jìn)行復(fù)制。這兩個(gè)數(shù)據(jù)庫既可以在同一臺(tái)計(jì)算機(jī)上,也可
以在不同的計(jì)算機(jī)上,彼此通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)進(jìn)行連接。

  我們公司在開發(fā)“西安市國家稅務(wù)局內(nèi)部網(wǎng)絡(luò)信息系統(tǒng)”中,正是利用了SQL Server的復(fù)制功能,實(shí)現(xiàn)全西安市分布
的稅收數(shù)據(jù)的復(fù)制同步。西安市國家稅局包括市局機(jī)關(guān)和下屬的18個(gè)基層征管分局,分布于西安市不同的地理位置,彼此通
過DDN專線或X.25專線連接,構(gòu)成了西安國稅局廣域網(wǎng)。市局信息中心用Windows NT Server4.0 構(gòu)建一個(gè)Windows NT的單
主域網(wǎng)絡(luò)環(huán)境,下屬每個(gè)分局有一臺(tái)運(yùn)行Windows NT Server 4.0或Windows NT Server 3.51的服務(wù)器,通過廣域網(wǎng)加入到
單主域的環(huán)境中作為一臺(tái)獨(dú)立的服務(wù)器運(yùn)行。各分局建有本分局的局域網(wǎng),網(wǎng)絡(luò)環(huán)境為Novell和Windows NT的混合網(wǎng)絡(luò)環(huán)
境。

  全西安市所有的納稅人,均到指定的征管分局進(jìn)行納稅登記、納稅申報(bào)。國稅局用FoxPRo開發(fā)了基于Novell網(wǎng)絡(luò)環(huán)境
的稅收征管軟件,在各分局征收大廳由Novell的無盤工作站負(fù)責(zé)稅收數(shù)據(jù)的錄入,寫入到Novell服務(wù)器上的數(shù)個(gè)DBF文件
中。由于稅收征管數(shù)據(jù)分布在全市不同的征管分局,為全市范圍納稅信息的檢索和分析帶來困難。

  新系統(tǒng)的開發(fā),在原有基礎(chǔ)上,編制專門的數(shù)據(jù)轉(zhuǎn)換程序,把存儲(chǔ)于Novell服務(wù)器上的DBF文件轉(zhuǎn)換到本分局Windows
NT上的SQL Server數(shù)據(jù)庫中。每個(gè)分局的SQL Server數(shù)據(jù)庫與市局信息中心的SQL Server數(shù)據(jù)庫進(jìn)行復(fù)制,及時(shí)把最新的
稅收數(shù)據(jù)傳遞到市局信息中心。這樣在市局信息中心,就有了全市所有稅收征管數(shù)據(jù)。信息中心建立Intranet Web站點(diǎn),
用戶的計(jì)算機(jī)只要連上各分局的局域網(wǎng),或者通過Modem撥號(hào)到信息中心的RAS服務(wù)器,就可以用IE瀏覽器訪問IIS服務(wù)器,
由IIS服務(wù)器向SQL Server服務(wù)器發(fā)出數(shù)據(jù)請(qǐng)求并把結(jié)果按HTML格式返回給用戶瀏覽器。

  系統(tǒng)的設(shè)計(jì)采用客戶瀏覽/服務(wù)器的多層結(jié)構(gòu)方式,客戶端采用標(biāo)準(zhǔn)的瀏覽器訪問方式。用戶在自己的計(jì)算機(jī)上安裝IE
瀏覽器(WIN98、WINNT4.0中已內(nèi)置IE4瀏覽器),輸入Web 站點(diǎn)地址,就可以進(jìn)入該系統(tǒng)。

  在中間層,由Internet Information Server完成大多數(shù)的用戶業(yè)務(wù)規(guī)則的實(shí)現(xiàn),例如對(duì)用戶權(quán)限的限制、數(shù)據(jù)請(qǐng)求的
生成等。IIS會(huì)根據(jù)不同的用戶所擁有的不同的權(quán)限,生成不同的頁面。將來當(dāng)業(yè)務(wù)規(guī)則發(fā)生變化時(shí),只需要在Internet
Information Server上進(jìn)行相應(yīng)的更改,這種更改就會(huì)在系統(tǒng)的每一個(gè)用戶下次訪問系統(tǒng)時(shí)得到體現(xiàn)。

  在系統(tǒng)的最低層,由SQL Server大型關(guān)系數(shù)據(jù)庫作為支撐。西安全市的稅務(wù)數(shù)據(jù)是一個(gè)以GB為單位的大型數(shù)據(jù)庫,納
稅數(shù)據(jù)表中的數(shù)據(jù)記錄超過數(shù)百萬條,在如此大量的數(shù)據(jù)中進(jìn)行快速的數(shù)據(jù)檢索和數(shù)據(jù)分析,一般的數(shù)據(jù)庫軟件是難以完
成的。SQL Server關(guān)系型數(shù)據(jù)庫,較好地完成了用戶提出的各種數(shù)據(jù)的檢索要求,同時(shí)也正是利用了SQL Server的數(shù)據(jù)復(fù)
制技術(shù),把近二十個(gè)分局的數(shù)據(jù)通過廣域網(wǎng)復(fù)制到信息中心來,使用戶能快速獲取全市的納稅信息。

  該系統(tǒng)實(shí)現(xiàn)的一個(gè)重要部分就是各分局稅收征管數(shù)據(jù)的復(fù)制。SQL Server的復(fù)制有以下幾個(gè)特點(diǎn):

  1.基于事務(wù)

  有復(fù)制標(biāo)志的事務(wù)從源數(shù)據(jù)庫的事務(wù)日志讀出,并送到目的數(shù)據(jù)庫。例如執(zhí)行了一條Insert語句使源數(shù)據(jù)庫的數(shù)據(jù)發(fā)
生變化,這條Insert語句會(huì)被寫入到一個(gè)數(shù)據(jù)庫中,我們稱之為發(fā)布數(shù)據(jù)庫(Distrbution)。在適當(dāng)?shù)臅r(shí)候,這條Insert
語句會(huì)送到復(fù)制的目的數(shù)據(jù)庫并執(zhí)行該Insert語句,以此保證兩端的數(shù)據(jù)保持同步。

  2.以三種不同的方式使用服務(wù)器

  (1)出版(Publication):作為源數(shù)據(jù)服務(wù)器(在本系統(tǒng)中是各分局的SQL Server服務(wù)器),當(dāng)標(biāo)志復(fù)制的表
(Table)的數(shù)據(jù)發(fā)生變化時(shí),產(chǎn)生該變化的事務(wù)被刻上復(fù)制標(biāo)志,由日志閱讀器(LogReader)把該事務(wù)送入分發(fā)數(shù)據(jù)庫
(Distribution Database)。這些事務(wù)寄存在分發(fā)數(shù)據(jù)庫中直到被傳送到目的服務(wù)器。

  (2)分發(fā)(Distribution):包含有分發(fā)數(shù)據(jù)庫。分發(fā)服務(wù)器接受出版服務(wù)器的更改事務(wù),并保存到分發(fā)數(shù)據(jù)庫中。在
適當(dāng)?shù)臅r(shí)候,把這些事務(wù)送入訂閱服務(wù)器。缺省情況下,分發(fā)服務(wù)器與出版服務(wù)器為同一臺(tái)計(jì)算機(jī),當(dāng)然也可以是不同的
計(jì)算機(jī)。

  (3)訂閱(Subscription):接受出版服務(wù)器的出版數(shù)據(jù)。

  3.使用專用的SQL Server數(shù)據(jù)庫作為復(fù)制數(shù)據(jù)的可靠隊(duì)列

  SQL Server的復(fù)制采用“松散一致”復(fù)制模式,其特征是源數(shù)據(jù)與拷貝數(shù)據(jù)之間并不是在任何時(shí)刻都保持完全一致,
它們之間有一個(gè)延時(shí)。源數(shù)據(jù)庫的變化,不是立刻反應(yīng)到訂閱數(shù)據(jù)庫中,而是把產(chǎn)生變化的事務(wù)寫入一個(gè)專門的分發(fā)數(shù)據(jù)
庫中(Distribution)。當(dāng)這些事務(wù)累計(jì)到設(shè)定值時(shí),由事務(wù)分發(fā)器(Distribution task)把事務(wù)送到訂閱服務(wù)器中。訂
閱服務(wù)器再執(zhí)行這些事務(wù)來保持源數(shù)據(jù)與拷貝數(shù)據(jù)的一致。分發(fā)數(shù)據(jù)庫完成了一種緩沖的作用,當(dāng)因網(wǎng)絡(luò)或其他問題使復(fù)
制不能完成時(shí),源數(shù)據(jù)的變化會(huì)一直保存在分發(fā)數(shù)據(jù)庫中直到問題解決再自動(dòng)把所有保存的事務(wù)送出,并且復(fù)制兩端的數(shù)
據(jù)仍保持一致。這種方式使SQL Server數(shù)據(jù)的復(fù)制有極大的自適應(yīng)性和可靠性,最大限度減少用戶的干預(yù)。

  SQL Server的復(fù)制主要組成部分有:日志閱讀(Log Reader)、初始同步(Synchornization)、數(shù)據(jù)分發(fā)
(Distribution)和分發(fā)數(shù)據(jù)庫。

  初始同步是復(fù)制真正開始執(zhí)行的第一步。類似于開始傳送事務(wù)前,先給源數(shù)據(jù)庫照一個(gè)快照,把傳送事務(wù)前的那一時(shí)
刻的數(shù)據(jù)拷貝到訂閱數(shù)據(jù)庫。其實(shí)質(zhì)就是把那時(shí)刻的數(shù)據(jù)生成BCP文件,通過網(wǎng)絡(luò)傳到訂閱數(shù)據(jù)庫。完成初始同步后,再開
始由日志閱讀初始同步以后的事務(wù),并由數(shù)據(jù)分發(fā)過程傳送分發(fā)數(shù)據(jù)庫中的事務(wù)到訂閱服務(wù)器中去。

  復(fù)制的實(shí)現(xiàn)

  下面我們結(jié)合在西安市國家稅務(wù)局內(nèi)部網(wǎng)絡(luò)信息系統(tǒng)的實(shí)例,介紹SQL Server6.5的配置以及其中需要注意的事項(xiàng)。

  復(fù)制前的準(zhǔn)備

  (1)使用一種字符集:市局和分局的SQL Server的配置使用一種字符集。

  (2)允許分局服務(wù)器有足夠的事務(wù)日志空間。

  (3)最好設(shè)置MSSQL Service 和SQLExecutive Service Auto Start at Boot time。

  復(fù)制的安裝

  (1)運(yùn)行Microsoft SQL Enterprise Manage,在Server Manager窗口中選擇源數(shù)據(jù)服務(wù)器。

  (2)從Server選單選擇Replication Configuration, 然后從所出現(xiàn)的子選單選擇Install Publishing。出現(xiàn)Install
Replication Publishing 對(duì)話框。

  (3)選擇Local-Install New Local Distribution Database選項(xiàng)(配置該服務(wù)器充當(dāng)自身的分發(fā)服務(wù)器)。

  在為分發(fā)數(shù)據(jù)庫建立分發(fā)數(shù)據(jù)庫設(shè)備時(shí),要根據(jù)源數(shù)據(jù)的更新率估計(jì)分發(fā)數(shù)據(jù)設(shè)備的大小,盡量把分發(fā)數(shù)據(jù)庫建大
些。

  設(shè)置出版和訂閱服務(wù)器和數(shù)據(jù)庫

  在前面的安裝分發(fā)數(shù)據(jù)庫中,如果在詢問是否在本次配置服務(wù)器選項(xiàng)對(duì)話框中,選擇YES,則出現(xiàn)
Replication-Publishing對(duì)話框。在Enable Publishin to These Servers(左邊列表)目錄中選擇訂閱的服務(wù)器,在本實(shí)
例中為信息中心的SQL Server。在Publishing Database下(右邊列表),選擇被允許出版數(shù)據(jù)的數(shù)據(jù)庫。

  回到Server Manager,選擇訂閱服務(wù)器,從Server選單選擇Replication Configuration;然后從出現(xiàn)的下拉選單選擇
Subscribing,出現(xiàn)Replication-Subscribing對(duì)話框。在左側(cè)的Publishing Server框中選擇源數(shù)據(jù)SQL服務(wù)器,在右側(cè)的
框內(nèi)選擇拷貝的數(shù)據(jù)庫。

  復(fù)制數(shù)據(jù)的設(shè)置

  安裝SQL Server復(fù)制并設(shè)置復(fù)制的服務(wù)器和數(shù)據(jù)庫后,要進(jìn)行出版物的設(shè)置,就是指定復(fù)制數(shù)據(jù)庫中那些表要進(jìn)行復(fù)
制,一個(gè)出版物可以包括很多表。

  從Server Manager窗口,選擇源數(shù)據(jù)服務(wù)器。

  從Manage選單,選擇Replication,然后選擇Publication對(duì)話框。

  選擇“NEW”,出現(xiàn)Edit Publications對(duì)話框。為該復(fù)制數(shù)據(jù)設(shè)置一個(gè)名字,選擇要復(fù)制的表到右邊的列表。

  這里要注意到這樣一個(gè)情況,因?yàn)槲覀円獜亩鄠€(gè)源數(shù)據(jù)庫向一個(gè)中心服務(wù)器數(shù)據(jù)庫復(fù)制數(shù)據(jù),一定要保證源數(shù)據(jù)之間
不會(huì)互相影響。復(fù)制的表中要有字段定義數(shù)據(jù)的來源。

  在Edit Publications對(duì)話框,選擇右邊列表中要復(fù)制的表,按“Edit”按鈕,進(jìn)入Manage Article對(duì)話框,在最下面
的Restriction Clause中輸入標(biāo)識(shí)唯一源數(shù)據(jù)的條件。

  在Manage Article對(duì)話框中,選擇Scripts標(biāo)簽。按“Generate”按鈕,出現(xiàn)模式源設(shè)置畫面。這里需要設(shè)置初始同步
的模式。在多個(gè)源數(shù)據(jù)庫向一個(gè)中心數(shù)據(jù)庫復(fù)制數(shù)據(jù)時(shí),這里一定要選擇“DELETE DATA Using Restriction Clause”,
即是用前面的唯一標(biāo)識(shí)條件對(duì)數(shù)據(jù)操作。否則會(huì)造成不同數(shù)據(jù)源的復(fù)制數(shù)據(jù)互相影響。

  開發(fā)體會(huì)

  SQL Server的復(fù)制被設(shè)計(jì)成最小用戶干預(yù)的實(shí)現(xiàn)。一旦設(shè)置完成后,基本不需要用戶再去進(jìn)行處理。雖然初始同步時(shí)
SQL Server自動(dòng)進(jìn)行的,但在實(shí)際應(yīng)用中,廣域網(wǎng)的連接(DDN、X.25)常常不能完成這種同步,所以需要我們手工完成初
始同步,例如自己把源數(shù)據(jù)庫BCP數(shù)據(jù)導(dǎo)出,再導(dǎo)入到訂閱數(shù)據(jù)庫中,選擇初始同步的模式為No Data Synchronization。

  SQL Server的復(fù)制是基于事務(wù)的。在廣域網(wǎng)的連接速度比較慢的情況下,不要做一次更新很多記錄的操作,例如一條
無條件限制的UPDATE語句,在源數(shù)據(jù)庫中可能影響1000條記錄,但在事務(wù)傳送中,會(huì)發(fā)出1000條UPDATE語句并作為一個(gè)事
務(wù)傳出,很容易造成復(fù)制失敗。這時(shí)最好把更新的操作分解得很小,每一條更新語句都作為單獨(dú)的事務(wù)傳送。

  適當(dāng)增大分發(fā)數(shù)據(jù)庫的大小,保證在網(wǎng)絡(luò)不同的情況下,分發(fā)數(shù)據(jù)庫有足夠的空間保存更新操作的事務(wù)。

  及時(shí)清除分發(fā)數(shù)據(jù)庫。設(shè)置復(fù)制后,SQL Server會(huì)生成一個(gè)清除分發(fā)數(shù)據(jù)庫的任務(wù),負(fù)責(zé)把分發(fā)數(shù)據(jù)庫中分發(fā)到訂閱
服務(wù)器的事務(wù)刪除。但缺省情況下,清除任務(wù)是每天夜里105執(zhí)行,如果你的SQL Server服務(wù)器不是24小時(shí)開機(jī),注意把
該任務(wù)調(diào)整到開機(jī)的時(shí)間范圍內(nèi)內(nèi)執(zhí)行。

  對(duì)于大數(shù)據(jù)庫的數(shù)據(jù)查詢檢索SQL語句的編寫,特別是對(duì)帶有GROUP一類合計(jì)的查詢的使用以及多表連接,一定要注
意。盡量避免GROUP后有多余兩個(gè)字段的查詢,把需要按多個(gè)字段分組GROUP的查詢分成多次,利用中間表完成查詢。適當(dāng)
增加temdb數(shù)據(jù)庫的大小,使用一臺(tái)單獨(dú)的服務(wù)器作為SQL Server服務(wù)器,盡量為SQL Server分配更多的內(nèi)存。例如在128M
內(nèi)存的配置下,為SQL Server分配100M的內(nèi)存。

  在微軟新近推出的SQL Server 7中,數(shù)據(jù)查詢的功能得到很大的加強(qiáng),在多表連接、合計(jì)分組等方面都有很大的提
高。SQL Server6.5中的數(shù)據(jù)復(fù)制是單向的,僅有源數(shù)據(jù)庫的數(shù)據(jù)被更新到訂閱數(shù)據(jù)庫中。在新版本的SQL Server7中,復(fù)
制已經(jīng)實(shí)現(xiàn)了雙向的復(fù)制,任何一端數(shù)據(jù)的更改,都會(huì)在另一端得到體現(xiàn)。SQL Server7中的復(fù)制,出版和訂閱服務(wù)器可以
使用不一樣的代碼頁,這一點(diǎn)也較SQL Server6.5限制少了。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长沙市| 景洪市| 台中县| 奉化市| 涟源市| 维西| 沙湾县| 上虞市| 延津县| 临沧市| 凤庆县| 韶关市| 南宫市| 哈巴河县| 新沂市| 兴文县| 桂林市| 英超| 双桥区| 东山县| 迭部县| 南汇区| 闽侯县| 吉隆县| 无为县| 仁化县| 涪陵区| 金湖县| 东阳市| 柳河县| 闽清县| 文山县| 新干县| 东辽县| 罗江县| 右玉县| 乐至县| 永胜县| 西乡县| 苍溪县| 莱阳市|