鄧永志
(南陽市中心血站,河南 南陽473000)
眾所周知,數(shù)據(jù)庫系統(tǒng)的核心是信息管理,基本工作包括聯(lián)機的分析處理、聯(lián)機的事務(wù)處理、突發(fā)事件的應(yīng)對等,是計算機技術(shù)在具體的社會活動中得到運用的一個重要表現(xiàn)。
數(shù)據(jù)庫技術(shù)通過與相關(guān)技術(shù)的結(jié)合,已經(jīng)從單一的商用數(shù)據(jù)庫技術(shù)發(fā)展成為商用、分布式、并行式等類型的數(shù)據(jù)庫技術(shù)。數(shù)據(jù)壓縮、海量數(shù)據(jù)的存儲、寬帶網(wǎng)絡(luò)、高速網(wǎng)絡(luò)計算機技術(shù)、多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)等方面的發(fā)展對數(shù)據(jù)庫技術(shù)的發(fā)展有一定的促進作用。多媒體數(shù)據(jù)處理技術(shù)是一門涉及面非常廣泛的綜合性信息處理技術(shù),與語音圖形圖像的識別、語音控制等都有著非常密切的關(guān)系。到目前為止,還沒有公認的統(tǒng)一數(shù)據(jù)模型與標準規(guī)范。
在Sybase數(shù)據(jù)庫里,人們一般使用服務(wù)模式的多用戶數(shù)據(jù)庫,這種數(shù)據(jù)庫能過接收并且處理很多用戶的特別要求。所以,Sybase數(shù)據(jù)庫所帶來的最大效用就是能夠同時處理、解決很多的問題。
Sybase的服務(wù)程序是應(yīng)用了多線程的一種系統(tǒng)結(jié)構(gòu),多線程是在一起共同運行的,運行時會有很多的用戶來請求,從數(shù)據(jù)庫里調(diào)用數(shù)據(jù)需要很多資料來發(fā)送,并存儲發(fā)出去的同樣的數(shù)據(jù)。因為會有多個用戶都是一樣的數(shù)據(jù),會導致數(shù)據(jù)的不一致,有時數(shù)據(jù)共享會出現(xiàn)丟失數(shù)據(jù)的情況,甚至可能會讀出錯誤的數(shù)據(jù),這樣就會給用戶造成很大的不便,不能夠重新找尋數(shù)據(jù)。所以,Sybase數(shù)據(jù)庫里的服務(wù)程序應(yīng)用了封鎖的程序,把這些要處理的問題當作是維修方面的很重要一個項目,來阻止其他用戶訪問到了那些不一致的數(shù)據(jù)。服務(wù)程序因此而推出了3種基本的方法:共享的鎖定程序、更新式的鎖定程序、排斥性的程序。這些程序負責3種基本的隔離程序,提出了兩種程度的鎖,有頁面級別的鎖定程序和表示級別的鎖定程序,大的系統(tǒng)會根據(jù)情況的不同而設(shè)計出不同類型級別的鎖定程序。至于用戶這一方面來說,可以通過并發(fā)的程度和準確的程度需要選擇不一樣的鎖定程序。經(jīng)過封鎖的程序,進度程序可以在得到對數(shù)據(jù)進行封鎖以后,阻止其他的進程影響數(shù)據(jù)的正常使用,使數(shù)據(jù)得到了一致性的處理。
數(shù)據(jù)庫并發(fā)的能力指的是在一個相同的時間里數(shù)據(jù)能夠同時進行訪問。一般情況下,Sybase會有并發(fā)控制能力,但事實上,需要全面看待這種并發(fā)控制的功能,有用戶想要進行同樣操作時,可以從PB里的進行設(shè)置到并發(fā)控制。并發(fā)控制要在用戶數(shù)據(jù)進行改正的時候,不會被蓋住或者改變。
封鎖程序的運行要在某個特定的時間進行固定的操作,需要把很多并發(fā)運行程序的數(shù)據(jù)進行分開,使它們不會互相干擾。在使用Sybase數(shù)據(jù)庫后,進入開發(fā)的MIS系統(tǒng)里,用戶會經(jīng)常性地把數(shù)據(jù)窗口從數(shù)據(jù)庫的記錄中進行調(diào)用,調(diào)用次數(shù)增多后數(shù)據(jù)被修改,要對這些改正后的數(shù)據(jù)進行操作,數(shù)據(jù)窗口會短暫地將緩存的數(shù)據(jù)儲存到緩沖區(qū)域里,還要對其進行一系列地操作也就是進行數(shù)據(jù)的提交后,會把真正需要送走的數(shù)據(jù)交到數(shù)據(jù)庫去。在這個程序操作時,為了用戶能保證數(shù)據(jù)的一致性,有必要把這些操作過的記錄進行數(shù)量上的改變。在序號上進行加減都可以,操作時一般會把改過的數(shù)據(jù)又重新放到緩沖的區(qū)域中去。
很多應(yīng)用程序都會根據(jù)數(shù)據(jù)庫之外的緩沖區(qū)域里的數(shù)據(jù)來判斷,這會造成緩沖區(qū)域里的數(shù)據(jù)出現(xiàn)混淆,出現(xiàn)多個相同的主鍵值,使不同記錄的主鍵值會出現(xiàn)沖突,序號的數(shù)值也會因此發(fā)生錯誤,破壞了數(shù)據(jù)很重要的一致性。兩個用戶同時在Sybase庫中調(diào)出某個表格的數(shù)據(jù)來做局部地修改并且錄進去,讀取數(shù)據(jù)時出現(xiàn)的序號數(shù)最大為5,假如兩個人都想要在表格的最后做一個記錄時,應(yīng)用程序就會發(fā)揮出它應(yīng)有的效用,重新地把序號設(shè)置成為6。這一步的操作就會使系統(tǒng)和Sybase無法對其進行甄別,出現(xiàn)了混亂,其中的一個用戶上傳的數(shù)據(jù)就會存入到Sybase里面去,但其實那個用戶所修改的序號是被占用了的,就無法將數(shù)據(jù)存入庫里面,數(shù)據(jù)庫的一致性被破壞了。第二個用戶的操作就被抵制了。
Sybase的服務(wù)程序有Identify來供使用,Identify是在設(shè)置序列號時設(shè)置的屬性,在序列號被定義成為Identify后,再向表里面加進去一個行號,或者系統(tǒng)會給出序列號的新數(shù)值,還要保證這個值有連貫性,在這個操作后,系統(tǒng)會自動地給出有順序的序列號,從而避免了序號的重復出現(xiàn)。
由于使用數(shù)據(jù)時會有不一樣的情況出現(xiàn),還要訪問并且修正控制并發(fā)方案,這就會用到數(shù)據(jù)鎖定程序。在表的主鍵以外的地方,還要加上操作數(shù)據(jù)并加以修改,使這些數(shù)據(jù)能夠被系統(tǒng)接受并錄入到數(shù)據(jù)庫。
序號的類型和屬性所在的表的主鍵是應(yīng)該重現(xiàn)的一個方面,在用戶程序以及數(shù)據(jù)庫里會進行修改的都應(yīng)該采取創(chuàng)立最大序列號表的對策。
序號的屬性要和多種屬性一起整合后組建成主鍵,所以,不同的序號會采取不一樣的數(shù)值。但如果把這些屬性的數(shù)值都調(diào)到一個值上,而序號的數(shù)值卻都不一樣,因此,還要考慮連續(xù)性,屬性不能夠亂設(shè)。比如在單位里,操作人員會定期地檢修設(shè)備,在記錄表里面會有單位的名稱指代、時間、機器的專屬號碼,這些值是應(yīng)該取成不一樣的,而生產(chǎn)號碼也必須是連續(xù)性的。對于操縱設(shè)備的工作人員來說,他們每天都要在早錄入本上寫進當天的檢修情況等。然而在整個系統(tǒng)里,為了使用戶能夠正常地使用程序,只要用戶發(fā)出一條信息,程序就會把這些信息填進已經(jīng)設(shè)計好的表格里。表格內(nèi)容會包括單位的名稱指代、檢修的情況和日期,程序會自動把這些記錄后的同樣格式的信息的編號值進行修改。
但當主鍵的序號屬性很多時,或者在問題交付前會加上幾條信息的,如果采用以上幾種方法來解決問題,還需設(shè)置一個專門用來進行窗口互相排斥的模型去保證數(shù)據(jù)的一致性。因此,專家開發(fā)出了“窗口的互斥管理程序”,在任何一個時間里都只允許一個窗口被一個用戶操作和使用,來保證數(shù)據(jù)庫的一致性不被破壞。
其它不是來自于序號沖突問題的并發(fā)控制問題,都能夠按照它們所有的屬性,總結(jié)出它們的規(guī)律,就完全可以進行快速地分類了。靈活地運用文章中提到的方法,就能夠有效地解決在MIS系統(tǒng)Sybase中可能會出現(xiàn)的并發(fā)控制問題,使數(shù)據(jù)能保持一致性。
并發(fā)能力是指很多用戶在同一個時間里訪問相同的數(shù)據(jù)的一種程式能力。在普通的數(shù)據(jù)庫里都有并發(fā)控制的功能,但是并發(fā)控制功能正是導致數(shù)據(jù)庫不能一致的一個重要原因,所以說并發(fā)控制是我們要進行抑制的狀況。
[1] 王秀敏.基于SYBASE SQL SERVER的頁鎖表鎖及死鎖研究[J].計算機應(yīng)用研究,2002,19(4):66-67.
[2] 邵佩英,揚孝如.數(shù)據(jù)庫系統(tǒng)基礎(chǔ)知識[M].北京:中國水利水電出版社,2001.
[3] 諶 明.PE系統(tǒng)數(shù)據(jù)庫重構(gòu)的設(shè)計與實現(xiàn)[D].杭州:浙江大學,2006.
[4] 謝西庭.嵌入式主動實時數(shù)據(jù)庫ARTs-EDB事務(wù)處理的設(shè)計[D].武漢:華中科技大學,2004.