郝洋 肖子航 吳晨光
(1.河南省電力通信自動化公司,河南 鄭州 450000;2.河南省電力公司安陽供電公司,河南 安陽 455000)
(1)嵌入式(Embedded)
Berkeley DB能夠直接鏈接到應(yīng)用程序當(dāng)中,并不是只能應(yīng)用于嵌入式系統(tǒng)。Berkeley DB與應(yīng)用程序運行在相同的地址空間中,所以,無論是在同一臺計算機的不同進程之間,還是在互聯(lián)網(wǎng)上不同計算機之間,它對數(shù)據(jù)庫的操作不需要在進程之間建立通訊,從而可以大大提高數(shù)據(jù)庫訪問速度。Berkeley DB能夠為多種編程語言提供應(yīng)用程序接口,包括 C++、Java、Python、PHP 和 Tcl等,所有的數(shù)據(jù)庫操作都在程序庫內(nèi)部發(fā)生。
(2)可伸縮(Scalable)
Berkeley DB的函數(shù)庫容量很小,但是它能夠管理容量巨大的,可高達256TB,在性能方面與相同等級的數(shù)據(jù)庫系統(tǒng)相比較存在明顯優(yōu)勢。Berkeley DB支持?jǐn)?shù)據(jù)的高度并發(fā)操作,能夠輕松應(yīng)付幾千個用戶同時對一個數(shù)據(jù)庫進行訪問。
(3)結(jié)構(gòu)簡單
Berkeley DB數(shù)據(jù)庫具有簡單的存儲數(shù)據(jù)結(jié)構(gòu),每一個數(shù)據(jù)作為一個記錄,由關(guān)鍵字和數(shù)據(jù)共同組成。數(shù)據(jù)可以是一個字符串這種簡單的數(shù)據(jù)類型,也可以是C語言結(jié)構(gòu)中的復(fù)雜數(shù)據(jù)類型,無論數(shù)據(jù)部分有多么繁雜,Berkeley DB都不會對其做出任何反應(yīng),完全由程序員自行處理。
Berkeley DB數(shù)據(jù)庫系統(tǒng)由五個子系統(tǒng)構(gòu)成(如圖1所示):存取管理子系統(tǒng)、事務(wù)子系統(tǒng)、內(nèi)存池管理子系統(tǒng)、鎖子系統(tǒng)和日志子系統(tǒng)。存取管理子系統(tǒng)是數(shù)據(jù)庫的核心子系統(tǒng),每個子系統(tǒng)對應(yīng)支持不同的應(yīng)用級別。
圖1 Berkeley DB數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)
(1)移動話費結(jié)算流程圖(圖二所示)
(2)話費結(jié)算原理
話費結(jié)算的任務(wù)是將從各個基站收集到的原始化條集合進行計算,并將計算結(jié)果存入服務(wù)器,保留原始記錄。結(jié)算過程中需要做余額的扣除處理。由于收集到的原始話條不帶有套餐信息,但是結(jié)算時必須要按照不同的套餐類型讀取參數(shù)進行計算,所以有必要以號碼作為聯(lián)系并讀取個人信息表取得該號碼所對應(yīng)的套餐類型,并添加到原始化條中作為計算依據(jù)。
本文在移動話費計算中應(yīng)用了Berkeley DB數(shù)據(jù)庫,并沒有選擇一些流行的主流數(shù)據(jù)庫,是根據(jù)移動話費業(yè)務(wù)系統(tǒng)的需求而定的。而主流的關(guān)系型數(shù)據(jù)庫比較適合處理數(shù)據(jù)結(jié)構(gòu)復(fù)雜的數(shù)據(jù),對于結(jié)構(gòu)相對簡單的數(shù)據(jù)而言,使用Berkeley DB數(shù)據(jù)庫進行處理就會顯現(xiàn)出較大優(yōu)勢。Berkeley DB提供了眾多應(yīng)用程序接口,對于函數(shù)的調(diào)用非常簡單,Berkeley DB提高的庫與應(yīng)用程序一起編譯成為可執(zhí)行程序。由于數(shù)據(jù)庫管理系統(tǒng)和應(yīng)用程序在同一個進程空間當(dāng)中運行,通過調(diào)用Berkeley DB數(shù)據(jù)庫系統(tǒng)的函數(shù)來進行數(shù)據(jù)庫的訪問操作,所以不需要在數(shù)據(jù)庫和應(yīng)用程序之間進行通信,也不需要應(yīng)用SQL數(shù)據(jù)庫語言對數(shù)據(jù)庫進行操作,避免了系統(tǒng)對SQL數(shù)據(jù)庫語言的解析過程,大大降低了訪問數(shù)據(jù)庫的時間,并且提高了訪問速度。
(1)穩(wěn)定性
移動話費業(yè)務(wù)系統(tǒng)由多臺服務(wù)器組成一個整體,全部站點面向移動用戶提供服務(wù),如果有個別的站點出現(xiàn)技術(shù)故障,剩下的站點仍然可以向用戶提高服務(wù),除非所有的站點全部癱瘓,Berkeley DB數(shù)據(jù)庫系統(tǒng)還可以提供監(jiān)測功能,一旦服務(wù)器出現(xiàn)任何問題導(dǎo)致無法工作,就會重新啟動服務(wù)器,使整個系統(tǒng)更加穩(wěn)定安全。
(2)可靠性
移動話費業(yè)務(wù)系統(tǒng)采用了Berkeley DB數(shù)據(jù)庫系統(tǒng)的恢復(fù)機制,如果服務(wù)器由于若干原因出現(xiàn)故障,導(dǎo)致無法正常處理用戶提交的數(shù)據(jù),或者造成用戶數(shù)據(jù)丟失,可以通過Berkeley DB數(shù)據(jù)庫的恢復(fù)還原功能,同步控制端和站點之間的數(shù)據(jù),從而很好地保證了系統(tǒng)可靠性。
(3)安全性
在移動話費業(yè)務(wù)系統(tǒng)整體服務(wù)器中,所有服務(wù)器存儲的用戶數(shù)據(jù)都是相同的,而且隨時進行同步更新,控制端負責(zé)將接收到的用戶請求數(shù)據(jù)同步給所有的站點,同時將數(shù)據(jù)存儲到控制端的數(shù)據(jù)庫中,如果服務(wù)器受到外界的攻擊,站點上的數(shù)據(jù)雖然會被破壞,但是主控端的數(shù)據(jù)是完好無損的,這是因為控制端不會接收站點同步的數(shù)據(jù)信息,所以主控端不會受到任何影響,并且起到了良好的備份作用。
移動話費結(jié)算流程圖
時下優(yōu)良的數(shù)據(jù)庫系統(tǒng)支持架構(gòu)對于移動話費結(jié)算業(yè)務(wù)來說至關(guān)重要,應(yīng)用Berkeley DB的數(shù)據(jù)恢復(fù)機制、內(nèi)存共享機制等,有效保證了移動話費業(yè)務(wù)數(shù)據(jù)庫服務(wù)器的穩(wěn)定性、安全性和可靠性,同時提高了數(shù)據(jù)傳輸處理的效率。
[1]孟亞男,高明寶.嵌入式數(shù)據(jù)庫Berkeley DB在智能海洋機器人中應(yīng)用 [J].微計算機信息.2009(02).
[2]周麗,楊曉松.Berkeley DB Java Edition數(shù)據(jù)結(jié)構(gòu)的研究與應(yīng)用 [J].計算機與現(xiàn)代化,2009(02).
[3]萬瑪寧,關(guān)永,韓相軍.嵌入式數(shù)據(jù)庫典型技術(shù)SQLite和Berkeley DB的研究 [J].微計算機信息,2006(02).
[4]黃志剛.基于Berkeley DB核心嵌入式實時數(shù)據(jù)庫引擎[J].計算機與數(shù)字工程,2007(03).
[5]劉智,付保川,奚雪峰.基于Berkeley DB的監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].科技廣場,2007(01).
[6]王洪蛟,董學(xué)仁,褚福強,蘭敏.BerkeIey DB在嵌入式系統(tǒng)中的應(yīng)用研究[J].儀器儀表用戶.,2007(06).
[7]虞珊,周彩蘭,郭鳳玲.Berkeley DB在網(wǎng)絡(luò)信息挖掘中的應(yīng)用 [J].計算機與現(xiàn)代化,2008(05).
[8]宋麗娜.嵌入式數(shù)據(jù)庫典型技術(shù)--SQLite和Berkeley DB的研究[J].科技信息(學(xué)術(shù)研究),2008(14).
[9]吳小博.嵌入式數(shù)據(jù)庫Berkeley DB研究[J].茂名學(xué)院學(xué)報,2008(04).
[10]范敏,王美廷.基于數(shù)據(jù)庫技術(shù)實現(xiàn)信息系統(tǒng)的可擴展性[J].光盤技術(shù),2009(03).
[11]胡建紅.基于Delphi應(yīng)用程序動態(tài)創(chuàng)建與訪問數(shù)據(jù)庫[J].南昌航空工業(yè)學(xué)院學(xué)報(自然科學(xué)版),2006(03).
[12]劉彩蘋,李仁發(fā),李肯立.Recno索引方式在伯克利數(shù)據(jù)庫中的應(yīng)用 [J].計算機應(yīng)用,2004(12).
[13]Yadava H.The Berkeley DB Book.