铁路客票售票系统接口数据速查程序分析与设计

2019-01-25 06:09中国铁路上海局集团有限公司收入稽查处
上海铁道增刊 2018年4期
关键词:存根客票检索

王 珂 中国铁路上海局集团有限公司收入稽查处

1 客票系统接口文件信息检索工作概述

1.1 客票系统接口文件概述

铁路客票售票系统是由铁道科学研究院(下称铁科院)开发的中国铁路客运的制票系统。系统采用导出程序将每日数据导出为接口文件,向各局集团公司收入部门、统计部门提供客票售票相关数据,以协助相关单位利用这些数据进一步开展收入审核、统计、核算等相关工作。由于网络安全需求设计,客票售票网与铁路办公网物理隔断,铁科院设计、实施了接口服务器设备,每日从客票网向铁路办公网转移客票系统接口文件。每天每个售票站一般会产生13个接口文件,分别是车站售票存根(LS文件)、车站退票存根(LR文件)、财收二汇总数据(kcs2文件)、财收四汇总数据(kcs4文件)、退票二号表数据(st2文件)、售票二号表数据(sk2文件)、电子客票交易明细数据(SEPAY文件)、卡务窗口二号表数据(ZT2文件)、卡务财收四数据(ZT4文件)、闸机手续费明细数据(ZT1)、售票废票数据(FP数据)、外站售本站存根(YS文件)、外站退本站存根(YR文件),这些文件是运输收入后续审核、核算、列账的基础,有着十分重要的作用。

上海局集团公司是全路第一客运企业,2018年日均售票量超过270万张,日均改签、退票量合计超3万张。超过200个客运营业站单日生成的接口文件尺寸约为4 GiB,合计每月接口文件数量超过4万个,总大小超过120 GiB,记录总数超过1亿条。这样规模的数据量无论是数据文件的存储、归档、使用都有别于传统的数据文件操作,对实施人员的技术水平是一个不小的考验。

1.2 传统接口文件查询作业的弊端

接口文件是收入核算的原始数据,根据会计法要求,原始凭证应妥善保存15年,为了更好地存储与备份这些基础信息,收入稽查处建设了客票系统接口数据归档服务器,存放来自客票接口服务器的接口文件。

接口文件以车站电报码作为文件扩展名,其内容是逗号分隔的文本文件,每一行代表一条记录。收入处工作人员在电子支付差异核对、清算数据核对、特殊售票记录确认等特殊情况下需要直接对接口文件的内容进行检索。采用传统方式检索,首先确认需要查询的车站电报码,找到对应时间区间的接口文件,并通过FTP软件下载到本地。随后,利用EmEditor或UltraEditor等文本编辑器逐个打开文件,利用编辑器的查找功能,查询文件内的内容。

传统的查询方式有很多弊端,首先,文件在查阅前,需要逐个找到并利用FTP工具下载到本地,对于互联网售票或虹桥等大站的售票存根来说,下载过程也需要消耗可观的时间。其次,接口文件内容以逗号分隔,利用文本编辑工具打开后数据紧密排列在一起,没有分列显示,也没有字段说明,要分析某条数据,需要依靠人工经验并花费大量的时间。最后,检索工作依赖人工,只能逐个打开查询,无法并行检索,文件数量大时,检索相应的数据需要花费大量的精力和时间,效率很低。

2 客票系统接口文件速查需求分析

鉴于以上问题,本人设计并开发了“客票售票系统接口数据速查程序”下称速查程序),程序在规划、分析时,着重考虑了以下几点需求:

(1)跨单位跨时间段信息通查需求

考虑到信息检索工作常常需要检索多个单位某个时间范围内所有的数据存根,程序应实现跨单位、跨时间段信息检索功能。举例来说,2018年10月份香港跨境高铁运行后,为核对跨境高铁收入,收入处审核部希望检索11月全局范围内所有车站发售的G99次列车车票,检索条件是有发站或到站为“香港西九龙”的售票和退票记录。这是一个典型的多站多时间点的通查要求,数据分布在全月12 000多个接口文件中,通过传统手工查询很难实现。

(2)并行高速信息查询需求

在上述信息检索工作的例子中,12000多个文件的检索过程需要控制在合理的时间范围内,具体来说,就是需要客票接口文件速查程序能够发挥服务器主机多处理器、大内存、高速存储的优势,以并行执行的方式对不同的数据文件同时进行地检索,从而最大程度地减少信息检索所消耗的时间。

(3)接口文件格式可扩展性需求

随着客运业务的不断变化、客票售票系统的不断升级,接口文件的格式也在不断地改变。这就要求速查程序不能对接口文件的格式硬编码,需要提供某种方案,让程序能够适应未来可能产生的改变。举例来说,铁路开展电子支付业务后,售票存根接口增加了电子支付相关的几个数据字段,记录相应信息,旅客乘意险业务上线后,接口格式中又加入了乘意险相关的几个数据字段。自客票售票系统投入使用以来,售票接口存根已经从最初的50列左右逐步扩展为现在的74列,可以预见的是,这样的改变今后仍然会不断发生。

(4)SQL语言输入智能感知需求

接口数据文件是具有一定的格式,可以按列进行区分显示。速查程序最佳的设计方案是兼容结构化查询语言SQL,采用数据表的方式,对数据文件进行检索。兼容SQL语言查询具有显著的优势,首先,查询结果以列表显示,十分直观;其次,SQL具有丰富的函数库,功能强大;最后,利用SQL的where子句可自由定义查询条件,实现检索条件的逻辑组合以及模糊查询,非常灵活。

接口文件检索程序兼容SQL语言的好处显而易见,但仍需要解决一些细节问题。举例来说,站售客票接口文件有74列,在写SQL的where条件时,明确具体哪一列是什么数据类型,代表什么意思,就成了一个非常繁琐的问题。程序需要实现编程IDE环境中类似Intellisese的功能,对用户的输入进行智能感知,给出用户列名、含义相关提示,以方便用户编写SQL语句。

3 客票新系统接口文件速查程序设计方案

3.1 利用XML文件描述接口文件结构,满足可扩展性要求

可扩展标记语言XML,是一种常用的描述性语言。速查程序利用XML语言,对接口文件的定义、文件中各列的定义进行了描述(如图1)。接口定义XML文件中,一个File节描述了一个接口文件的类型、代码、字段数量等基本属性,其下拥有多个Column节,分别描述了不同列的名称、数据类型等列的基本属性。接口文件速查程序根据XML文件中的定义,“理解”各个接口文件及文件中的内容,并据此将文件检索结果展示为数据表,以方便最终用户检索。

图1 XML文件描述接口格式

3.2 利用SSH协议管理接口文件分布,满足文件通查要求

归档服务器中不同时间段的接口文件按月创建文件夹归档存放,当月的文件在没有归档前,存放在默认目录中。在执行查询之前,需要首先确认对应的数据文件是否存在,存放位置是否默认目录,Oracle数据库中对这一目录是否已经创建了目录对象,Oracle用户对数据文件是否有读权限。极端特殊的情况是,一些小站如果某些日期没有发生客票售票业务,将不会生成对应的接口文件,在这样的情况下,程序将通过SSH协议访问归档服务器的操作系统,检测到不存在的数据文件,并询问执行者是否继续进行检索。

3.3 利用Oracle外部表及并行执行技术,满足高速检索要求

Oracle数据库的外部表功能,可以借助数据库引擎以表的方式访问平面文件(文本文件),同时,利用外部表直接检索归档服务器上的接口文件还避免了文件传输到本地计算机的过程,节省了大量的时间。Oracle支持以数据泵Data-Pump引擎或加载器Sqlldr引擎两种方式定义外部表访问平面文件。sqlldr引擎具有速度快的优势,被选择作为速查程序使用的解决方案。使用外部表检索需要做一系列前期准备工作,速查程序负责自动将前期所有工作配置妥当,无需检索用户参与,以降低操作难度。

Oracle数据库支持并行操作,具体来说是由一组parallel初始化参数控制了整个数据库环境的并行操作执行的过程。速查程序使用Oracle系统的自动并行度,由数据库根据操作系统资源使用的情况配置并行计算使用的资源,这是一个比较理想的选择,可以减少由于客户端“超配”产生的“过劳”排队或其他等待。速查程序通过对用户提交的SQL进行改写,在语法中增加Parallel相关的提示,指导Oracle数据库在查询时采用并行方式执行,从而最大程度节省检索时间,提高效率。

3.4 编写SQL文法分析模块,满足SQL智能感知输入需求

为了方便用户SQL语句编写的过程,速查程序开发了智能感知输入提示功能,随着用户的键入过程,系统不断跟踪分析用户的输入,对用户输入的内容进行辅助列表提示(如图2),智能匹配用户的输入。提示列表告知用户字段名称及其代表的含义、取值范围等信息,用户选中想要的条目,按Tab键直接补齐余下的字符,十分方便快捷。

图2 智能感知输入提示

3.5 查询过程执行流程

系统执行流程如图3所示,用户首先选择所需查询的车站列表,确认数据的类型和时间区间。在select文本框中编辑SQL的select子句,在where文本框中编辑选择条件,点击【查询接口文件】按钮。系统首先判断对应的文件是否存在,文件所在目录是否创建的目录对象,然后为每个数据文件创建对应的外部表对象,最后对用户输入的SQL片段进行语法分析,改写、组合成为最终的SQL语句,提交给Oracle服务器执行查询,并取得最终的查询结果。

图3 软件执行流程

4 综述

程序投入使用后,大幅度简化了接口文件数据查询的过程,有效提高了相关工作的效率和精度。经测算,对上海虹桥及上海站一旬20个客票存根接口文件进行遍历搜索,查找所有发售的G99次列车车票存根,耗时约为2 min,时间经济性显著。

综上,接口文件是应用系统之间数据交换的一种常用方式,利用SSH服务结合Oracle外部表、并行查询、XML等技术设计的接口文件速查应用程序有着灵活的可扩展性和优异的性能表现,是解决类似问题优良的解决方案,希望本文的阐述可以为类似需求的应用程序设计提供有益的启示。

猜你喜欢
存根客票检索
一张火车票
——中国铁路客运发展的记忆“存根”
苏州河畔的畅想
浅谈哈尔滨局集团公司客票电子化通道强化与流量监测
中国铁路客票在跨境客运中的互通方案
珍档盘点 温岭土改时期土地房产档案简介
铁路回收车票自动核验系统的研发与应用
专利检索中“语义”的表现
航空公司客票直销的现状与分析
云计算在中国铁路客票预订和发售系统的应用研究
国际标准检索