中國傳媒大學南廣學院 薛雁丹 周 靈
Altibase內存數據庫在實時賬單查詢中的應用
中國傳媒大學南廣學院 薛雁丹 周 靈
為解決電信行業海量實時帳務數據處理的需要,基于內存數據庫高并發、微妙級的處理能力,選型內存數據庫Altibase在實時賬單查詢中的應用,因此實現的基于Alitbase內存數據庫的賬單存儲、帳務處理和賬單查詢等,幾乎不使用磁盤I/O ,CPU的使用率大大降低,賬單處理的效率和吞吐量也有很大的提升。
Altibase;內存數據庫;實時處理
隨著電信運營商支持用戶量和話單量的成倍增長和實時業務的不斷拓展,所需處理的數據成幾何級增加,業務處理模式日趨復雜,必然導致IT支撐系統的計算和I/O資源需求成線性增加,投資壓力巨大。
帳務處理過程中由于數據量巨大,用戶資料、帳務處理模型復雜,存在兩個主要瓶頸:
(1)賬單表記錄數達億級,高并發查詢效率低、無法實時響應。
(2)在更新實時賬單表,特別是月底出帳時,計費每增加一條清單,帳務處理模塊將增加10條左右的賬單,傳統的磁盤數據庫需配置大量的I/O和CPU資源,即使這樣,處理的效率仍然很難滿足業務實時處理的需要。
基于磁盤數據庫的賬單存儲、處理和查詢,由于受制于磁盤I/O讀取延遲和IOPS的瓶頸限制,這樣就會造成整個帳務系統的CPU、I/O資源嚴重爭用,系統處理能力低下,影響客戶滿意度和阻礙業務的發展,這就需要采用新的技術,即幾乎不使用I/O,存取速度比磁盤高幾個數量級的內存數據庫取而代之。
內存數據庫微秒級的交易事務處理,完全可以實現實時處理海量的用戶賬單數據。
關系型內存數據庫是指將數據存儲在內存中直接操作的數據庫。相對于磁盤,內存的數據讀寫速度要高出幾個數量級,極大地提升應用處理性能。同時,內存數據庫拋棄了磁盤數據管理的傳統方式,基于全部數據都在內存中重新設計了體系結構,并且在數據緩存、快速算法、并行操作方面也進行了相應的改進,所以數據處理速度比傳統數據庫快10倍以上。內存數據庫的最大特點是其“主拷貝”或“工作版本”常駐內存,即活動事務只與內存數據庫的內存拷貝打交道。顯然,它要求較大的內存量,但并非任何時刻整個數據庫都存放在內存中,即內存數據庫系統還是要處理少量的磁盤I/O。
Altibase數據庫是內存數據管理系統中的先進技術,是一個在事務優先的環境中提供高性能和高可用性的解決方案。Altibase提供極限性能、容錯能力和事務管理的方便性,特別是在電信、銀行、證券、實時應用和嵌入式系統領域,Altibase能夠最大限度的發揮數據庫服務系統的潛力,使用Altibase能大大地增強服務器的數據處理能力。
關系型磁盤數據庫,如Oracle,數據持久存儲在磁盤上,并通過標準的結構化語言SQL進行訪問。由于磁盤存取、內外存的數據傳遞、緩沖區管理、排隊等待及鎖的延遲等,使得小事務的實際平均處理時間往往在毫秒級以上。如果將整個數據庫或其主要的“工作”部分放入內存,使每個事務在執行過程中沒有磁盤I/O,在獲取高性能的同時,可保證系統具有較好的處理能力動態可預報性。
內存數據庫所處理的數據通常是“短暫”的熱數據,即有一定的有效時間。所以,實際應用中采用內存數據庫來處理實時性強的業務邏輯數據。而磁盤數據庫旨在處理永久、穩定的數據,其性能目標是高系統吞吐量和較低的成本處理海量數據。 Altibase和基于磁盤的關系型數據庫的各項特征比較如表1。

表1 Altibase和關系型磁盤數據庫比較
隨著用戶數、業務復雜度的劇增,原來基于磁盤數據庫的實時賬單查詢已經不能滿足業務發展的要求,迫切需要遷移到內存數據庫中。遷移的難點主要在于構建Altibase數據庫系統環境,封裝、改造Altibase應用接口,帳單入庫改造,查詢應用的改造,以及應急切換和恢復措施等。
3.1 Altibase接口函數封裝
根據Altibase提供的語法、函數,需要對原有基于磁盤數據庫訪問的應用接口模塊進行改造,并封裝。建議不同的SQLPrepare使用不同的SQLHSTMT。
3.2 帳單入庫改造
由于BOSS系統中賬單的更新只涉及到實時賬單,且內存能夠容納的數據量較小,因此,在Altibase內存數據庫中只存放2個月的實時賬單,歷史賬單存放在Oracle磁盤數據庫中。
賬單入庫流程改造:帳務應用出帳生成賬單文件直接錄入Altibase庫,如圖1所示。
(1)出帳應用生成賬單文件;
(2)Altibase入庫程序讀取賬單文件,更新Altibase內存數據庫中的實時賬單表;
(3)如果是實時賬,入庫完成后刪除輸入賬單,如果是月底賬,入庫完成后,轉移帳單到Oracle入庫程序輸入路徑下。

圖1 Altibase 內存數據庫實時賬單入庫方案
采用這種方案,需要開發帳單入內存數據庫的程序,實現如下功能:
(1)更新Altibase帳務數據庫中相應的帳單及優惠數據;
(2)支持對帳單文件進行備份,供其他程序入到Oracle數據庫中;
(3)支持通過監測界面監測進程處理及文件積壓情況;
(4)在月初時需要支持兩個帳期的實時帳單,在帳期成功切換后,需要清理相關的帳單數據。
3.3 帳單查詢
帳單查詢主要實現如下功能:
(1)Altibase數據庫支撐所有實時帳單及優惠的查詢功能。
(2)在程序不能正常連接到Altibase數據庫時,或將應用的系統參數“數據庫模式”設置為“使用ORACLE數據庫”時,則從Oracle數據庫查詢實時帳單及優惠信息。
3.4 應急切換和恢復方案
本系統設計為在內存數據庫和磁盤數據庫
(1)Altibase內存數據庫發生故障時,可重新啟用Oracle數據庫。
首先修改系統參數,將“數據庫模式”參數置為“使用Oracle數據庫”,出帳程序讀取此參數后,會將帳單文件輸出到Oracle數據庫入庫的輸入目錄下(不設置此參數則將帳單文件輸出到Altibase數據庫入庫的輸入目錄下),賬單入庫進程會自動地將帳單文件錄入到Oracle數據庫中。
“數據庫庫模式”參數對帳單查詢也同樣有效。參數“數據庫模式”設置為“使用Oracle數據庫”時,帳單查詢進程則從Oracle數據庫查詢帳單及優惠信息。
(2)Altibase內存數據庫恢復方案。
Altibase內存數據庫提供了周全的備份和恢復機制,當系統意外當機時,Altibase 能夠在啟動時候從磁盤備份中恢復。為了確保實時賬單數據的實時性和完整性,可以通過在系統重啟后,重出用戶全量賬單的方式更新Altibase內存數據庫實時賬單。
本文針對現有的基于磁盤數據庫的賬單存儲、訪問方式造成系統處理性能下降和CPU、I/O占用不斷上升的問題,提出了相應的解決方案,并成功地解決了性能差和支撐設備成本高企等問題。重點提出了Altibase內存數據庫在實時賬單查詢中的應用,在處理高并發、實時性強的業務邏輯數據處理時充分發揮了其優勢。
[1]盧友娥,游莉.Oracle數據庫系統內存優化探討[J].石油工業計算機應用,2011.
[2]周媛,苗耀鋒.內存數據庫及其技術淺論[J].煤炭技術,2011.
[3]郭景娟,馮悅,周定康.Altibase與Oracle統一數據庫接口的設計與實現[J].江西師范大學學報(自然科學版),2006.
[4]梁軍科,劉寶梅.ALTIBASE內存數據庫性能及可靠性探討[J].科技情報開發與經濟,2010.
[5]芮勝利.Oracle數據庫內存參數調優[J].計算機與網絡,2011.
薛雁丹(1977-),女,講師,碩士研究生,研究方向:計算機科學與技術。