内存数据库在海事卫星系统中的应用研究

2016-11-30 01:51王建勋占开金
数字通信世界 2016年5期
关键词:计费日志海事

王建勋,占开金

(中国交通通信信息中心,北京 100011)

技术研究

内存数据库在海事卫星系统中的应用研究

王建勋,占开金

(中国交通通信信息中心,北京 100011)

本文探讨研究了内存数据库的系统架构、索引算法、日志管理、并发管理、事务处理、故障恢复等,说明了内存数据库如何在海事卫星运营系统中发挥作用。

内存数据库;索引;事务;海事卫星

1 引言

海事卫星业务进入高速发展时期,市场需求驱动市场部推出新的业务。本文针对海事卫星系统面对的挑战,实时处理的要求,研究探讨内存数据库(MDB)在该系统中的应用,内存数据库应该如何设计及其实际应用和技术创新。内存数据库把数据全部或者当前工作部分驻留在内存中,消除了传统磁盘数据库系统中I/O瓶颈,极大地提高了系统的性能和吞吐量,从而满足目前和将来系统面临的业务数据挑战。

2 内存数据库服务设计实现

2.1 系统架构

MDB分为MDB框架和MDB业务库,系统架构如图1所示。

图1 MDB内存数据库系统架构

框架独立于业务逻辑,增加其复用性,通过接口能适配任何符合接口的MDB业务库,并提供动态加载和卸载MDB业务库的功能,能实现无缝加载和卸载。同时业务库开发也将不再关心MDB基础部分的实现,能将主要开发放在业务相关的实现上。

2.1.1 框架

实现基础的和业务无关的部分,管理系统资源,提供接口给MDB业务库。

⊙ 管理MDB表、打开MDB、关闭MDB。

⊙ 理与客户端通信的socket、共享内存、信号等。

⊙ 响应客户端消息处理逻辑。

⊙ 管理MDB业务库,支持动态的加载业务库,卸载业务库等。

⊙ 为MDB业务库提供基本的数据,并对数据做初始化,提供接口给业务库查询和更新这些数据。

⊙ 提供用户锁和进程锁资源,提供锁操作接口,并监控用户锁的超时信息,在线程退出时自动清除此线程占用的锁。

2.1.2 业务库

实现业务相关的部分,注册支持的消息和业务类型,接受客户端的应答请求,对请求包做校验,响应业务库的业务请求,并做应答。一个业务库在物理实现上是一个动态库。

2.2 索引算法

主流的存储引擎索引算法主要有btree和hash两种。

(1)Hash索引优缺点。优点是检索效率非常高,索引的检索可以一次定位;缺点是不能使用范围查询,只能“=”,“IN”和“〈=〉”查询。

(2)Btree优缺点。优点是适合范围查询,所有叶节点具有相同的深度,等于树高h,其查找节点个数的渐进复杂度为O(logdN),N为节点数,d为出度;缺点是存储空间过大,插入删除平衡带来性能的损耗。

Hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,Hash索引的查询效率要远高于BTree索引。由于海事卫星运营系统是针对用户来说的,业务数据基本上围绕用户产生的,数据比较分散,用户之间关联不多,所以选择hash作为存储的索引算法。

2.3 日志管理

日志分系统日志、redo日志、undo日志三种。

(1)系统日志。主要记录系统运行日志、如通信日志、错误日志、接口日志等。

(2)Redo日志。记录DML操作的数据、操作对象、操作方法,用于在系统恢复过程中,重做已提交事务。

(3)Undo日志。记录DML操作前的数据,用于在事务Abort时回退事务。

系统维护全局Redo日志序列,而不维护Undo日志,由事务自身维护私有的Redo日志和Undo日志。在事务提交时,依照事务提交的先后顺序,同步Redo日志数据到硬盘,释放Undo日志。

2.4 并发管理

并发度的多少一般和锁的类度有关,所以把锁分等级处理,不同的操作用不同的锁,一般DML用记录锁,这样可以提高并发度。

(1)MDB记录锁类似于行锁,支持对MDB表中记录的关键字加锁,防止该关键字相关的记录进行并发操作,提高程序的准确性和安全性。

(2)进程锁是控制MDB整个进程的锁,在MDB作内存数据备份点的时候,需要加上进程锁,阻止此时发生的业务交易。

(3)为了防止上面两种锁造成的死锁,提供了锁检测工具,支持对记录锁和进程锁超时情况查询,并提供解锁服务。

2.5 事务处理

事务处理的隔离级别为ReadCommited,即读提交,V为排他锁,S为共享锁,写的时候为V锁,读为S锁。

SELECT的时候无法重复读,即同一个事务中两次执行同样的查询语句,若在第一次与第二次查询之间时间段,其他事务又刚好修改了其查询的数据且提交了,则两次读到的数据不一致。

事务的ACID属性只能通过限制数据库的同步更改来实现,从而通过对修改数据加锁来实现。直到事务触发COMMIT或ROLLBACK语句时锁才释放。缺点是后面的事务必须等前面的事务完成才能开始执行,吞吐量随着等待锁释放的时间增长而递减,MDB通过行级锁来最小化锁竞争。这样修改同一table里其他行的数据没有限制,而且读数据可以始终没有等待。

事务设计原则是保证事务短小;锁的行越少越好,时间越短越好。

2.6 故障恢复

故障恢复流程如图2所示。

图2 故障恢复

⊙ MDB(SLAVE)运行为恢复模式。

⊙ 启动MDB开始恢复。MDB在恢复时每次恢复完一批redo日志,redo目录下面对应的redo文件会被移动到back目录。

⊙ MDB基础库redo目录下的redo文件全部移到back目录,同时查看基础库运行的log日志,当抛出读取下一个redo日志文件不存在的异常时表明MDB已经全部恢复完成。

⊙ 停止备MDB,自动将最新的MDB数据写到磁盘文件。

⊙ 将备MDB产生的恢复后的MDB内存映像文件拷贝到主MDB目录,启动既完成整个恢复过程。

3 海事卫星业务运营系统应用

3.1 功能定位

海事卫星业务运营支撑系统,主要有计费、帐务处理、信用控制、帐务管理四个模块,这几个模块都有很多数据操作,有实时的,有量大的,而这些数据基本上都是存储在传统数据库里,严重影响运营支撑系统的业务处理能力。所以会选择部分比较重要的数据放在MDB里面,MDB会给这四个模块提供增删改查操作,MDB与四个模块的交互结构如图3所示。

图3 MDB功能定位

系统为计费、帐务处理、帐务管理、信用管理模块提供实时的数据操作。计费从MDB中取用户信息,实时更新帐单到MDB;帐务处理更新周期性费用和一次性费用;帐务管理查询用户实时帐单;信用管理也是查询实时帐单。

(1)融合计费本身实现了四个方面的融合:客户的融合,即客户品牌和付费方式的融合;业务的融合,即实现跨业务、跨产品、跨客户的产品捆绑、交叉优惠,实现业务经营与计费策略的完整衔接;计费模式的融合,即将计费提速、OCS实现融合;最后则是计费对象的融合,即预付费和后付费的融合统一。

(2)帐务处理是指根据三户资料和订购计划计算出周期性费用以及一次性费用后,将其和批价费用等费用综合优惠后生成实时话费和帐单的过程。

(3)帐务管理子系统主要处理用户帐单生成后,帐单相关的查询、打印、缴费、销帐以及用户预先交纳预存、押金的使用和管理等相关业务功能。

(4)信控管理子系统实时运行,检测用户的话单批价、帐户的实时缴费销帐、帐户的信用度调整。当以上信息变动时,信控管理子系统接受触发话单或工单,根据帐户的历史欠费、当月实时话费、帐户信用额度、帐户内余额进行计算。根据信控规则进行催缴、开机、提醒等动作。

3.2 分析与应用

海事卫星业务运营系统分为BILLING计费系统和CRM系统,BILLING需要实时处理大量的数据,而CRM一般面向运营人员,操作量不会太大,所以BILLING系统需要高效实时的性能。批价是计费系统的重中之重,需要实时处理大量的话单,这个过程涉及到查询用户资料,用户套餐等用户信息,更新免费资源和累计量。如果用传统的数据库,则处理比较慢,很难做到数据的实时更新,因此用内存数据库来管理这些数据。下面从数据选型和部署方式进行详细分析。

3.2.1 数据选型

把最关键的数据放到内存中,这些数据增删改频次高,频繁的IO读写,严重影响性能。三户资料和帐务相关数据,三户查询量特别的高,帐户相关数据特别的多。所以这些数据都放入内存,避免了频繁的IO处理,提高了效率,有选择地选取数据,又节省了内存。

3.2.2 部署方式

采用双机热备部署方式,实现了高可用和负载均衡。双机数据通过日志同步,外部查询对数据实时性要求不高的操作可以放在备机上,更新操作放在主机上。

3.3 性能指标

海事卫星应用mdb后,处理能力有很大的提升,以下是性能测试数据。

主机环境:

HP-UX rx66003 B.11.31 U ia64 3822239629 unlimited-user license CPU 2 cores,4 logical processors per socket;Memory:16G。

测试性能数据:数据插入效率为10w/s;8w/s的数据更新效率;据装载平均加载速度110Mb/s;恢复速度平均每秒7w次事务。

3.4 应用效果

采用内存数据库后,运营数据得到实时的处理,批价可以实时的更新累计量和帐单,信控可以直接取得内存数据库中的实时话费累计表中的数据,完全实现实时预警、停机。对防欺诈、收入保障系统也有相当大的好处,这样能够充分保证海事卫星运营商的切身利益。

4 结束语

内存数据库在海事卫星的应用,极大地提高海事卫星运营系统的处理能力,内存数据库,通过避开磁盘的耗时操作,内存优化的索引结构快速的日志和恢复,高并发的事务处理,达到了高性能的数据管理能力,低成本的基础上大大提高系统的处理能力。大量的数据操作通过内存数据库集中管理,也增强了海事卫星运营系统的扩展能,能够满足海事卫星未来几年的业务发展。

[1] 张晓伟.探讨分布式内存数据库的设计与应用[J].硅谷,2009(03)

[2] 王慧嫔.基于MMDB技术对电信计费系统研究与实现的探讨[J].科技资讯,2009(16)

[3] 王金华,江水,吴娴,卢瑶,龙刚.轻量级内存数据库的研究[J].计算机工程,2008(S1)

[4] 王珊,肖艳芹,刘大为,覃雄派.内存数据库关键技术研究[J].计算机应用,2007(10)

[5] 朱勇,张炯,沈轶.内存数据库在移动计费系统中的应用[J].现代机械,2007(05)

Reserch on the Application of RAM Database in the Inmarsat System

Wang Jianxun,Zhan Kaijin
(China Transport Telecommunications &Infomation Center,Beijing,100011)

System architecture,indexing algorithm,log management,concurrency management,transaction processing,fault recovery to explore other aspects of the study,and finally explain how to combine Inmarsat-memory database applications and operating systems in the role.

Memory Database;Index;Transaction;Maritime Satellite

10.3969/J.ISSN.1672-7274.2016.05.002

TN927+.2,TP392 文献标示码:B

1672-7274(2016)05-0005-04

王建勋,男,1970年生,现任职于中国交通通信信息中心,研究方向为交通信息化;

占开金,男,1984年生,现任职于中国交通通信信息中心,研究方向为交通信息化。

猜你喜欢
计费日志海事
5G网络独立组网中融合计费方案的研究
基于云计算和微服务架构的高速公路计费系统
信息精要与海事扫描
一名老党员的工作日志
信息精要与海事扫描
信息精要与海事扫描
扶贫日志
信息精要与海事扫描
生活中的分段计费
游学日志