中國傳媒大學(xué)南廣學(xué)院 薛雁丹 周 靈
Altibase內(nèi)存數(shù)據(jù)庫在實(shí)時(shí)賬單查詢中的應(yīng)用
中國傳媒大學(xué)南廣學(xué)院 薛雁丹 周 靈
為解決電信行業(yè)海量實(shí)時(shí)帳務(wù)數(shù)據(jù)處理的需要,基于內(nèi)存數(shù)據(jù)庫高并發(fā)、微妙級(jí)的處理能力,選型內(nèi)存數(shù)據(jù)庫Altibase在實(shí)時(shí)賬單查詢中的應(yīng)用,因此實(shí)現(xiàn)的基于Alitbase內(nèi)存數(shù)據(jù)庫的賬單存儲(chǔ)、帳務(wù)處理和賬單查詢等,幾乎不使用磁盤I/O ,CPU的使用率大大降低,賬單處理的效率和吞吐量也有很大的提升。
Altibase;內(nèi)存數(shù)據(jù)庫;實(shí)時(shí)處理
隨著電信運(yùn)營(yíng)商支持用戶量和話單量的成倍增長(zhǎng)和實(shí)時(shí)業(yè)務(wù)的不斷拓展,所需處理的數(shù)據(jù)成幾何級(jí)增加,業(yè)務(wù)處理模式日趨復(fù)雜,必然導(dǎo)致IT支撐系統(tǒng)的計(jì)算和I/O資源需求成線性增加,投資壓力巨大。
帳務(wù)處理過程中由于數(shù)據(jù)量巨大,用戶資料、帳務(wù)處理模型復(fù)雜,存在兩個(gè)主要瓶頸:
(1)賬單表記錄數(shù)達(dá)億級(jí),高并發(fā)查詢效率低、無法實(shí)時(shí)響應(yīng)。
(2)在更新實(shí)時(shí)賬單表,特別是月底出帳時(shí),計(jì)費(fèi)每增加一條清單,帳務(wù)處理模塊將增加10條左右的賬單,傳統(tǒng)的磁盤數(shù)據(jù)庫需配置大量的I/O和CPU資源,即使這樣,處理的效率仍然很難滿足業(yè)務(wù)實(shí)時(shí)處理的需要。
基于磁盤數(shù)據(jù)庫的賬單存儲(chǔ)、處理和查詢,由于受制于磁盤I/O讀取延遲和IOPS的瓶頸限制,這樣就會(huì)造成整個(gè)帳務(wù)系統(tǒng)的CPU、I/O資源嚴(yán)重爭(zhēng)用,系統(tǒng)處理能力低下,影響客戶滿意度和阻礙業(yè)務(wù)的發(fā)展,這就需要采用新的技術(shù),即幾乎不使用I/O,存取速度比磁盤高幾個(gè)數(shù)量級(jí)的內(nèi)存數(shù)據(jù)庫取而代之。
內(nèi)存數(shù)據(jù)庫微秒級(jí)的交易事務(wù)處理,完全可以實(shí)現(xiàn)實(shí)時(shí)處理海量的用戶賬單數(shù)據(jù)。
關(guān)系型內(nèi)存數(shù)據(jù)庫是指將數(shù)據(jù)存儲(chǔ)在內(nèi)存中直接操作的數(shù)據(jù)庫。相對(duì)于磁盤,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個(gè)數(shù)量級(jí),極大地提升應(yīng)用處理性能。同時(shí),內(nèi)存數(shù)據(jù)庫拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計(jì)了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫快10倍以上。內(nèi)存數(shù)據(jù)庫的最大特點(diǎn)是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與內(nèi)存數(shù)據(jù)庫的內(nèi)存拷貝打交道。顯然,它要求較大的內(nèi)存量,但并非任何時(shí)刻整個(gè)數(shù)據(jù)庫都存放在內(nèi)存中,即內(nèi)存數(shù)據(jù)庫系統(tǒng)還是要處理少量的磁盤I/O。
Altibase數(shù)據(jù)庫是內(nèi)存數(shù)據(jù)管理系統(tǒng)中的先進(jìn)技術(shù),是一個(gè)在事務(wù)優(yōu)先的環(huán)境中提供高性能和高可用性的解決方案。Altibase提供極限性能、容錯(cuò)能力和事務(wù)管理的方便性,特別是在電信、銀行、證券、實(shí)時(shí)應(yīng)用和嵌入式系統(tǒng)領(lǐng)域,Altibase能夠最大限度的發(fā)揮數(shù)據(jù)庫服務(wù)系統(tǒng)的潛力,使用Altibase能大大地增強(qiáng)服務(wù)器的數(shù)據(jù)處理能力。
關(guān)系型磁盤數(shù)據(jù)庫,如Oracle,數(shù)據(jù)持久存儲(chǔ)在磁盤上,并通過標(biāo)準(zhǔn)的結(jié)構(gòu)化語言SQL進(jìn)行訪問。由于磁盤存取、內(nèi)外存的數(shù)據(jù)傳遞、緩沖區(qū)管理、排隊(duì)等待及鎖的延遲等,使得小事務(wù)的實(shí)際平均處理時(shí)間往往在毫秒級(jí)以上。如果將整個(gè)數(shù)據(jù)庫或其主要的“工作”部分放入內(nèi)存,使每個(gè)事務(wù)在執(zhí)行過程中沒有磁盤I/O,在獲取高性能的同時(shí),可保證系統(tǒng)具有較好的處理能力動(dòng)態(tài)可預(yù)報(bào)性。
內(nèi)存數(shù)據(jù)庫所處理的數(shù)據(jù)通常是“短暫”的熱數(shù)據(jù),即有一定的有效時(shí)間。所以,實(shí)際應(yīng)用中采用內(nèi)存數(shù)據(jù)庫來處理實(shí)時(shí)性強(qiáng)的業(yè)務(wù)邏輯數(shù)據(jù)。而磁盤數(shù)據(jù)庫旨在處理永久、穩(wěn)定的數(shù)據(jù),其性能目標(biāo)是高系統(tǒng)吞吐量和較低的成本處理海量數(shù)據(jù)。 Altibase和基于磁盤的關(guān)系型數(shù)據(jù)庫的各項(xiàng)特征比較如表1。
表1 Altibase和關(guān)系型磁盤數(shù)據(jù)庫比較
隨著用戶數(shù)、業(yè)務(wù)復(fù)雜度的劇增,原來基于磁盤數(shù)據(jù)庫的實(shí)時(shí)賬單查詢已經(jīng)不能滿足業(yè)務(wù)發(fā)展的要求,迫切需要遷移到內(nèi)存數(shù)據(jù)庫中。遷移的難點(diǎn)主要在于構(gòu)建Altibase數(shù)據(jù)庫系統(tǒng)環(huán)境,封裝、改造Altibase應(yīng)用接口,帳單入庫改造,查詢應(yīng)用的改造,以及應(yīng)急切換和恢復(fù)措施等。
3.1 Altibase接口函數(shù)封裝
根據(jù)Altibase提供的語法、函數(shù),需要對(duì)原有基于磁盤數(shù)據(jù)庫訪問的應(yīng)用接口模塊進(jìn)行改造,并封裝。建議不同的SQLPrepare使用不同的SQLHSTMT。
3.2 帳單入庫改造
由于BOSS系統(tǒng)中賬單的更新只涉及到實(shí)時(shí)賬單,且內(nèi)存能夠容納的數(shù)據(jù)量較小,因此,在Altibase內(nèi)存數(shù)據(jù)庫中只存放2個(gè)月的實(shí)時(shí)賬單,歷史賬單存放在Oracle磁盤數(shù)據(jù)庫中。
賬單入庫流程改造:帳務(wù)應(yīng)用出帳生成賬單文件直接錄入Altibase庫,如圖1所示。
(1)出帳應(yīng)用生成賬單文件;
(2)Altibase入庫程序讀取賬單文件,更新Altibase內(nèi)存數(shù)據(jù)庫中的實(shí)時(shí)賬單表;
(3)如果是實(shí)時(shí)賬,入庫完成后刪除輸入賬單,如果是月底賬,入庫完成后,轉(zhuǎn)移帳單到Oracle入庫程序輸入路徑下。
圖1 Altibase 內(nèi)存數(shù)據(jù)庫實(shí)時(shí)賬單入庫方案
采用這種方案,需要開發(fā)帳單入內(nèi)存數(shù)據(jù)庫的程序,實(shí)現(xiàn)如下功能:
(1)更新Altibase帳務(wù)數(shù)據(jù)庫中相應(yīng)的帳單及優(yōu)惠數(shù)據(jù);
(2)支持對(duì)帳單文件進(jìn)行備份,供其他程序入到Oracle數(shù)據(jù)庫中;
(3)支持通過監(jiān)測(cè)界面監(jiān)測(cè)進(jìn)程處理及文件積壓情況;
(4)在月初時(shí)需要支持兩個(gè)帳期的實(shí)時(shí)帳單,在帳期成功切換后,需要清理相關(guān)的帳單數(shù)據(jù)。
3.3 帳單查詢
帳單查詢主要實(shí)現(xiàn)如下功能:
(1)Altibase數(shù)據(jù)庫支撐所有實(shí)時(shí)帳單及優(yōu)惠的查詢功能。
(2)在程序不能正常連接到Altibase數(shù)據(jù)庫時(shí),或?qū)?yīng)用的系統(tǒng)參數(shù)“數(shù)據(jù)庫模式”設(shè)置為“使用ORACLE數(shù)據(jù)庫”時(shí),則從Oracle數(shù)據(jù)庫查詢實(shí)時(shí)帳單及優(yōu)惠信息。
3.4 應(yīng)急切換和恢復(fù)方案
本系統(tǒng)設(shè)計(jì)為在內(nèi)存數(shù)據(jù)庫和磁盤數(shù)據(jù)庫
(1)Altibase內(nèi)存數(shù)據(jù)庫發(fā)生故障時(shí),可重新啟用Oracle數(shù)據(jù)庫。
首先修改系統(tǒng)參數(shù),將“數(shù)據(jù)庫模式”參數(shù)置為“使用Oracle數(shù)據(jù)庫”,出帳程序讀取此參數(shù)后,會(huì)將帳單文件輸出到Oracle數(shù)據(jù)庫入庫的輸入目錄下(不設(shè)置此參數(shù)則將帳單文件輸出到Altibase數(shù)據(jù)庫入庫的輸入目錄下),賬單入庫進(jìn)程會(huì)自動(dòng)地將帳單文件錄入到Oracle數(shù)據(jù)庫中。
“數(shù)據(jù)庫庫模式”參數(shù)對(duì)帳單查詢也同樣有效。參數(shù)“數(shù)據(jù)庫模式”設(shè)置為“使用Oracle數(shù)據(jù)庫”時(shí),帳單查詢進(jìn)程則從Oracle數(shù)據(jù)庫查詢帳單及優(yōu)惠信息。
(2)Altibase內(nèi)存數(shù)據(jù)庫恢復(fù)方案。
Altibase內(nèi)存數(shù)據(jù)庫提供了周全的備份和恢復(fù)機(jī)制,當(dāng)系統(tǒng)意外當(dāng)機(jī)時(shí),Altibase 能夠在啟動(dòng)時(shí)候從磁盤備份中恢復(fù)。為了確保實(shí)時(shí)賬單數(shù)據(jù)的實(shí)時(shí)性和完整性,可以通過在系統(tǒng)重啟后,重出用戶全量賬單的方式更新Altibase內(nèi)存數(shù)據(jù)庫實(shí)時(shí)賬單。
本文針對(duì)現(xiàn)有的基于磁盤數(shù)據(jù)庫的賬單存儲(chǔ)、訪問方式造成系統(tǒng)處理性能下降和CPU、I/O占用不斷上升的問題,提出了相應(yīng)的解決方案,并成功地解決了性能差和支撐設(shè)備成本高企等問題。重點(diǎn)提出了Altibase內(nèi)存數(shù)據(jù)庫在實(shí)時(shí)賬單查詢中的應(yīng)用,在處理高并發(fā)、實(shí)時(shí)性強(qiáng)的業(yè)務(wù)邏輯數(shù)據(jù)處理時(shí)充分發(fā)揮了其優(yōu)勢(shì)。
[1]盧友娥,游莉.Oracle數(shù)據(jù)庫系統(tǒng)內(nèi)存優(yōu)化探討[J].石油工業(yè)計(jì)算機(jī)應(yīng)用,2011.
[2]周媛,苗耀鋒.內(nèi)存數(shù)據(jù)庫及其技術(shù)淺論[J].煤炭技術(shù),2011.
[3]郭景娟,馮悅,周定康.Altibase與Oracle統(tǒng)一數(shù)據(jù)庫接口的設(shè)計(jì)與實(shí)現(xiàn)[J].江西師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2006.
[4]梁軍科,劉寶梅.ALTIBASE內(nèi)存數(shù)據(jù)庫性能及可靠性探討[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2010.
[5]芮勝利.Oracle數(shù)據(jù)庫內(nèi)存參數(shù)調(diào)優(yōu)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2011.
薛雁丹(1977-),女,講師,碩士研究生,研究方向:計(jì)算機(jī)科學(xué)與技術(shù)。