数据库技术及应用|铁路客票系统应用开源数据库技术研究

2019-02-28 16:27:18 其他数据库 330 views 其他数据库
[导读]:本文(《铁路客票系统应用开源数据库技术研究》)由来自思茅的用户投稿,并经由本站(数据库吧)结合主题:数据库技术及应用,收集整理了众多资料而成。主要记述了数据库技术,数据库应用系统,开源中国,应用架构等方面的信息。相信从本文您一定可以获得自己所需要的!

李 杨1,阎志远2,朱建军2,戴琳琳2

摘 要:为了提高铁路客票系统数据处理能力,突破商业数据库对其的技术制约和经济制约,实现数据库软件的自主可控和铁路信息系统国产化,文章结合铁路客票系统数据库现状及开源数据产品的现状和优势,分析采用开源数据库的可行性,通过客票系统典型应用在开源数据库上的实现,完成在开源技术应用上的新突破,证实了铁路客票系统采用开源数据库是可行的,也符合未来的发展趋势。

关键词:客票系统;开源数据库;信息系统国产化

随着铁路客票系统业务越来越广泛,以及12306网站和手机售票量的极速增长,业务增量和数据存储量也越来越大,采用传统商业数据库受到很多制约。为了提高铁路客票系统数据处理能力,解决超大规模并发、海量数据存储、数据动态调度与管理等难题,提高系统应对灾难风险和安全风险的能力[1],客票系统团队开始对各种形态的开源数据库包括关系型,非关系型,NewSQL数据库进行研究,形成不同应用场景采用不同数据库[2]、多种数据库混合部署的开源数据库应用思路。研究和应用开源数据库,能够降低客票系统软件授权成本,实现技术支持本土化,减少国外商业数据库对客票系统的经济制约和技术支持上的制约,也是提高信息安全保障能力[3],实现客票系统数据库国产化和自主可控的有效手段,对铁路信息系统实现国产化具有十分重要的意义。

1 开源数据库现状及可行性分析

随着开源数据库的发展,开源数据库在世界范围内得到越来越广泛的应用,当前的数据库行业业态已经从商业关系型数据库一家独大,真正发展到百家争鸣、百花齐放的局面[4]。图1为DB-Engines发布的数据库流行度排名。

根据DB-Engines统计,开源数据库数量达到154款,其多样性功能和优势基本涵盖了整个数据处理层面,随着开源数据库越来越成熟和稳定、得到市场认可,对商业数据库形成了很大的威胁[5],逐渐成为企业应用的标准基础设施选项,研究客票系统应用开源数据库也具备了可行性。

(1)在功能和性能上,开源数据库对SQL标准的支持、存储管理和网络管理,以及开发、管理和监控工具等方面都能媲美主流商业数据库[6],开源数据库性能在通用场景下完全不逊色商业数据库,并且开源数据库可通过分布式技术、集群技术超越商业数据库,在大数据处理行业更是占据主导地位。

图1 DB-Engines数据库流行度排名

图1 DB-Engines数据库流行度排名

(2)行业应用和生态建设上,开源数据库在互联网企业已经成为主流应用,在很多大型国企有非常广泛的应用,这为客票系统应用开源数据库提供了很多切实可行的经验和参考案例,同时开源数据库具有开源社区、用户会、邮件列表形成了一个完善的技术生态圈。为开源数据研究提供了可靠的支持。

(3)在政策支持和团队上,中国铁路总公司非常提倡和鼓励在铁路信息行业开展全面的开源软件技术运用和研究,尤其是数据库基础软件方面,客票系统开源数据库研究得到了充分重视和支持,并在多个业务系统中践行开源数据库的推广应用。为开源数据库研究积累了大量的经验,为客票系统深入使用开源数据库提供了可行性保障。

2 研究方法

2.1 原则

(1)坚持自主研发,坚持自主创新。通过技术交流、技术培训、参与社区建设等方式切实提高客票系统团队在开源数据库上的应用开发能力,自主创新真正实现客票系统数据库技术的自主可控,提高铁路客票系统信息化、国产化水平。

(2)理论结合实践,研究结合生产。客票系统应用开源数据库的研究,应分阶段进行理论研究和技术攻关,同时形成客票系统应用开源数据库理论指导与技术突破创新,在开源数据库理论研究的同时,以铁路客票系统典型业务作为实验基础形成落地应用,逐步推广开源数据库应用整个客票系统中。

(3)先边缘再核心,先试点再推广。客票系统应用开源数据库的研究,应对多种类型的开源数据库研究,根据客票系统的业务场景选择相应的数据库,例如在交易型业务中采用关系型数据库,大并发查询业务采用内存数据库,统计分析业务采用列存储数据库等;同时形成推进策略,如从简单业务系统到复杂业务系统,从非关键业务系统到关键业务系统。

2.2 路线

秉承上述研究原则,客票系统应用开源数据库通过如下3个方面进行研究,如图2所示。

图2 开源数据库研究线路图

图2 开源数据库研究线路图

(1)理论研究。检索调研国内外开源数据库现状,分析铁路客票系统数据库现状,借鉴行业和互联网企业的成熟方案,完成客票系统开源数据需求分析和目标制定,通过专家研讨、方案制定,形成铁路客票系统应用开源数据库总体规划和应用策略。

(2)技术研究。通过技术交流、培训,参与开源社区建设,掌握开源数据库技术,突破客票系统应用开源数据库关键技术。

(3)推广应用。通过客票系统业务原型迁移,在非关键业务系统进行试点应用;及时总结,根据效果设定生产上线系统的目标,进行研发投入,迭代、完善系统应用;在客票生产系统实施开源数据库应用,形成系统切换方案并验证测试,包括与既有数据库并行运行、业务数据的同步与复制等。

2.3 内容

客票系统基础架构是一个以数据库为中心的多层结构。数据库层,实现数据存储、管理,并通过存储过程实现客票系统的核心业务逻辑;核心层,主要包括交易中间件,数据传输中间件,数据库访问控制等,这些和数据库共同组成了客票系统的核心;接口层,主要包括各售票终端接口;客票系统售票终端,包括自动售票机,人工窗口,12306网站和手机等。如图3所示。

图3 客票系统总体架构简图

图3 客票系统总体架构简图

客票系统应用开源数据库是一个庞大而复杂的工程,不只是将商用数据库替换成开源数据库、迁移表和数据的简单工作。除数据库内的数据表、触发器、存储过程和视图等应用逻辑迁移,包括数据库复制、数据库相关中间件DBCS,CTMS,WORKLOAD的兼容性改造,还包括一些客票系统前端的改造工作。

3 关键技术

3.1 通用数据库访问控制器

通用数据库访问控制器是一套通用的数据库访问层封装器,可用于访问各种类型的数据库,实现多种开源数据库的支持; 实现方便、透明的数据库访问,调用过程、函数,并将数据库结果方便的返回给调用接口;可同时支持多种数据库的多个连接,方便实现根据不同客户端请求来切换相应的数据库连接;提供API函数供外部访问,数据库的访问连接或事务可以自动控制也可以由上层控制;通过数据库访问控制器可以屏蔽异构数据库的差异,提供安全的数据通信一致性协议访问接口,实现数据交互的安全访问。架构如图4所示。

该控制器采用基于事件驱动(Event-driven)响应客户请求的多线程服务器(Multi-threaded Server)模式—对每个客户请求建立一个线程主要包括事件调度模块,每当客户端发生一个请求,如连接建立、发送数据等,都进入相应的事件处理过程[7]。语法转换器是将请求命令转换成相应的数据库操作语句;连接池通过数据库适配器和远程服务模块维护多个数据库或者远程服务的连接;系统管理模块主要处理状态监控,日志处理等系统相关工作。

图4 通用数据库访问控制器基本架构图

图4 通用数据库访问控制器基本架构图

3.2 数据库复制系统

目前,铁路客票系统使用的数据复制系统管辖范围大、效率高[8],用于维护多个数据库中的复制数据,并保证完整性和一致性。它向客户端提供在本地访问数据的能力,从而减少了网络和中央计算机系统的负担。复制命令语言(RCL)能自定义各种复制功能,监控和维护复制系统。例如,可以要求在数据表、数据行或数据列的级别上复制数据子集,通过在复制节点上只复制所需数据,可节省系统资源的开销。

3.3 消息中间件技术

消息中间件是一种由消息传送机制或消息队列模式组成的典型的中间件技术,用于分布式应用系统间进行信息交换。通过消息中间件,应用程序或组件之间可以进行可靠的异步通信,降低系统之间的耦合度,从而提高整个系统的可扩展性和可用性。分布式消息系统是消息中间件的一种实现,具有数据冗余、可恢复性,可扩展性、送达保证、排序保证、缓冲、异步通信等技术特点。通过分布式消息队列系统,应用系统可实现解耦,具备灵活性和峰值处理能力,实现异步处理和高速数据同步。

3.4 异构数据库同步

异构数据库同步技术可实现数据源和目标数据库的数据同步,解决数据共享和集成问题,而不需要考虑数据库的类型和部署位置。具体技术实现方式包括:数据文件、数据库复制、应用系统实现多点写入等。

结合数据库复制、消息中间件等技术,通过读取并转发关系型数据库复制服务主点到复制从点数据库的消息,作为数据桥模拟复制从点数据库的响应消息序列到复制主点以确保实时数据的完整和一致,可完成数据复制主、从点之间的数据同步,同时通过数据适配器、解析器将消息和数据实时同步至其它数据节点,可实现到包括文件、内存数据库集群以及其它类型数据库在内的数据节点的异构数据同步功能。架构如图5所示。

通过异构数据库复制技术,可在既有的数据库和应用程序基础上建立复制系统,而不必进行数据库的转换、迁移以及应用程序的改变,同时,可以向复制系统添加不同种类数据库服务器满足业务发展和变化的需求。

4 研究成果

客票系统研发团队通过调研分析、详细设计、关键技术研究实现了一个客票系统典型业务—铁路局余票查询系统在开源数据库MySQL,PostgresSQL和国产数据库Gbase8t上的应用。承担4个铁路局线下余票查询,包括车站大屏,人工窗口售票,自动售票机(TVM),站车系统。基于开源数据库的余票查询系统试运行6个月,运行稳定,日均处理余票查询请求13万次,并通过了2016年国庆节和2017年春运客运高峰期的考验,高峰日处理余票查询请求达30万次。

图5 异构数据库复制流程图

图5 异构数据库复制流程图

图6 基于开源数据库的铁路局余票查询系统架构图

图6 基于开源数据库的铁路局余票查询系统架构图

如图6所示,线下余票查询系统分两种架构:(1)车站在铁路局本地查询余票(图6中左侧部分);(2)车站通过铁路局中间件在铁路总公司中心查询余票(图6中右侧部分)。开源数据库在第2种架构试运行,两种架构里,余票数据通过复制保持同步。

此外,非关系型开源数据库也在客票系统中应用,如:开源数据仓库Greenplum在客票营销系统中得到应用,开源内存数据库Gemfire在12306网上售票余票查询系统中也已经上线。

5 结束语

客票系统中应用开源数据库是必要的,是提高客票系统技术水平,实现数据库系统国产化,提高技术支持能力的重要途径。通过分析开源数据库现状和优势及政策环境,证明了客票系统中采用开源数据库是可行的,客票系统团队秉承坚持自主创新,理论与实践相结合,先简单后复杂,先外围后核心的研究原则,通过理论研究、技术研究和应用推广3条路线,形成开源数据库研究应用的指导策略和理论依据,并在客票系统典型业务中进行试点应用。通过及时总结、完善应用研究经验,指导客票系统后续在开源技术深入应用研究。

在客票系统中应用开源数据库成熟、稳定后,可将开源数据库自主化、产品化,形成客票数据库产品并在铁路行业内进行市场推广,引领铁路信息系统实现国产化。

参考文献:

[1] 朱建生.新一代客票系统总体技术方案的研究[J].铁路计算机应用,2012,21(6):1-6.

[3] 梁春丽.银行信息系统国产化浪潮来袭[J].金融科技时代,2015(2):15.

[4] 周世超.数据库产品与应用场景趋势[J].数字通信世界,2016(1):75-76.

[5] 陈姗姗.数据库厂商聚会开源社区[J].开发系统世界,2005(2):12-14.

[6] 曹江华.开源数据库百花齐放[J].软件和信息服务,2007(14):45-47.

[7] 阎志远,王智为,张常顺,等.铁路客票CTMS架构和关键技术[J].铁路技术创新,2012(4):26-28.

[8] 崔建岷.Sybase复制服务器构造及其在客票系统中应用[J].铁路计算机应用,2000,9(1):34-36.

数据库技术及应用视频

2016山师信工数据库技术与应用

相关问答

问:《数据库技术及应用》题目,求解!

答:本书介绍了数据库技术的基本原理、方法、实际应用技术及开发实例。全书按照理论―应用―扩展的思路编写。


问:急求!!!!数据库技术及应用 (王成良,柳玲)课后题答案

答:http://wenku.baidu.com/link?url=M3h5J0j55i4tl9EqUANmcpBcdtprsLrmOppBF03knnfT9QAiEwvdHtw9IcitIFEDCRjyXENXsA31xE2oDfKI5S7VdhDvPlByCgOnHqTg5hS
这里可以在线阅读,也可以下载。
既然你是要考研,建议你还是买纸质的书,好好做题,吃透它,坚持就是胜利。
祝你成功!


问:数据库原理与应用 数据库技术 数据库系统原理与应用 课程区别。。

答:《数据库系统原理与应用技术》是面向计算机及相关专业学生学习数据库知识而编写的教材,其中既包括数据库的基础理论知识,又包括数据库前端和后端的应用技术。
《数据库系统原理与应用技术》由三部分组成:
第一部分介绍数据库系统原理;
第二部分介绍SQL Server 2005数据库系统基础与使用;
第三部分介绍用VB和ASP NET开发数据库应用程序。


问:数据库技术及应用 什么时候考试

答:计算机等级考试一般是一年3次,计算机等级考试 考试采用全国统一命题,统一考试的形式。每年安排三次考试。一般安排在3月、9月和12月考试,其中3月份和9月份考试开考全部级别全部科目,12月份考试开考一、二级的全部科目,数据库技术及应用是三级考试。


问:数据库技术及应用(SQL server 2008)陈立潮 课后习题 第五章

答:1. SELECT cname,avg(grade) 平均成绩  FROM Course join sc on course.cno=sc.cno  where teacher like '张%' 2. SELECT CNO,COUNT(*) 人数  FROM SC  GROUP BY CNO  ORDER BY 2 DESC,1 3 SELECT sname,sno  FROM student  where sno in(select sno  from sc  where cno in(select cno  from student join sc on student.sno=sc.sno  where sname='张三'))  and sname<>‘张三’ 4. UPDATE SC SET GRADE=GRADE+5  FROM SC JOIN student on sc.sno=student.sno  join course on course.cno=sc.cno  where ssex='女' and cname='计算机基础' 5. DELETE SC  FROM SC JOIN student on sc.sno=student.sno  where sname='王五' 6. select cname  from student join sc on student.sno=sc.sno  join course on course.cno=sc.cno  where sname in('张三','李四')  group by cname  having count(*)=2 7. select sname  from student  where sno not in(select sno from sc)


标签:

发表评论

everest

本书介绍了数据库技术的基本原理、方法、实际应用技术及开发实例。全书按照理论―应用―扩展的思路编写。

2019-03-07 12:51:06

发表评论:

PHONE