文|张元胄
内存数据库技术在金融信息服务平台关键项目建设中的应用及未来项目应用研究
文|张元胄
金融信息服务平台(“新华08”)2006年上半年正式启动以来,在各级领导的重视和指导下,经过新华社多个部门同志们的协调和共同努力下,已经走过了8年的时间,目前仍然为超过17000用户服务。在技术项目建设过程中,随着服务内容不断丰富,用户规模成几十倍的滚动式扩大,很快就远超过平台系统原设计服务能力,系统运行缓慢等性能问题逐渐显现,服务质量不能满足用户快速高效获取信息的要求,需要寻找新的技术解决方案在不增加额外硬件投入的情况下,调整自身资源配置、优化服务。
经过探索研究,合理采用新的内存数据库技术,解决了在不增加现有硬件投入的情况下,显著提高服务的响应速度,增大并发服务能力,从技术上改善和提升了服务质量。
内存数据库是有别于传统数据库处理数据方式的新技术。其工作原理是将所有基础数据存于物理内存,当需要大量提取数据时,可以不用访问磁盘而直接访问存于物理内存的数据,从而获得极高的存取速度和极强的并发访问能力。它是基于内存技术,通过改变数据在运行时驻留位置的假设来提供实时性能。内存数据库系统针对内存而不是磁盘进行设计和优化,没有缓冲管理、日志管理等额外开销,优化数据结构和访问算法,数据库操作能够以最大效率执行,减少对于CPU和磁盘I/O等系统资源的需求,从而大大提高响应速度和数据吞吐量,甚至能够与完全使用缓存磁盘的关系型数据库管理系统相媲美。
目前的内存数据库产品仍然是关系型数据库,支持传统数据库的开发和使用方式。内存数据库与传统数据库的区别对于上层应用来讲近乎透明,提供很多标准开发接口,开发过程中不需要额外知识。
内存数据库提供闪电般的处理速度,具备极强的数据处理能力。
可以嵌入式开发。在特定场合的高速应用中,可以将内存数据库集成在应用中,减少进程间通信等技术开销。
在应用目标上,传统关系型数据库是针对关键业务应用,内存数据库更偏向实时性要求很高的业务应用。传统数据库是以磁盘作为数据库系统优化的中心,而内存数据库是以内存为中心。
在部署方式上,传统数据库通常部署在数据库层,而内存数据库相对更多的部署在应用层,以发挥更高的效率。
在查询优化方面,传统数据库通过复杂的查询优化算法减少磁盘I/O性能瓶颈以提高速度,有较高的CPU使用率。而内存数据库使用简单的查询优化算法,不存在磁盘I/O瓶颈,CPU使用量较小。
在响应时间方面,传统数据库一般是毫秒到秒级响应,而内存数据库的响应范围在微秒到毫秒级响应。
在数据存储容量方面,传统数据库主要受磁盘存储容量的限制,可以达到TB或PB级,而内存数据库受到内存容量的限制,一般只能达到GB级。
1.常用数据缓存
缓存经常被访问的数据,提高应用的处理能力及反应速度,减少网络和后台数据库的负载。
2.“热数据”缓存
缓存当前正在使用的数据或者重要客户的数据,以提高反应速度优化服务,提高用户的忠诚度。
3.实时的交易处理
内存数据库是可对消息队列和事务进行处理的实时数据库,并且可以把处理结果推送到后台数据库。
内存数据库应用最为广泛的是电信领域,在网络、金融、教育、企业管理、客户服务等诸多领域也有应用。例如电信企业的实时计费、增值服务、收入保障,金融企业的订单匹配、风险管理和实时分析等。在华尔街和世界知名电信企业均有成功应用案例。
根据金融信息服务平台建设过程中的了解,目前内存数据库软件厂商主要有以下3家产品:Oracle TimesTen,Altibase内存数据库和eXtremeDB。
Oracle TimesTen是Oracle从TimesTen公司收购的一个内存数据库产品,经过近几年与Oracle自身产品线的融合,在与Oracle产品相容性方面较之其他产品有较大提高。
Altibase内存数据库以处理复杂数据库查询语言见长,针对传统的商业关系型数据库领域,能够提供较高的性能、通用性以及稳定性。
eXtremeDB在项目建设过程中因为各种原因没有实际应用过。根据了解它是一款为实时嵌入式系统数据管理而设计的数据库,开销仅有几十K字节,处理速度很高,专业性较强。
金融信息服务平台用户身份验证子系统,2007年11月正式上线服务,已经稳定可靠运行6年半,为“新华08”客户端主界面、资讯系统、结构化系统、债券系统、产权系统和部分行情数据的客户端发布展示提供实时、可靠的用户身份合法性验证服务。用户身份合法性验证系统好比是“新华08”大门上一把坚固的安全锁,而正是由于所有的数据进出首先都要经过这道大门,大门安全锁的开启速度和大门的用户通过能力就显得格外重要。用户身份合法性验证是用户认证系统的后续延伸,它的设计不能脱离原有认证系统的存储方式和业务流程。因此在该系统设计中,我们把内存数据库作为磁盘数据库的数据缓冲,在应用层的程序里巧妙地处理了有关异构平台衔接的问题。根据实际运行日志分析,最高日处理请求40万次,原先需要几十毫秒完成的检索操作,现在大部分可以在1毫秒内完成。用户身份合法性验证系统这把安全锁和钥匙完全是由新华社自主开发、研制,锁钥的秘密及全部知识产权均掌握在新华社的手中,不会受外来因素的干扰与制约。
金融信息服务平台资讯授权子系统,2008年1月正式上线服务。该系统为“新华08”资讯系统提供授权控制、授权验证和授权管理功能,相当于资讯系统的大门,保护重要的资讯资源,可以为业务部门采购的第三方有用户数量限制的资讯信息提供授权保护。资讯授权子系统建设中面临与用户验证子系统类似的情况,系统处于核心位置,一旦出现意外将直接影响用户使用。经过反复对比测试,选择内存数据库作为资讯授权子系统的核心数据存储运行方案,传统的关系型数据库作为内存数据库的数据备份和第二应急方案。在这个系统建设中,我们没有使用业界惯用的三层服务结构,而采用“客户端-中间件-内存数据库-磁盘数据库”的四层服务结构。实践证明,通过增加内存数据库层,显著提高了系统的数据检索速度,增强了多用户多线路的同时处理能力,授权控制平均时延小于1毫秒,最高时延不超过十几毫秒。如果采用传统的关系性数据库进行这项控制,依据现有硬件资源,大约需要几十到上百毫秒完成。该系统也是由新华社自主设计和开发,而且值得一提的是,“客户端-中间件-内存数据库-磁盘数据库”四层服务结构概念的应用,这项技术在当时处于领先水平。
用户行为收集模块,针对用户对特定资源的访问进行记录,将记录收集起来以供事后分析使用。由于需要收集大量用户请求,我们在设计中使用内存数据库作为存储缓冲,以降低对用户使用的影响,同时可以保证数据被完整保存下来。根据统计最高峰时储存记录超过146万条。
内存数据库技术从金融信息服务平台项目建设到服务于用户认证系统和资讯系统,已经安全可靠运行6年。根据日志分析,在核心系统运行的情况达到了设计之初的预期,完全满足业务要求。通过与传统关系型数据库的优势互补,可以实现强大、高效、灵活、可靠的数据存储和运行支撑。在项目建设中,没有额外增加硬件设备投入,仅仅通过软件技术改造,充分利用现有硬件资源,就实现了显著提高相关服务的响应速度和并发服务能力的目的。
设计上大胆尝试国际新技术,在社内项目建设中首次尝试使用内存数据库。并且基于内存数据库技术,大胆提出并且在生产系统中实际使用客户端-中间件-内存数据库-磁盘数据库的四层服务结构。这个结构在用户身份验证和资讯授权等系统中已经运行一年后, 世界知名的Oracle数据库厂商在技术交流中,才提出了未来的四层服务结构方案设想。
金融信息服务平台内存数据库的技术方案设计和开发工作完全由新华社自主进行,实际使用的核心代码不受外来因素干扰和制约。
内存数据库技术是实时数据库模型,提供了较为完备的数据库服务保障机制,具有较好的容错性和灾难恢复能力,具备一定的数据库安全能力,拥有访问准入机制,数据安全性在实时产品中更有保障。
部分内存数据库产品具有MVCC多版本并发控制机制,可以提高多个并发环境下的高性能。当数据更新过程中,数据更改还未提交的时候,被锁定的记录可以对外提供查询。
内存数据库部署简便,没有传统关系型数据库的复杂部署工作和调试。
内存数据库技术的采用,减少应用层实现对实时数据存储和维护所带来的麻烦。同时,降低编码复杂程度,加快了项目建设进度,有利于产品的快速成型和快速投入生产。
内存数据库软件产品价格较高,技术具有很强的专业性,只有恰当的领域或场景下才能起到关键作用。在不需要该项技术的环节滥用该技术,会增加不必要的经济成本和技术复杂度。在一些技术实现细节中不如传统关系型数据库完备,需要应用层进行一些额外开发。如果在结构设计中巧妙回避这些问题,可以得到事半功倍的效果。
由于应用场景不同,业务要求不同,使用内存数据库技术带来的效率提升会有很大区别。在适合的应用条件下,内存数据库的采用可以显著提高响应速度和并发处理能力。如果对传统数据库进行调优和额外配置,有时内存数据库的使用并不能凸显其作用。
伴随内存价格的降低和容量的不断提高,内存数据库技术在项目建设中的作用将会进一步显现。
结合内存数据库技术正在进行的探索和研究方向还有:
在实时行情数据发布领域中,主要存在两种技术,一种是共享内存技术,另外一种是内存数据库技术。经过检索,两项技术在全球相关领域中均有实现。
共享内存技术是相对最快的实时行情接收和发布技术,可以最大限度的充分利用硬件资源以最快的速度向用户播发行情数据。但是由于共享内存技术是一种专业性高、定制性强的技术,在保证高效率的同时,通用性较差,数据的维护以及与其他系统的交互能力相对较弱。
内存数据库技术,是从电信领域业务需求发展起来的专用型数据库技术,目前处于发展上升阶段,正在朝通用型数据库方向发展。但是,内存数据库技术也遇到了管理需求和性能需求的取舍矛盾。根据实际测试和使用比较,不同公司的产品取舍策略不同。有的产品与其他产品或者应用结合得更好,但是在服务性能上略有损失。有的产品在性能上给我们留下深刻印象,但是管理与应用开发有需要注意和特殊处理的内容。
在我社金融信息服务平台项目中,高性能的获得与可扩展性和易维护性的实现之间,内存数据库技术取得了比较合适的平衡。对于实时行情数据的发布,可采用以下技术方案:
对于实时性要求很高的业务需求,采用共享内存技术,是最佳选择。在这样的需求中,业务管理的便捷性、可扩展性和通用性要求相对较低,一切为速度服务。
对于实时性要求不高的业务需求,例如历史数据、低速率变动的数据或者一些发布获取渠道本身就存在较明显延迟的数据,传统关系型数据库是最佳选择。通过对传统关系型数据库的性能调优,可以在一定程度上获得比较满意的准实时性要求。
对于有很高实时性要求而可维护性、可扩展性和通用性要求也很高的业务需求,如果可以舍弃一部分实时性要求,这部分性能差异约在毫秒级,值得考虑应用内存数据库技术。
实时行情数据的准实时分析是一项复杂耗时又耗费服务资源的工作。现阶段对于基于共享内存技术的实时行情系统,在实现准实时数据分析的时候,受到应用实现本身的制约,需要大量的额外开发工作,很难理想的处理大量实时数据。在不同服务器之间进行数据同步也非常困难。如果使用传统关系型数据库进行这项工作,由于产生大量磁盘I/O操作,会使得这项工作变得更加难以实现。
采用内存数据库技术,可以在一定程度上结合上述二者的优势,弥补相互不足。服务器间有比较完备和标准的数据同步方式,仅需要少量开发就可以实现服务器间的数据同步,也可以单独部署行情分析应用,以不干扰实时行情发布服务。行情数据的准实时分析和跟踪,从技术上为“新华08”取得强于其他软件产品的服务优势。由于内存数据库软件产品本身的价格因素,中小规模软件产品难以应用该项技术。该项技术在复杂环境和庞大的数据规模中更能显示其优势,因此内存数据库技术的采用可以扩大在相关领域的技术优势。例如自动分析和跟踪特定业务需求的金融产品,查找当前市场中的不同指标的热点。这些功能将显著优于现有国内同类软件产品。一些软件仅能根据少量指标进行分析,而内存数据库技术的引入可以实现所有数据的单一分析和组合分析。准实时分析与数据仓库技术相比较,其最大的优势就是:极快、准实时。与共享内存技术相比较其特点是:便捷与全面。
风险控制和监管,在项目建设中还相对比较滞后。但作为系统中必不可少的重要环节,在未来的发展中这部分功能一定会得到显著强化。在这个过程中,将面对系统结构复杂、数据量庞大的问题。如何面对开放的系统服务带来的安全隐患,如何监管系统运行状态和用户的行为,特别是实时获取这些信息而不是在出现问题很久之后才发现,这些课题将会呈现在决策者和技术结构设计人员的面前。
数据库技术、审计技术等一系列手段都将会得到广泛应用。适当的引入内存数据库技术,将可以实现对于风险控制和监管的实时处理。借鉴网络安全中入侵防护体系的一些经验,可以制定一些自动处理策略,让系统按照事先规定的策略和预案进行预处理,在需要人为干预的时候尽早通知有关人员。类似功能的实现离不开实时数据的收集和处理。
目前已经尝试对一些频繁发生写入操作的日志处理采用结合内存数据库的技术实时方案。在这样的应用场景中,可以最快速地将需要记录的信息写入系统,降低对外服务延迟,提升服务能力。这些被记录的日志信息再由其他处理逻辑进行分类与存档,供其他需要使用。例如,将日志信息转存到传统关系型数据库中,以便更加长期的保留和进行分析。
“新华08”系统采用“统一认证、分布授权”的指导思想,考虑业务的灵活性和松耦合的技术要求,各个子系统具有独立授权模块。资讯授权子系统的实施已经证明,在各个子系统的授权逻辑中,恰当引入内存数据库技术是可以显著提高服务性能和授权速度,对于整体服务水平的提高是有帮助的。
长达6年半的实践检验证明,内存数据库技术在金融信息服务平台项目建设中的应用是成功的。它将原来的处理效率提高了4倍以上。对于检索等特定逻辑的应用,效率提升达10倍。根据观察还发现了整体性能提高几十倍的特定情况。内存数据库技术在子系统关键业务的应用,改善了“新华08”技术服务状况,显著增强系统的安全性,对于重要稀有资源的保护起到了很好的作用。此外,在性能方面的提升非常明显,可用较少的硬件资源提供较强的并发服务能力和更快的响应速度。
在今后的金融信息服务平台项目和其他新华社项目中,适当的因地制宜的采用内存数据库技术,将会使“新华08”项目和其他项目技术服务水平的提升更容易。新技术还在不断涌现和发展,伴随科技的进步,不断开拓创新,努力把“新华08”项目建设的更好,将是技术工作者的奋斗目标。
新华社技术局工程师)