国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

鐵路客票售票系統(tǒng)接口數(shù)據(jù)速查程序分析與設(shè)計

2019-01-25 06:09中國鐵路上海局集團(tuán)有限公司收入稽查處
上海鐵道增刊 2018年4期
關(guān)鍵詞:存根客票檢索

王 珂 中國鐵路上海局集團(tuán)有限公司收入稽查處

1 客票系統(tǒng)接口文件信息檢索工作概述

1.1 客票系統(tǒng)接口文件概述

鐵路客票售票系統(tǒng)是由鐵道科學(xué)研究院(下稱鐵科院)開發(fā)的中國鐵路客運的制票系統(tǒng)。系統(tǒng)采用導(dǎo)出程序?qū)⒚咳諗?shù)據(jù)導(dǎo)出為接口文件,向各局集團(tuán)公司收入部門、統(tǒng)計部門提供客票售票相關(guān)數(shù)據(jù),以協(xié)助相關(guān)單位利用這些數(shù)據(jù)進(jìn)一步開展收入審核、統(tǒng)計、核算等相關(guān)工作。由于網(wǎng)絡(luò)安全需求設(shè)計,客票售票網(wǎng)與鐵路辦公網(wǎng)物理隔斷,鐵科院設(shè)計、實施了接口服務(wù)器設(shè)備,每日從客票網(wǎng)向鐵路辦公網(wǎng)轉(zhuǎn)移客票系統(tǒng)接口文件。每天每個售票站一般會產(chǎn)生13個接口文件,分別是車站售票存根(LS文件)、車站退票存根(LR文件)、財收二匯總數(shù)據(jù)(kcs2文件)、財收四匯總數(shù)據(jù)(kcs4文件)、退票二號表數(shù)據(jù)(st2文件)、售票二號表數(shù)據(jù)(sk2文件)、電子客票交易明細(xì)數(shù)據(jù)(SEPAY文件)、卡務(wù)窗口二號表數(shù)據(jù)(ZT2文件)、卡務(wù)財收四數(shù)據(jù)(ZT4文件)、閘機手續(xù)費明細(xì)數(shù)據(jù)(ZT1)、售票廢票數(shù)據(jù)(FP數(shù)據(jù))、外站售本站存根(YS文件)、外站退本站存根(YR文件),這些文件是運輸收入后續(xù)審核、核算、列賬的基礎(chǔ),有著十分重要的作用。

上海局集團(tuán)公司是全路第一客運企業(yè),2018年日均售票量超過270萬張,日均改簽、退票量合計超3萬張。超過200個客運營業(yè)站單日生成的接口文件尺寸約為4 GiB,合計每月接口文件數(shù)量超過4萬個,總大小超過120 GiB,記錄總數(shù)超過1億條。這樣規(guī)模的數(shù)據(jù)量無論是數(shù)據(jù)文件的存儲、歸檔、使用都有別于傳統(tǒng)的數(shù)據(jù)文件操作,對實施人員的技術(shù)水平是一個不小的考驗。

1.2 傳統(tǒng)接口文件查詢作業(yè)的弊端

接口文件是收入核算的原始數(shù)據(jù),根據(jù)會計法要求,原始憑證應(yīng)妥善保存15年,為了更好地存儲與備份這些基礎(chǔ)信息,收入稽查處建設(shè)了客票系統(tǒng)接口數(shù)據(jù)歸檔服務(wù)器,存放來自客票接口服務(wù)器的接口文件。

接口文件以車站電報碼作為文件擴(kuò)展名,其內(nèi)容是逗號分隔的文本文件,每一行代表一條記錄。收入處工作人員在電子支付差異核對、清算數(shù)據(jù)核對、特殊售票記錄確認(rèn)等特殊情況下需要直接對接口文件的內(nèi)容進(jìn)行檢索。采用傳統(tǒng)方式檢索,首先確認(rèn)需要查詢的車站電報碼,找到對應(yīng)時間區(qū)間的接口文件,并通過FTP軟件下載到本地。隨后,利用EmEditor或UltraEditor等文本編輯器逐個打開文件,利用編輯器的查找功能,查詢文件內(nèi)的內(nèi)容。

傳統(tǒng)的查詢方式有很多弊端,首先,文件在查閱前,需要逐個找到并利用FTP工具下載到本地,對于互聯(lián)網(wǎng)售票或虹橋等大站的售票存根來說,下載過程也需要消耗可觀的時間。其次,接口文件內(nèi)容以逗號分隔,利用文本編輯工具打開后數(shù)據(jù)緊密排列在一起,沒有分列顯示,也沒有字段說明,要分析某條數(shù)據(jù),需要依靠人工經(jīng)驗并花費大量的時間。最后,檢索工作依賴人工,只能逐個打開查詢,無法并行檢索,文件數(shù)量大時,檢索相應(yīng)的數(shù)據(jù)需要花費大量的精力和時間,效率很低。

2 客票系統(tǒng)接口文件速查需求分析

鑒于以上問題,本人設(shè)計并開發(fā)了“客票售票系統(tǒng)接口數(shù)據(jù)速查程序”下稱速查程序),程序在規(guī)劃、分析時,著重考慮了以下幾點需求:

(1)跨單位跨時間段信息通查需求

考慮到信息檢索工作常常需要檢索多個單位某個時間范圍內(nèi)所有的數(shù)據(jù)存根,程序應(yīng)實現(xiàn)跨單位、跨時間段信息檢索功能。舉例來說,2018年10月份香港跨境高鐵運行后,為核對跨境高鐵收入,收入處審核部希望檢索11月全局范圍內(nèi)所有車站發(fā)售的G99次列車車票,檢索條件是有發(fā)站或到站為“香港西九龍”的售票和退票記錄。這是一個典型的多站多時間點的通查要求,數(shù)據(jù)分布在全月12 000多個接口文件中,通過傳統(tǒng)手工查詢很難實現(xiàn)。

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

在上述信息檢索工作的例子中,12000多個文件的檢索過程需要控制在合理的時間范圍內(nèi),具體來說,就是需要客票接口文件速查程序能夠發(fā)揮服務(wù)器主機多處理器、大內(nèi)存、高速存儲的優(yōu)勢,以并行執(zhí)行的方式對不同的數(shù)據(jù)文件同時進(jìn)行地檢索,從而最大程度地減少信息檢索所消耗的時間。

(3)接口文件格式可擴(kuò)展性需求

隨著客運業(yè)務(wù)的不斷變化、客票售票系統(tǒng)的不斷升級,接口文件的格式也在不斷地改變。這就要求速查程序不能對接口文件的格式硬編碼,需要提供某種方案,讓程序能夠適應(yīng)未來可能產(chǎn)生的改變。舉例來說,鐵路開展電子支付業(yè)務(wù)后,售票存根接口增加了電子支付相關(guān)的幾個數(shù)據(jù)字段,記錄相應(yīng)信息,旅客乘意險業(yè)務(wù)上線后,接口格式中又加入了乘意險相關(guān)的幾個數(shù)據(jù)字段。自客票售票系統(tǒng)投入使用以來,售票接口存根已經(jīng)從最初的50列左右逐步擴(kuò)展為現(xiàn)在的74列,可以預(yù)見的是,這樣的改變今后仍然會不斷發(fā)生。

(4)SQL語言輸入智能感知需求

接口數(shù)據(jù)文件是具有一定的格式,可以按列進(jìn)行區(qū)分顯示。速查程序最佳的設(shè)計方案是兼容結(jié)構(gòu)化查詢語言SQL,采用數(shù)據(jù)表的方式,對數(shù)據(jù)文件進(jìn)行檢索。兼容SQL語言查詢具有顯著的優(yōu)勢,首先,查詢結(jié)果以列表顯示,十分直觀;其次,SQL具有豐富的函數(shù)庫,功能強大;最后,利用SQL的where子句可自由定義查詢條件,實現(xiàn)檢索條件的邏輯組合以及模糊查詢,非常靈活。

接口文件檢索程序兼容SQL語言的好處顯而易見,但仍需要解決一些細(xì)節(jié)問題。舉例來說,站售客票接口文件有74列,在寫SQL的where條件時,明確具體哪一列是什么數(shù)據(jù)類型,代表什么意思,就成了一個非常繁瑣的問題。程序需要實現(xiàn)編程IDE環(huán)境中類似Intellisese的功能,對用戶的輸入進(jìn)行智能感知,給出用戶列名、含義相關(guān)提示,以方便用戶編寫SQL語句。

3 客票新系統(tǒng)接口文件速查程序設(shè)計方案

3.1 利用XML文件描述接口文件結(jié)構(gòu),滿足可擴(kuò)展性要求

可擴(kuò)展標(biāo)記語言XML,是一種常用的描述性語言。速查程序利用XML語言,對接口文件的定義、文件中各列的定義進(jìn)行了描述(如圖1)。接口定義XML文件中,一個File節(jié)描述了一個接口文件的類型、代碼、字段數(shù)量等基本屬性,其下?lián)碛卸鄠€Column節(jié),分別描述了不同列的名稱、數(shù)據(jù)類型等列的基本屬性。接口文件速查程序根據(jù)XML文件中的定義,“理解”各個接口文件及文件中的內(nèi)容,并據(jù)此將文件檢索結(jié)果展示為數(shù)據(jù)表,以方便最終用戶檢索。

圖1 XML文件描述接口格式

3.2 利用SSH協(xié)議管理接口文件分布,滿足文件通查要求

歸檔服務(wù)器中不同時間段的接口文件按月創(chuàng)建文件夾歸檔存放,當(dāng)月的文件在沒有歸檔前,存放在默認(rèn)目錄中。在執(zhí)行查詢之前,需要首先確認(rèn)對應(yīng)的數(shù)據(jù)文件是否存在,存放位置是否默認(rèn)目錄,Oracle數(shù)據(jù)庫中對這一目錄是否已經(jīng)創(chuàng)建了目錄對象,Oracle用戶對數(shù)據(jù)文件是否有讀權(quán)限。極端特殊的情況是,一些小站如果某些日期沒有發(fā)生客票售票業(yè)務(wù),將不會生成對應(yīng)的接口文件,在這樣的情況下,程序?qū)⑼ㄟ^SSH協(xié)議訪問歸檔服務(wù)器的操作系統(tǒng),檢測到不存在的數(shù)據(jù)文件,并詢問執(zhí)行者是否繼續(xù)進(jìn)行檢索。

3.3 利用Oracle外部表及并行執(zhí)行技術(shù),滿足高速檢索要求

Oracle數(shù)據(jù)庫的外部表功能,可以借助數(shù)據(jù)庫引擎以表的方式訪問平面文件(文本文件),同時,利用外部表直接檢索歸檔服務(wù)器上的接口文件還避免了文件傳輸?shù)奖镜赜嬎銠C的過程,節(jié)省了大量的時間。Oracle支持以數(shù)據(jù)泵Data-Pump引擎或加載器Sqlldr引擎兩種方式定義外部表訪問平面文件。sqlldr引擎具有速度快的優(yōu)勢,被選擇作為速查程序使用的解決方案。使用外部表檢索需要做一系列前期準(zhǔn)備工作,速查程序負(fù)責(zé)自動將前期所有工作配置妥當(dāng),無需檢索用戶參與,以降低操作難度。

Oracle數(shù)據(jù)庫支持并行操作,具體來說是由一組parallel初始化參數(shù)控制了整個數(shù)據(jù)庫環(huán)境的并行操作執(zhí)行的過程。速查程序使用Oracle系統(tǒng)的自動并行度,由數(shù)據(jù)庫根據(jù)操作系統(tǒng)資源使用的情況配置并行計算使用的資源,這是一個比較理想的選擇,可以減少由于客戶端“超配”產(chǎn)生的“過勞”排隊或其他等待。速查程序通過對用戶提交的SQL進(jìn)行改寫,在語法中增加Parallel相關(guān)的提示,指導(dǎo)Oracle數(shù)據(jù)庫在查詢時采用并行方式執(zhí)行,從而最大程度節(jié)省檢索時間,提高效率。

3.4 編寫SQL文法分析模塊,滿足SQL智能感知輸入需求

為了方便用戶SQL語句編寫的過程,速查程序開發(fā)了智能感知輸入提示功能,隨著用戶的鍵入過程,系統(tǒng)不斷跟蹤分析用戶的輸入,對用戶輸入的內(nèi)容進(jìn)行輔助列表提示(如圖2),智能匹配用戶的輸入。提示列表告知用戶字段名稱及其代表的含義、取值范圍等信息,用戶選中想要的條目,按Tab鍵直接補齊余下的字符,十分方便快捷。

圖2 智能感知輸入提示

3.5 查詢過程執(zhí)行流程

系統(tǒng)執(zhí)行流程如圖3所示,用戶首先選擇所需查詢的車站列表,確認(rèn)數(shù)據(jù)的類型和時間區(qū)間。在select文本框中編輯SQL的select子句,在where文本框中編輯選擇條件,點擊【查詢接口文件】按鈕。系統(tǒng)首先判斷對應(yīng)的文件是否存在,文件所在目錄是否創(chuàng)建的目錄對象,然后為每個數(shù)據(jù)文件創(chuàng)建對應(yīng)的外部表對象,最后對用戶輸入的SQL片段進(jìn)行語法分析,改寫、組合成為最終的SQL語句,提交給Oracle服務(wù)器執(zhí)行查詢,并取得最終的查詢結(jié)果。

圖3 軟件執(zhí)行流程

4 綜述

程序投入使用后,大幅度簡化了接口文件數(shù)據(jù)查詢的過程,有效提高了相關(guān)工作的效率和精度。經(jīng)測算,對上海虹橋及上海站一旬20個客票存根接口文件進(jìn)行遍歷搜索,查找所有發(fā)售的G99次列車車票存根,耗時約為2 min,時間經(jīng)濟(jì)性顯著。

綜上,接口文件是應(yīng)用系統(tǒng)之間數(shù)據(jù)交換的一種常用方式,利用SSH服務(wù)結(jié)合Oracle外部表、并行查詢、XML等技術(shù)設(shè)計的接口文件速查應(yīng)用程序有著靈活的可擴(kuò)展性和優(yōu)異的性能表現(xiàn),是解決類似問題優(yōu)良的解決方案,希望本文的闡述可以為類似需求的應(yīng)用程序設(shè)計提供有益的啟示。

猜你喜歡
存根客票檢索
一張火車票
——中國鐵路客運發(fā)展的記憶“存根”
蘇州河畔的暢想
淺談哈爾濱局集團(tuán)公司客票電子化通道強化與流量監(jiān)測
中國鐵路客票在跨境客運中的互通方案
珍檔盤點 溫嶺土改時期土地房產(chǎn)檔案簡介
鐵路回收車票自動核驗系統(tǒng)的研發(fā)與應(yīng)用
專利檢索中“語義”的表現(xiàn)
航空公司客票直銷的現(xiàn)狀與分析
云計算在中國鐵路客票預(yù)訂和發(fā)售系統(tǒng)的應(yīng)用研究
國際標(biāo)準(zhǔn)檢索
手游| 黄平县| 罗源县| 嵊泗县| 盐池县| 罗江县| 东乌珠穆沁旗| 城固县| 南平市| 景泰县| 颍上县| 赤壁市| 祥云县| 玛纳斯县| 和顺县| 泗阳县| 陈巴尔虎旗| 铅山县| 桓台县| 泰州市| 迁西县| 河东区| 姚安县| 昌图县| 开阳县| 南汇区| 龙门县| 阿勒泰市| 盐边县| 北安市| 水富县| 忻州市| 获嘉县| 遵义县| 环江| 宝山区| 富蕴县| 三门县| 娱乐| 陆良县| 方城县|