APP下载

Altibase内存数据库在实时账单查询中的应用

2015-12-29中国传媒大学南广学院薛雁丹

电子世界 2015年23期
关键词:磁盘账单入库

中国传媒大学南广学院 薛雁丹 周 灵

Altibase内存数据库在实时账单查询中的应用

中国传媒大学南广学院 薛雁丹 周 灵

为解决电信行业海量实时帐务数据处理的需要,基于内存数据库高并发、微妙级的处理能力,选型内存数据库Altibase在实时账单查询中的应用,因此实现的基于Alitbase内存数据库的账单存储、帐务处理和账单查询等,几乎不使用磁盘I/O ,CPU的使用率大大降低,账单处理的效率和吞吐量也有很大的提升。

Altibase;内存数据库;实时处理

0 引言

随着电信运营商支持用户量和话单量的成倍增长和实时业务的不断拓展,所需处理的数据成几何级增加,业务处理模式日趋复杂,必然导致IT支撑系统的计算和I/O资源需求成线性增加,投资压力巨大。

帐务处理过程中由于数据量巨大,用户资料、帐务处理模型复杂,存在两个主要瓶颈:

(1)账单表记录数达亿级,高并发查询效率低、无法实时响应。

(2)在更新实时账单表,特别是月底出帐时,计费每增加一条清单,帐务处理模块将增加10条左右的账单,传统的磁盘数据库需配置大量的I/O和CPU资源,即使这样,处理的效率仍然很难满足业务实时处理的需要。

基于磁盘数据库的账单存储、处理和查询,由于受制于磁盘I/O读取延迟和IOPS的瓶颈限制,这样就会造成整个帐务系统的CPU、I/O资源严重争用,系统处理能力低下,影响客户满意度和阻碍业务的发展,这就需要采用新的技术,即几乎不使用I/O,存取速度比磁盘高几个数量级的内存数据库取而代之。

内存数据库微秒级的交易事务处理,完全可以实现实时处理海量的用户账单数据。

1 Altibase内存数据库

关系型内存数据库是指将数据存储在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,极大地提升应用处理性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库快10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与内存数据库的内存拷贝打交道。显然,它要求较大的内存量,但并非任何时刻整个数据库都存放在内存中,即内存数据库系统还是要处理少量的磁盘I/O。

Altibase数据库是内存数据管理系统中的先进技术,是一个在事务优先的环境中提供高性能和高可用性的解决方案。Altibase提供极限性能、容错能力和事务管理的方便性,特别是在电信、银行、证券、实时应用和嵌入式系统领域,Altibase能够最大限度的发挥数据库服务系统的潜力,使用Altibase能大大地增强服务器的数据处理能力。

2 Altibase内存数据库与磁盘数据库ORACLE的对比

关系型磁盘数据库,如Oracle,数据持久存储在磁盘上,并通过标准的结构化语言SQL进行访问。由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等,使得小事务的实际平均处理时间往往在毫秒级以上。如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有磁盘I/O,在获取高性能的同时,可保证系统具有较好的处理能力动态可预报性。

内存数据库所处理的数据通常是“短暂”的热数据,即有一定的有效时间。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑数据。而磁盘数据库旨在处理永久、稳定的数据,其性能目标是高系统吞吐量和较低的成本处理海量数据。 Altibase和基于磁盘的关系型数据库的各项特征比较如表1。

表1 Altibase和关系型磁盘数据库比较

3 基于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内存数据库实时账单。

4 结论

本文针对现有的基于磁盘数据库的账单存储、访问方式造成系统处理性能下降和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-),女,讲师,硕士研究生,研究方向:计算机科学与技术。

猜你喜欢

磁盘账单入库
重磅!广东省“三旧”改造标图入库标准正式发布!
中国食品品牌库入库企业信息公示②
中国食品品牌库入库企业信息公示①
账单式小康
解决Windows磁盘签名冲突
账单式小康
修改磁盘属性
又至一年“账单”发布时
磁盘组群组及iSCSI Target设置
创建VSAN群集