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