王曉勃,任利明
(中國(guó)民航信息網(wǎng)絡(luò)股份有限公司研發(fā)中心主機(jī)系統(tǒng)支持部,北京 100029)
近年來(lái)中國(guó)民航事業(yè)蓬勃發(fā)展,2009年中國(guó)民航旅客運(yùn)輸量達(dá)到2.3億,2010年達(dá)到2.67億。據(jù)民航局預(yù)測(cè),2011年將突破3億。民航訂座系統(tǒng)作為重要的航空旅游產(chǎn)品分銷(xiāo)系統(tǒng),承擔(dān)著民航事業(yè)高速發(fā)展的重任;迅猛增長(zhǎng)的民航旅客給民航訂座系統(tǒng)帶來(lái)巨大的挑戰(zhàn)。長(zhǎng)久以來(lái),中國(guó)民航訂座系統(tǒng)使用5位記錄編號(hào)來(lái)表示旅客信息,最多可支持1600萬(wàn)實(shí)時(shí)旅客訂單信息[1]、2.8億的年旅客量。這已不能滿(mǎn)足2011年春運(yùn)高峰期的實(shí)時(shí)旅客訂單信息需求[1]及年旅客處理量的需求,更不能滿(mǎn)足未來(lái)10年國(guó)內(nèi)民航業(yè)的發(fā)展。
目前,國(guó)際各大GDS的PNR記錄編號(hào)位數(shù)均為6位;并且在建立系統(tǒng)時(shí),就已設(shè)計(jì)為6位。民航訂座系統(tǒng)的記錄編號(hào)擴(kuò)容無(wú)國(guó)際經(jīng)驗(yàn)可供參考。PNR旅客記錄編號(hào)是訂座系統(tǒng)中最底層、最基礎(chǔ)的數(shù)據(jù),涉及系統(tǒng)內(nèi)絕大部分程序[2-3]和多個(gè)系統(tǒng)間核心交互[4-5]。PNR容量擴(kuò)容工作涉及系統(tǒng)改造工作量巨大,周邊系統(tǒng)眾多;會(huì)對(duì)系統(tǒng)穩(wěn)定運(yùn)行產(chǎn)生極大的風(fēng)險(xiǎn)及對(duì)周邊系統(tǒng)造成嚴(yán)重的影響。本文結(jié)合對(duì)民航訂座系統(tǒng)的研究與PNR旅客記錄編號(hào)的應(yīng)用特點(diǎn),提出了PNR容量擴(kuò)容升位的改造方案。依據(jù)該方案,在中國(guó)民航訂座系統(tǒng)上實(shí)現(xiàn)了PNR容量的擴(kuò)容。
PNR是旅客訂座記錄的縮寫(xiě),是訂座系統(tǒng)基本信息存儲(chǔ)單元,記錄了旅客乘機(jī)旅行的基本信息,包括團(tuán)隊(duì)、人數(shù)信息、旅客姓名、性別、身份信息、航程、票務(wù)、聯(lián)系方式等。PN文件是存儲(chǔ)PNR數(shù)據(jù)的物理存儲(chǔ)文件,其一個(gè)存儲(chǔ)單元對(duì)應(yīng)著一個(gè)PNR。PNR記錄編號(hào)是PNR的唯一識(shí)別標(biāo)識(shí)。目前中國(guó)民航訂座系統(tǒng)內(nèi)使用5位PNR記錄編號(hào),5位PNR記錄編號(hào)通過(guò)特殊算法和PN文件的存儲(chǔ)單元索引值(PN record key)形成一一對(duì)應(yīng)關(guān)系。單個(gè)PN文件可容納16 M個(gè)存儲(chǔ)單元,即1677萬(wàn)個(gè)PNR記錄編號(hào)[2]。如圖1所示。
目前,在民航訂座系統(tǒng)內(nèi),PNR記錄編號(hào)與PN文件的record key一一對(duì)應(yīng),它們之間存在一個(gè)轉(zhuǎn)換算法。PN文件的PN record key為36個(gè)bits。目前系統(tǒng)內(nèi),設(shè)計(jì)前11個(gè)bits均為0;后25個(gè)bits分為5組,每組5個(gè)bits;5個(gè)組合轉(zhuǎn)換成5個(gè)數(shù)字或者字母。25個(gè)bits轉(zhuǎn)換對(duì)應(yīng)了系統(tǒng)目前所使用的5位記錄編號(hào),全部對(duì)應(yīng)到一個(gè)PN物理文件上。
PNR容量擴(kuò)容,在底層實(shí)現(xiàn)上,可通過(guò)使用大文件機(jī)制、增加PN物理存儲(chǔ)文件來(lái)擴(kuò)充記錄編號(hào)容量。增加PNR記錄編號(hào)位數(shù),由現(xiàn)有5位升級(jí)至6位;設(shè)計(jì)新算法,用新增加的首字母來(lái)標(biāo)識(shí)所占用的物理存儲(chǔ)文件,將6位PNR記錄編號(hào)對(duì)應(yīng)到多個(gè)PN文件。
設(shè)計(jì)新的算法,用新增加的首字母與PN record key的第4~6個(gè)bit對(duì)應(yīng),來(lái)標(biāo)識(shí)所占用的PN物理文件,如圖2所示。使用1個(gè)固定的首字母,將系統(tǒng)現(xiàn)有5位記錄編號(hào)對(duì)應(yīng)在第1個(gè)PN大文件上。在合適的時(shí)機(jī)依次開(kāi)啟新的PN大文件,并依次使用新的首字母與之對(duì)應(yīng)[6]。6位記錄編號(hào)首字母使用如下規(guī)則,而啟用程度由PN文件的用度決定。ICS依次使用M、N、P、Q、R、S、X、Y 共 8 個(gè)字符作為首字母;CRS 依次使用 H、J、K、L、B、C、G、Z 共 8 個(gè)字符作為首字母。
圖2 PN record key格式Fig.2 Format of PN record key
理論上,使用這種方式可將PNR底層可用物理容量擴(kuò)至現(xiàn)有的8倍。而要想實(shí)現(xiàn)PNR容量擴(kuò)容以及PNR記錄編號(hào)位數(shù)升級(jí),需要對(duì)整個(gè)訂座系統(tǒng)所有程序升級(jí)才可支持PNR記錄編號(hào)位數(shù)的變化。
PNR擴(kuò)容升位面臨以下難題:①在開(kāi)發(fā)工作量巨大的前提下,既要保障功能實(shí)現(xiàn),更要保證系統(tǒng)運(yùn)行安全;②由于涉及范圍廣,需將對(duì)周邊系統(tǒng)的影響降到最低;③需考慮對(duì)外航擴(kuò)容改造的全面支持。
針對(duì)以上問(wèn)題,本文提出了由5位至6位平緩過(guò)渡的整體投產(chǎn)方案;在具體實(shí)施中,提出了采用參數(shù)控制不同階段、全面配合周邊系統(tǒng)的具體方案。
1.3.1 整體方案
為了降低影響,給外系統(tǒng)升級(jí)改造的緩沖,否決了將PNR記錄編號(hào)一步升級(jí)到6位的“一刀切”方案;提出由5/6位并存到5位自然消亡全6位的過(guò)渡整體投產(chǎn)方案。同時(shí),投產(chǎn)方案遵循“一個(gè)PNR在生存周期內(nèi),始終以一個(gè)PNR key展現(xiàn)”的基本原則。即:新生成的6位PNR按6位方式呈現(xiàn),老PNR按5位方式呈現(xiàn)。整體投產(chǎn)方案的實(shí)施可分為3個(gè)階段進(jìn)行過(guò)渡,而在不同階段,PNR編號(hào)具有不同的表現(xiàn)形式(顯示格式),如圖3所示。
圖3 記錄編號(hào)擴(kuò)容步驟Fig.3 Steps of PNR expansion
1)系統(tǒng)改造階段 改造系統(tǒng)支持5/6位并存。此時(shí),訂座系統(tǒng)內(nèi)記錄編號(hào)仍然只有5位記錄編號(hào)PNR,不會(huì)新生成6位記錄編號(hào)PNR。升級(jí)系統(tǒng)程序,使處理邏輯能夠兼容5位、5/6位并存、全6位3個(gè)階段。雖然尚沒(méi)有出現(xiàn)真正的6位記錄編號(hào),但對(duì)于屏幕輸出類(lèi),格式開(kāi)始發(fā)生變化,位置將由目前占用5個(gè)字符變成占用6個(gè)字符;并以右對(duì)齊方式展現(xiàn)。此時(shí),為了不影響系統(tǒng)性能,有一小部分指令輸出為假的6位記錄編號(hào)或以左對(duì)齊方式展現(xiàn)。而對(duì)于通用報(bào)文類(lèi)(包括有外航/GDS的交互報(bào)文),依然采用左對(duì)齊方式。格式不會(huì)發(fā)生變化,也不會(huì)出現(xiàn)假6位。
2)開(kāi)通6位功能階段 開(kāi)啟6位開(kāi)關(guān)。此時(shí)系統(tǒng)將開(kāi)始生成新的6位記錄編號(hào)PNR。隨后,隨著新的PNR生成,6位記錄編號(hào)PNR將逐漸增多,5位逐漸減少。此時(shí),訂座系統(tǒng)內(nèi)5/6位記錄編號(hào)并存。
3)開(kāi)通大文件功能 開(kāi)啟第2個(gè)大文件。等待5位自然消亡或在合適時(shí)間擇機(jī)開(kāi)通大文件功能,并開(kāi)啟第2個(gè)大文件,實(shí)現(xiàn)訂座系統(tǒng)內(nèi)全6位記錄編號(hào),系統(tǒng)內(nèi)只存在6位記錄編號(hào)PNR。在大文件依次開(kāi)啟時(shí),PNR記錄編號(hào)將依次使用新的首字母與之對(duì)應(yīng)。
其中的每一步都具有里程碑的意義,分別標(biāo)志著訂座系統(tǒng)改造成功、6位記錄編號(hào)功能實(shí)現(xiàn)、PNR容量擴(kuò)容成功。第3步需在前2步基礎(chǔ)上,做大文件的開(kāi)通工作及相關(guān)的清尾工作。
1.3.2 控制開(kāi)關(guān)
依據(jù)投產(chǎn)方案,首先需改造系統(tǒng)能夠支持5/6位并存,即需修改程序處理邏輯。結(jié)合民航訂座系統(tǒng)與PNR記錄編號(hào)的應(yīng)用特點(diǎn),本文提出使用2個(gè)控制開(kāi)關(guān)支持不同投產(chǎn)階段的方案,使得程序中的處理邏輯只做一次修改,便可同時(shí)支持多個(gè)階段。控制開(kāi)關(guān)設(shè)計(jì)如下:
1)系統(tǒng)切換開(kāi)關(guān)
為了降低程序上線(xiàn)與投產(chǎn)的風(fēng)險(xiǎn),設(shè)計(jì)了系統(tǒng)切換開(kāi)關(guān)。它是開(kāi)始生成6位記錄編號(hào)的開(kāi)關(guān),用來(lái)控制生成5位或6位PNR。當(dāng)值為1時(shí),新建PNR為5位;值為0時(shí),新建PNR為6位。該參數(shù)初始值為1,表示現(xiàn)在的5位狀態(tài);在上述投產(chǎn)方案的第2步,設(shè)置其為0,生成6位PNR,系統(tǒng)內(nèi)出現(xiàn)新的6位記錄編號(hào)。由于參數(shù)的默認(rèn)值為0,待5位自然消亡至全6位時(shí),對(duì)該參數(shù)的使用也再不需修改。
配合系統(tǒng)切換開(kāi)關(guān),同時(shí)設(shè)計(jì)了PNR標(biāo)志位來(lái)標(biāo)識(shí)PNR記錄編號(hào)位數(shù)。該參數(shù)由6位開(kāi)關(guān)參數(shù)控制,用來(lái)表示本PNR記錄編號(hào)的位數(shù)。它在PNR被初始分配時(shí)賦值。當(dāng)6位開(kāi)關(guān)參數(shù)為1時(shí),新分配的PNR標(biāo)志位為1,表示5位記錄編號(hào)。值為0時(shí),新分配的PNR標(biāo)志位就為0,表示6位記錄編號(hào)。程序中可以使用它判斷PNR的位數(shù),進(jìn)而做下一步的處理。使用這個(gè)參數(shù)便可以改造系統(tǒng)程序兼容5/6位并存。
采用上述方案與設(shè)計(jì)的參數(shù),使得對(duì)程序一次修改就可以支持所有階段。減少了程序上線(xiàn)次數(shù),降低了多次上線(xiàn)對(duì)系統(tǒng)安全運(yùn)行所造成的風(fēng)險(xiǎn);并可在很長(zhǎng)時(shí)間內(nèi)持續(xù)驗(yàn)證程序修改的正確性及安全性,保障了系統(tǒng)的穩(wěn)定運(yùn)行。
2)外航交互方案與開(kāi)關(guān)
外航銷(xiāo)售是航空公司及代理人收益的重要組成部分,在外航/國(guó)外GDS訂座中,記錄編號(hào)交互解析是一個(gè)核心的功能。在這方面,采用保守的改造方案,在6位開(kāi)關(guān)開(kāi)啟前,不對(duì)外航/GDS之間的交互做任何改變。仍然保持相互之間全5位PNR記錄編號(hào),以及保持交互時(shí)的現(xiàn)有報(bào)文格式不變。在6位開(kāi)關(guān)開(kāi)啟后,生成新的真正6位PNR記錄編號(hào)后,與外航/GDS之間的交互報(bào)文中才出現(xiàn)6位PNR記錄編號(hào),以及出現(xiàn)6位的格式。這樣的方案設(shè)計(jì),為外部系統(tǒng)預(yù)留了足夠長(zhǎng)的時(shí)間進(jìn)行改造、聯(lián)合測(cè)試。同時(shí),由于外航和GDS的改造進(jìn)度不在自我的把控范圍內(nèi),當(dāng)有外航或GDS由于種種原因而不能按期投產(chǎn),則民航訂座系統(tǒng)與該外航或GDS的訂座功能將會(huì)中斷。因此,在技術(shù)手段上對(duì)此類(lèi)外航進(jìn)行支持。
同時(shí),設(shè)計(jì)外航交互開(kāi)關(guān),控制對(duì)指定外航發(fā)送的PNR記錄編號(hào)的位數(shù),以防投產(chǎn)時(shí)外航系統(tǒng)不支持的情況。這些方案設(shè)計(jì)都極大地降低了系統(tǒng)升級(jí)帶來(lái)的影響,可保障擴(kuò)容升位工作順利進(jìn)行。
本文將上述方案應(yīng)用于中國(guó)民航訂座系統(tǒng),并實(shí)現(xiàn)了PNR容量擴(kuò)容的成功。
PNR擴(kuò)容工作有3個(gè)重要的里程碑:①完成程序修改上線(xiàn),實(shí)現(xiàn)民航訂座系統(tǒng)改造,此時(shí)系統(tǒng)可支持5/6位記錄編號(hào)并存;②投產(chǎn)6位記錄編號(hào),此時(shí)開(kāi)啟6位開(kāi)關(guān),系統(tǒng)中產(chǎn)生真正的6位記錄編號(hào);③大文件功能開(kāi)通,此時(shí)對(duì)PN文件開(kāi)通大文件功能,開(kāi)啟第2個(gè)PN文件,系統(tǒng)內(nèi)只存在全6位記錄編號(hào)。另外,實(shí)際工作中,在進(jìn)行第2步6位記錄編號(hào)的正式投產(chǎn)前,對(duì)6位記錄編號(hào)進(jìn)行了預(yù)投產(chǎn)。預(yù)投產(chǎn)的成功保障了正式投產(chǎn)的順利進(jìn)行。
本節(jié)將從以上這些方面,簡(jiǎn)單介紹中國(guó)民航訂座系統(tǒng)PNR容量擴(kuò)容的系統(tǒng)實(shí)現(xiàn)情況。
依據(jù)設(shè)計(jì)方案修改程序,程序修改完成上線(xiàn)后,系統(tǒng)改造基本完成。此時(shí)屏幕輸出/報(bào)文中有一些變化。
對(duì)于屏幕輸出類(lèi),格式發(fā)生變化:位置將由原來(lái)占用5個(gè)字符變成占用6個(gè)字符,并以右對(duì)齊方式展現(xiàn)。格式變化如圖4所示。
圖4 屏幕輸出PNR格式變化Fig.4 PNR format change on screen output
對(duì)于通用報(bào)文類(lèi),依然采用左對(duì)齊方式。由于未開(kāi)啟6位開(kāi)關(guān),新報(bào)文與原來(lái)格式一致,如圖5所示。
圖5 報(bào)文中的PNR格式Fig.5 PNR format in message
由于6位記錄編號(hào)涉及面廣,為降低風(fēng)險(xiǎn),保障系統(tǒng)安全,本文相關(guān)工作在正式投產(chǎn)前對(duì)6位功能進(jìn)行了小規(guī)模的預(yù)投產(chǎn)。預(yù)先生成少量長(zhǎng)度為6位的記錄編號(hào),以驗(yàn)證目前生產(chǎn)系統(tǒng)在6位記錄編號(hào)生成的情況下能夠正確的運(yùn)行。
預(yù)投產(chǎn)工作選用了國(guó)內(nèi)三大航的特定航班,針對(duì)國(guó)航、東航、南航進(jìn)行了單一航班的預(yù)投產(chǎn)工作。2010年10月24~25日,在生產(chǎn)系統(tǒng)進(jìn)行3個(gè)投產(chǎn)航班PNR記錄編號(hào)升位的設(shè)置工作;2010年11月2日,預(yù)投產(chǎn)航班正常起飛。預(yù)投產(chǎn)工作期間,對(duì)相關(guān)航班的運(yùn)行情況進(jìn)行了監(jiān)控,并監(jiān)視跟蹤每一個(gè)6位記錄編號(hào)PNR的變化情況。同時(shí),與53家外航和4家GDS測(cè)試,測(cè)試結(jié)果正確。在預(yù)投產(chǎn)航班生存周期內(nèi)的訂座、出票、離港等全系列過(guò)程中,系統(tǒng)運(yùn)行平穩(wěn),用戶(hù)操作正常,全部旅客信息處理正確。
在系統(tǒng)改造完成后,第2個(gè)重要的里程碑就是開(kāi)啟6位開(kāi)關(guān),民航訂座系統(tǒng)產(chǎn)生真正的6位PNR。第1個(gè)里程碑的成功實(shí)現(xiàn)后,經(jīng)過(guò)一段時(shí)間的監(jiān)控與準(zhǔn)備過(guò)程,一定程度上保障了第2個(gè)里程碑的順利實(shí)現(xiàn),保障了6位記錄編號(hào)的成功投產(chǎn)。開(kāi)啟6位開(kāi)關(guān)后,由于系統(tǒng)內(nèi)產(chǎn)生了真正6位PNR,屏幕輸出/報(bào)文中的顯示情況有一些新的變化。
對(duì)于屏幕輸出類(lèi),與第1個(gè)里程碑時(shí)格式基本一致。區(qū)別是出現(xiàn)了真正的6位PNR,如圖6所示。
圖6 屏幕輸出PNR格式Fig.6 PNR format on screen output
對(duì)于通用報(bào)文類(lèi),依然采用左對(duì)齊方式,由于出現(xiàn)了真正的6位記錄編號(hào),格式與第1個(gè)里程碑時(shí)有所不同。格式變化如圖7所示。
圖7 報(bào)文中的PNR格式Fig.7 PNR format in message
本文相關(guān)工作未等5位記錄編號(hào)自然消亡,在合適時(shí)間,開(kāi)通了大文件功能,并開(kāi)啟第2個(gè)大文件,實(shí)現(xiàn)訂座系統(tǒng)內(nèi)全6位記錄編號(hào),系統(tǒng)內(nèi)只存在6位記錄編號(hào)PNR。在大文件依次開(kāi)啟時(shí),PNR記錄編號(hào)將依次使用新的首字母與之對(duì)應(yīng)。ICS依次使用M、N、P、Q、R、S、X、Y 共 8個(gè)字符作首字母;CRS依次使用 H、J、K、L、B、C、G、Z 共 8 個(gè)字符作首字母。
使用該方案,研究組成功完成了中國(guó)民航訂座系統(tǒng)PNR記錄編號(hào)由5位到6位的升級(jí)工作。不僅實(shí)現(xiàn)了5位到6位的平緩過(guò)渡,而且最大程度地保障了系統(tǒng)的穩(wěn)定運(yùn)行,也將對(duì)周邊系統(tǒng)的影響降到了最低。該方案具有以下優(yōu)勢(shì):
1)實(shí)現(xiàn)了旅客訂座數(shù)據(jù)庫(kù)容量擴(kuò)容 PNR記錄編號(hào)由5位擴(kuò)充至6位,啟動(dòng)大文件機(jī)制,解決了物理存儲(chǔ)文件用度瓶頸,擴(kuò)充了系統(tǒng)訂座信息存儲(chǔ)量,達(dá)到8×16 M(13416萬(wàn)個(gè)),保障了未來(lái)相當(dāng)長(zhǎng)時(shí)間內(nèi)旅客量增長(zhǎng)的需要,對(duì)航空公司航班正常銷(xiāo)售、旅客正常出行具有重要的意義。
2)保障了系統(tǒng)運(yùn)行穩(wěn)定 采用漸進(jìn)的擴(kuò)容方案,以及可同時(shí)支持多個(gè)階段的程序修改方案;減少了程序上線(xiàn)次數(shù),并有足夠長(zhǎng)的時(shí)間持續(xù)驗(yàn)證安全性,降低了系統(tǒng)運(yùn)行風(fēng)險(xiǎn),滿(mǎn)足了安全生產(chǎn)要求。
3)保障了周邊系統(tǒng)平穩(wěn)過(guò)渡 采用本方案極大地降低了對(duì)周邊系統(tǒng)的影響,使其有足夠長(zhǎng)的時(shí)間改造升級(jí),降低了全行業(yè)出現(xiàn)系統(tǒng)風(fēng)險(xiǎn)的概率。
4)對(duì)外航/GDS全面支持 采用本方案為外航與GDS預(yù)留了足夠長(zhǎng)的改造時(shí)間,以及使用參數(shù)預(yù)防控制措施,降低了系統(tǒng)升級(jí)對(duì)外航與GDS系統(tǒng)帶來(lái)的影響,使其平緩過(guò)渡,保障了航空公司外航銷(xiāo)售收益。
本文對(duì)民航訂座系統(tǒng)PNR容量擴(kuò)容、PNR升位工作進(jìn)行了研究,提出了5/6位平緩過(guò)渡系統(tǒng)改造方案,以及采用參數(shù)控制不同階段、配合周邊系統(tǒng)的具體實(shí)施方案。方案的實(shí)施可實(shí)現(xiàn)PNR容量擴(kuò)容,且將風(fēng)險(xiǎn)影響降到了最低,保障了系統(tǒng)穩(wěn)定運(yùn)行;對(duì)周邊系統(tǒng)的影響也極低,并考慮了對(duì)外航/GDS的全面支持。
目前,該方案已在中國(guó)民航訂座系統(tǒng)進(jìn)行了實(shí)施,不僅有效緩解了當(dāng)前系統(tǒng)PNR容量將近飽和的情況,更將對(duì)系統(tǒng)的風(fēng)險(xiǎn)影響降到了最低,保障了安全生產(chǎn)的要求。它具有重要的研究?jī)r(jià)值,為以后的升位工作積累了寶貴的經(jīng)驗(yàn)。
[1]中國(guó)航信運(yùn)行中心.運(yùn)行中心性能分析平臺(tái)[EB/OL].[2010-11-10].http://172.17.23.163/1.asp?pagename=HVSTAT.
[2]Unisys Corporation.USAS Systems Control Operations Reference Manual[G].Blue Bell:Unisys Corporation,1997.
[3]Unisys Corporation.USAS Reservations(USAS RES)Database Programming Reference Manual[G].Blue Bell:Unisys Corporation,1997.
[4]IATA.Reservations Interline Message Procedures Passenger(AIRIMP)[G].33rd ed.Montreal-Geneva:IATA,2009.
[5]Unisys Corporation.USAS Message Switching(USAS MSG)Operations Reference Manual[G].Blue Bell:Unisys Corporation,1997.
[6]Unisys Corporation.ASCⅡFortran Programming Reference Manual-UP8244.4B[G].Blue Bell:Unisys Corporation,1991.