九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于 SQL SERVER 的分布式數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)

     摘 要:提出了如何充分利用 MS SQL Server 2000 的數(shù)據(jù)庫管理特性,采用鏈接服務(wù)器、分布式分區(qū)視圖和存儲(chǔ)過程構(gòu)建分布式數(shù)據(jù)庫,以及基于數(shù)據(jù)庫復(fù)制技術(shù)實(shí)現(xiàn)混合式的數(shù)據(jù)分布。實(shí)驗(yàn)實(shí)現(xiàn)了分布式數(shù)據(jù)庫的水平分片、垂直分片和混合式數(shù)據(jù)分布。


     關(guān)鍵詞: 分布式數(shù)據(jù)庫;分布式分區(qū)視圖鏈接服務(wù)器;存儲(chǔ)過程



一.  引言

       隨著網(wǎng)絡(luò)與數(shù)字通信技術(shù)的飛速發(fā)展,應(yīng)用的數(shù)據(jù)再也不是存儲(chǔ)在一個(gè)單一的場(chǎng)地,而是可能分布在全球的任何位置。對(duì)這樣由多個(gè)分散數(shù)據(jù)庫組成的管理信息系統(tǒng),如何以最小代價(jià)將其整合成分布式數(shù)據(jù)庫系統(tǒng)也就成為了迫切需要解決的問題 [1] 。MS SQL Server 2000 分布式數(shù)據(jù)庫功能 [2] 允許用戶把多個(gè)不同場(chǎng)地的數(shù)據(jù)庫當(dāng)作一個(gè)完整的數(shù)據(jù)庫看待,允許用戶透明地查詢和操作遠(yuǎn)程數(shù)據(jù)庫實(shí)例的數(shù)據(jù),并使應(yīng)用程序看起來只有一個(gè)大型的集中式數(shù)據(jù)庫,用戶可以在任何一個(gè)場(chǎng)地執(zhí)行全局應(yīng)用,具有數(shù)據(jù)分布透明性和邏輯整體性等特點(diǎn)。


二.  分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)

1.創(chuàng)建和使用數(shù)據(jù)庫鏈接(鏈接服務(wù)器

      數(shù)據(jù)庫鏈接是定義一個(gè)從某一數(shù)據(jù)庫服務(wù)器到另一數(shù)據(jù)庫服務(wù)器的單向通信路徑指示器。可以使用企業(yè)管理器或者 T-SQL 代碼來建立鏈接服務(wù)器。鏈接服務(wù)器可以是 SQL Server或者任何其他的 OLE DB 和 ODBC 數(shù)據(jù)源,只要相應(yīng)的驅(qū)動(dòng)程序支持,分布式查詢就可以檢索和修改相應(yīng)數(shù)據(jù)源中的數(shù)據(jù)。使用創(chuàng)建好的鏈接服務(wù)器,對(duì)用戶來說,數(shù)據(jù)分布就是透明的,用戶就好像使用本地集中式數(shù)據(jù)庫一樣,同時(shí)使用鏈接服務(wù)器的查詢代碼具有更好的移植性,也更加易于維護(hù)。


2.采用分布式分區(qū)視圖實(shí)現(xiàn)水平分片 [3]

      將表分區(qū)就是將表按照分區(qū)鍵劃分為兩個(gè)或兩個(gè)以上更小的分段。分區(qū)鍵通常選擇一個(gè)經(jīng)常被用來選取特定范圍的數(shù)據(jù)字段,這樣分區(qū)的效率最高。通過創(chuàng)建分區(qū)視圖合并所有分區(qū)表,實(shí)現(xiàn)對(duì)整個(gè)數(shù)據(jù)集的訪問。SQL Server 支持兩種類型的分區(qū)視圖 [2] :本地的和分布的。分布式分區(qū)視圖,也稱為聯(lián)合數(shù)據(jù)庫,將分區(qū)表分布在多個(gè)場(chǎng)地的服務(wù)器上。使用鏈接服務(wù)器和分布式分區(qū)視圖方法可以構(gòu)建以水平分片的分布式數(shù)據(jù)庫系統(tǒng)。


3.采用存儲(chǔ)過程實(shí)現(xiàn)垂直分片(一條記錄存在多個(gè)表中)
      SQL Server 沒有提供現(xiàn)成的技術(shù)實(shí)現(xiàn)垂直分片的分布式數(shù)據(jù)庫系統(tǒng),但可以使用鏈接服務(wù)器和存儲(chǔ)過程相結(jié)合的方法,將用戶提交的全局操作轉(zhuǎn)變?yōu)閷?duì)多個(gè)場(chǎng)地的垂直分片表的局部操作,使用存儲(chǔ)過程可以保證分布式事務(wù)的 ACID 特性。存儲(chǔ)過程是存儲(chǔ)在服務(wù)器上的預(yù)編譯好的 SQL 語句集。使用存儲(chǔ)過程將對(duì)多個(gè)場(chǎng)地的垂直分片表的操作放在一個(gè)分布式事務(wù)內(nèi),要么全部提交,要么全部回退,保證了分布式數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)的一致性。



4.采用數(shù)據(jù)庫復(fù)制技術(shù)實(shí)現(xiàn)混合式數(shù)據(jù)分布 [2,4]

      分布式數(shù)據(jù)庫系統(tǒng)必須以最小的代價(jià)保持各冗余副本的一致性,即對(duì)一個(gè)數(shù)據(jù)庫的邏輯對(duì)象的修改,必須傳播到該對(duì)象的所有副本,同時(shí)做相同的修改。SQL Server 使用數(shù)據(jù)庫復(fù)制技術(shù)來解決這一復(fù)雜問題。SQL Server 復(fù)制是按照出版業(yè)的運(yùn)作模式來工作的,它包括 3 個(gè)代理——分發(fā)者、發(fā)布者和訂閱者。本文采用事務(wù)復(fù)制保持各冗余副本的數(shù)據(jù)一致性。


三.  使用 SQL Server 2000  構(gòu)建分布式數(shù)據(jù)庫

      以學(xué)校計(jì)算機(jī)系(CS),外語系(FD),數(shù)理系(MP),教務(wù)處(JW)為例,具體構(gòu)建水平和垂直分片的混合分布的分布式數(shù)據(jù)庫系統(tǒng)。四個(gè) SQL Server 數(shù)據(jù)庫實(shí)例位于各個(gè)系處,前三個(gè)系各自保存本系的學(xué)生信息表,如計(jì)算機(jī)系 info_student_cs,教務(wù)處保存三個(gè)系的學(xué)生信息副本。


1. 創(chuàng)建數(shù)據(jù)庫和表

(1)計(jì)算機(jī)系數(shù)據(jù)庫 dbcs,學(xué)生信息表 info_student_cs,分區(qū)鍵 sdept,分區(qū)鍵必須是主鍵的一部分。
create database dbcs
go
use dbcs
create table info_student_cs
(
sno nvarchar(10) not null,
sname nvarchar(40) not null,
sdept nvarchar(2) not null,
sex nvarchar(2) not null,
age int not null,
constraint pk_info_student_cs
primary key(sno,sdept),
constraint uq_info_student_cs_sno
unique(sno),
constraint chk_info_student_cs_sdept
check(sdept='CS')

)


(2)在外語系、數(shù)理系數(shù)據(jù)庫實(shí)例上分別創(chuàng)建數(shù)據(jù)庫 dbfd,dbmp,學(xué)生信息表info_student_fd,info_student_mp,分區(qū)鍵仍是 sdept,檢查約束分別改為 check(sdept='FD')和 check(sdept='MP')。在教務(wù)處數(shù)據(jù)庫實(shí)例上創(chuàng)建 dbjw。


2.創(chuàng)建鏈接服務(wù)器

分別在四臺(tái)服務(wù)器上建立雙向的數(shù)據(jù)庫鏈接,以創(chuàng)建計(jì)算機(jī)系到外語系的鏈接服務(wù)器(CS_FD)為例。


exec sp_addlinkedserver   'FD', ' ', 'SQLOLEDB ', '192.168.5.9' 

exec sp_addlinkedsrvlogin  'FD', 'false ',null, 'sa', 'wzdq@01' 



3. 采用分布式分區(qū)視圖實(shí)現(xiàn)水平分片

        分別在三個(gè)系服務(wù)器上創(chuàng)建分布式分區(qū)視圖,以計(jì)算機(jī)系為例。


create view info_student
as
select * from info_student_cs
union all
select * from fd.dbfd.dbo.info_student_fd;


         到這里,整個(gè)水平分片的分布式數(shù)據(jù)庫系統(tǒng)已經(jīng)建立完畢。

        現(xiàn)在可以在三個(gè)系的任何位置,只要訪問本地 info_student 分布式分區(qū)視圖,就實(shí)現(xiàn)了所有分布式數(shù)據(jù)庫的操作。

       此時(shí),對(duì)數(shù)據(jù)庫的全局操作和局部操作就如同操作本地集中式數(shù)據(jù)庫一樣。


①插入數(shù)據(jù)。若當(dāng)前客戶端連接在外語系服務(wù)器上,執(zhí)行 insert into info_student values('S006128','LIUJ','CS','F','20'),由于 sdept=’CS’,所以系統(tǒng)會(huì)自動(dòng)將這條記錄插入到計(jì)算機(jī)系的學(xué)生信息表 info_student_cs 中。


插入數(shù)據(jù)遇到問題

問題一、MSDTC不可用解決辦法

    http://blog.csdn.net/bobwu/article/details/4392616

問題二、鏈接服務(wù)器"fd"的 OLE DB 訪問接口 "SQLNCLI10" 返回了消息 "該伙伴事務(wù)管理器已經(jīng)禁止了它對(duì)遠(yuǎn)程/網(wǎng)絡(luò)事務(wù)的支持。"

   http://blog.csdn.net/apollokk/article/details/51543349


問題三、OLE DB 訪問接口 "SQLNCLI10" 返回了消息 "無法在此會(huì)話中啟動(dòng)更多的事務(wù)。"

set XACT_ABORT on
BEGIN DISTRIBUTED TRANSACTION

insert into info_student values('S006129','LIUJ','CS','F','20')
COMMIT TRANSACTION


②修改數(shù)據(jù)。若客戶端連接在數(shù)理系服務(wù)器上,執(zhí)行 update info_student set sdept='FD'where sno='S006128',由于執(zhí)行前sdept=’CS’,執(zhí)行后 sdept=’FD’,所以系統(tǒng)會(huì)自動(dòng)將這條記錄從計(jì)算機(jī)系移動(dòng)到外語系的學(xué)生信息表 info_student_fd 中,實(shí)現(xiàn)了學(xué)生改專業(yè)、換院系的功能。


③刪除數(shù)據(jù)。若客戶端連接在計(jì)算機(jī)系服務(wù)器上,執(zhí)行 delete from info_student where
sno=’S006128’,由于這條記錄 sdept=’FD’,所以系統(tǒng)會(huì)自動(dòng)將這條記錄從外語系服務(wù)器上刪

除。


4. 采用存儲(chǔ)過程實(shí)現(xiàn)垂直分片

        設(shè)表 info_student 存儲(chǔ)學(xué)校所有學(xué)生信息,進(jìn)行垂直分片后生成兩張表 info_student1(sno,sname,sdept)保存在 A 服務(wù)器的數(shù)據(jù)庫 DB1 上,info_student2(sno,sex,age)保存在 B服務(wù)器的數(shù)據(jù)庫 DB2 上,在 A 與 B 上建立存儲(chǔ)過程 add_student,并相互建立數(shù)據(jù)庫鏈接。


  下面僅以插入數(shù)據(jù)為例,介紹如何保持分布式事務(wù)的一致性。在 A 上建立存儲(chǔ)過程add_student,執(zhí)行


create proc add_student
(
@sno char(10),
@sname char(40),
@sdept char(2),
@sex char(2),
@age int
)
as
set XACT_ABORT on
BEGIN DISTRIBUTED TRANSACTION
insert into info_student1
values(@sno,@sname,@sdept);
insert into a_b.db2.dbo.info_student2
values(@sno,@sex,@age);

COMMIT TRANSACTION


         接著執(zhí)行存儲(chǔ)過程 EXEC ADD_STUDENT 'S005129','CWK','MP','M',24,這樣系統(tǒng)就會(huì)分別在 A 和 B 服務(wù)器上的垂直分片后的學(xué)生信息表內(nèi)插入對(duì)應(yīng)的數(shù)據(jù)。類似可解決修改和刪除操作,本文不再具體闡述。


5. 采用復(fù)制技術(shù)實(shí)現(xiàn)混合式數(shù)據(jù)分布

       教務(wù)處需要保存三個(gè)系的學(xué)生信息表副本,為了將事務(wù)一致性保持在令人滿意的范圍內(nèi),本文采用事務(wù)復(fù)制方式。將三個(gè)系(發(fā)布服務(wù)器)的初始快照傳播到教務(wù)處(訂閱服務(wù)器),當(dāng)三個(gè)系服務(wù)器上發(fā)生數(shù)據(jù)修改時(shí),捕獲個(gè)別事務(wù)并傳播到教務(wù)處,從而得以在訂閱服務(wù)器間維護(hù)事務(wù)的一致性。


四.  結(jié)論

    本文論述了在 SQL Server 2000 的數(shù)據(jù)庫系統(tǒng)中,采用鏈接服務(wù)器、分布式分區(qū)視圖和存儲(chǔ)過程相結(jié)合的方法來架構(gòu)分布式數(shù)據(jù)庫系統(tǒng),并基于數(shù)據(jù)庫復(fù)制技術(shù)實(shí)現(xiàn)混合式的數(shù)據(jù)分布。同時(shí)也深入探討了設(shè)計(jì)和實(shí)現(xiàn)方法,取得了令人滿意的實(shí)驗(yàn)效果。提出的架構(gòu)分布式數(shù)據(jù)庫方法實(shí)現(xiàn)了數(shù)據(jù)分布的透明性,簡(jiǎn)化了數(shù)據(jù)訪問、降低了維護(hù)復(fù)雜度,在應(yīng)用中具有一定的優(yōu)勢(shì)。




參考文獻(xiàn)
[1] 邵佩英. 分布式數(shù)據(jù)庫系統(tǒng)及其應(yīng)用(第二版). 北京:科學(xué)出版社,2005
[2] Paul Nielsen,劉瑞等譯. Microsoft SQL Server 2000 寶典[M]. 北京:中國鐵道出版社,2004
[3] 曾文全. 基于 SQL Server 2000 的分布式數(shù)據(jù)庫的架構(gòu)[J]. 教育信息化,2006-1,24~25
[4] 杜杏菁. 分布式數(shù)據(jù)庫中復(fù)制技術(shù)的研究[J]. 華北科技學(xué)院學(xué)報(bào),2004,1(3),88~91
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
OceanBase 1.0 分布式技術(shù)架構(gòu)
SQL Server 2012 各版本功能比較
SQLSERVER查詢速度慢的原因收集以及優(yōu)化建議
海量數(shù)據(jù)解決方案,知多少?
大型網(wǎng)站應(yīng)用之海量數(shù)據(jù)和高并發(fā)解決方案總結(jié)一二
數(shù)據(jù)庫基礎(chǔ)知識(shí)題庫
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服