铁路企业差旅酒店预订系统数据治理技术研究
2023-11-27王运霞
张 莹,王运霞,易 超,张 智,张 蓓
(1. 铁旅科技有限公司,北京 100081;2. 中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081;3. 中铁程科技有限责任公司,北京 100081;4. 北京经纬信息技术公司,北京 100081)
由企业员工因公出差旅行(简称:差旅)衍生的相关服务行业发展迅速,是电子商务领域的一个细分产业。差旅平台为大中型企业用户提供了自助式的差旅管理服务,提供集出差申请、产品预订、报销、公司月结、差旅费用分析等一站式的差旅服务方案,可减轻长期出差员工的个人垫资压力,简化报销流程。
当前,我国铁路建设力度不断增大,铁路员工因公出行需求显著增长。为此,中国铁道科学研究院集团有限公司电子计算技术研究所(简称:铁科院电子所)于2022年研发了铁路差旅平台,针对性地为铁路企业员工及管理者提供智能化、信息化、专业化的差旅服务。铁路企业差旅酒店预订系统(简称:铁路酒店预订系统)是其重要的系统之一,面向铁路企业管理者和因公差旅的员工,提供酒店查询与预订、订单查询与确认、客服工单管理、财务对账结算、供应商管理等功能。因该系统数据具有海量、多源、异构的特点,当前遇到的问题包括:(1)使用传统型关系数据库无法满足用户高速检索数据的需求;(2)与铁路酒店预订系统对接的各类供应商提供的酒店数据变更频繁,多源数据同步延迟情况严重;(3)酒店供应商的数据没有统一的数据标准,各类供应商的数据组成方式和字段各不相同,整合难度较高。因此,亟需对铁路酒店预订系统进行数据治理,解决系统数据在采集、处理、存储、检索、分析等全链路过程中的各类难题。
近年来,以Hadoop和Spark为代表的大数据生态圈组件已得到广泛应用[1]。许多研究人员针对如何运用大数据技术进行数据治理进行了研究。张思思[2]设计的基于大数据分析的差旅系统中,采用Spark SQL和Spark Streaming实现对数据的计算功能,采用python语言进行建模,通过平稳性检测和数据处理,保障数据稳定性;邓奇山[3]在Hi Travel差旅平台设计中,选用微服务分布式架构,使用Spark Streaming作为数据统计分析工具,显著提高了数据的读取速度和数据处理性能;何开品[4]阐述了大数据技术在智慧酒店中起到的整合数据资源、实现数据共享的作用。
基于上述研究,本文采用高速缓存和分布式搜索引擎,利用多源数据预同步和多源异构数据整合等技术进行数据治理,构建更加精准、高效的铁路酒店预订系统。
1 铁路酒店预订系统设计
1.1 总体架构
铁路酒店预订系统包括数据源层、数据采集层、数据存储层和数据应用层,总体架构如图1所示。
图1 铁路酒店预订系统总体架构
(1)数据源层:系统数据来源主要包括从第三方系统(酒店供应商)获取的酒店初始数据及用户行为数据。
(2)数据采集层:对从数据源层获取到的数据做预处理,将非标准格式的数据格式化为系统标准格式数据,并对来自不同供应商的同一酒店数据进行整合。
(3)数据存储层:该层存储的数据主要包括酒店数据与订单数据,其中酒店数据分为静态数据与动态数据。
(4)数据应用层:对数据存储层中的数据进行检索、分析和功能应用,并以报表的形式呈现出系统的整体运营情况。
1.2 功能模块
铁路酒店预订系统的功能模块包括预订模块、订单模块、客服模块、结算模块及供应商模块,如图2所示。
图2 铁路酒店预订系统的功能模块
(1)预订模块主要为用户提供酒店查询、比价、预订与取消等服务,是整个系统的核心模块;
(2)订单模块为运营人员提供订单管理和统计功能,方便运营人员对本企业订单进行统计,得出每个部门的出行数据规律,从而掌握企业员工的出行特征;
(3)客服模块基于客服人员日常工作需求,提供座席管理、呼入与呼出、服务单管理等功能;
(4)结算模块为财务人员提供对账与结算功能;
(5)供应商模块为运营人员提供供应商管理功能,方便在合同期间对供应商进行考核(价格准确率、订单确认时长、拒单率等);此外,本模块还提供酒店资源整合功能。
2 酒店数据
酒店数据可分为静态数据和动态数据2类。目前,铁路酒店预订系统每天处理静态数据约11 000万条,占用存储空间约11 TB,动态数据450 000万条,占用存储空间约200 GB。
2.1 静态数据
静态数据的变化频率较低,主要包括以下几个部分。
(1)基础数据。酒店的基础信息,包括:酒店名称、酒店简介、所在城镇、取消政策、酒店设施等。
(2)房型数据。酒店的卧室/客厅/卫生间,以及房间面积、楼层、礼遇等相关信息。
(3)兴趣点数据。由电子地图提供的酒店及其周边的搜索服务,包括兴趣点的名称、地址、坐标、类别、服务介绍等。
(4)图片数据。展示酒店实际场景及特色的各类图片,能够帮助员工更为直观地了解住宿环境。
(5)订单数据。包括预订酒店过程中的待支付、已完成、已取消等各种状态的订单数据。
2.2 动态数据
动态数据是需要实时维护更新的数据,主要包括:
(1)房价数据。该数据受经济、市场、气候等多种因素影响,变动较为频繁。
(2)房间状态数据。指房间的当前状态,包括:空房、走脏房(待清扫)、维修房、预退房等20种状态。
(3)房量库存数据。指现有可预订状态的库存数量。
(4)点评数据。指用户对酒店和房间的评价。
(5)问答数据。指关于入住酒店的一些疑问与解答。
3 数据治理方法
3.1 基于分布式缓存的高效检索
本文提出一种基于分布式缓存技术的酒店数据高效检索方法。在原有系统基础数据库的基础上,设计Redis集群和ES(Elastic Search)集群。其中,Redis集群中存储的数据为铁路企业差旅热门酒店数据;ES集群中建立了分布式索引,对酒店数据进行了抽象和分类,剥离常用搜索字段和基础属性字段[5],使得服务器可在极短的时间内存储、搜索和分析大量的数据;将PgSQL作为存储所有酒店数据的基础数据库,对其进行分库分表操作,从而提升单表的查询能力,扩展系统的并发处理能力。数据治理后的酒店数据检索业务流程如图3所示。
图3 酒店数据检索业务流程
当用户查询酒店相关数据时,先判断该查询是否命中Redis集群缓存数据;若没有命中,则判断是否属于复杂查询,即基于酒店特征进行的组合查询,若是,则查询ES集群;若用户查询属于简单查询,即指定某个酒店的查询,则直接从系统数据库中获取数据。
3.2 多源数据同步
根据访问频率,酒店数据又可分为热数据、温数据和冷数据,本文针对该特点分别制定多源数据预同步策略[6],并详细阐述常见的静态温数据、动态热数据和动态冷数据等3类数据的预同步方法。
3.2.1 静态温数据定时更新
静态温数据更新频率较低,但较常被访问,对于这类数据无需频繁更新,每月更新1次,保持数据的时效性即可。
3.2.2 动态热数据即时更新
针对房价、房态、房量库存这类经常被访问的动态热数据,需要即时更新,保证数据的准确性和实效性,使用户预订不受影响,具体更新同步策略如下。
(1)热门城市定时更新,对于我国搜索量前100名的热门城市的酒店数据及搜索量前20 000名的酒店数据,设置定时器,固定时间和频率,对其数据周期性地执行更新任务。由于热门数据直接由供应商提供,短时间内即可完成更新,更新频率为10 min/次。
(2)申请单审批完成后触发更新,酒店预订的先决条件是出差申请单的审批完成,可利用审批完成到用户预订之间的时间差,对出差申请单中的出差城市进行定向更新。
3.2.3 动态冷数据每天定时更新
问答、点评这类动态冷数据的用户访问频率较低,时效性要求不高,但仍需要长期存储,可每天定时对其进行更新。
3.3 基于映射机制的多源异构数据整合
对于一品多供的酒店商品,本文通过数据映射(Mapping)技术,从酒店数据映射和房型数据映射2个维度,准确识别不同供应商供应的同一家酒店及同一家酒店的同一个房型,整合多源异构数据[7]。铁路酒店预订系统供应商模块中的资源整合功能示意如图4所示。
当铁路酒店预订系统从第三方系统中拉取各个供应商的酒店资源信息后,先对其进行数据预处理,将不同数据格式的酒店数据转换为标准数据;通过Mapping技术对地址、城市、经纬度、酒店名称等维度进行匹配,从而整合酒店数据,实现对房型、设施、服务等信息的数据整合,将整合后的数据输出到PgSQL基础数据库中,为后续酒店查询及检索提供数据支撑。
4 结束语
本文通过分析铁路酒店预订系统的数据特性,制定针对性的数据治理方案,实现铁路酒店预订系统对数据检索的快速、高效反应。该数据治理方案已成功应用于铁路酒店预订系统的优化建设中,并于2022年4月上线运行。经数据治理优化后的铁路酒店预订系统可进行毫秒级的查询响应,减少了铁路企业员工预订酒店的时间成本,显著提升员工的差旅体验。下一步,需要继续研究铁路酒店预订系统的数据治理技术,实现数据治理动态化[8],建立更加完整的铁路差旅生态体系。