王鳳琳
(北京經(jīng)緯信息技術(shù)有限公司,北京 100081)
鐵路運(yùn)輸信息集成平臺(tái)的目標(biāo)是實(shí)現(xiàn)列車(chē)、車(chē)輛、貨物、機(jī)車(chē)、機(jī)車(chē)乘務(wù)員等信息的數(shù)據(jù)集中與共享,并實(shí)時(shí)掌握與動(dòng)態(tài)追蹤其位置和狀態(tài)、推算與預(yù)測(cè)其變化趨勢(shì),為實(shí)現(xiàn)精確調(diào)度指揮奠定基礎(chǔ),同時(shí)為貨運(yùn)電子商務(wù)和貨運(yùn)組織改革提供必要的技術(shù)支撐。
運(yùn)輸信息集成平臺(tái)建設(shè)過(guò)程中,中國(guó)鐵路總公司級(jí)(簡(jiǎn)稱(chēng):總公司級(jí))實(shí)時(shí)掌握各車(chē)站股道現(xiàn)車(chē)情況,以便精確組織運(yùn)輸生產(chǎn),是一項(xiàng)重要且迫切的需求。而鐵路運(yùn)輸當(dāng)前的實(shí)際情況是,股道現(xiàn)車(chē)數(shù)據(jù)除本車(chē)站外,僅由車(chē)站所在鐵路局實(shí)時(shí)掌握,鐵路總公司調(diào)度部?jī)H能通過(guò)各個(gè)鐵路局的現(xiàn)車(chē)系統(tǒng)查詢(xún)相關(guān)信息,無(wú)法從全路角度掌控所有在站車(chē)輛的位置、數(shù)量及空重狀態(tài),故如何在總公司級(jí)實(shí)時(shí)掌握并管理全路約60萬(wàn)輛股道現(xiàn)車(chē),是運(yùn)輸信息集成平臺(tái)建設(shè)中亟需解決的問(wèn)題。
本文旨在分析當(dāng)前股道現(xiàn)車(chē)同步應(yīng)用存在的主要問(wèn)題的基礎(chǔ)上,針對(duì)新的內(nèi)存數(shù)據(jù)庫(kù)技術(shù)進(jìn)行了學(xué)習(xí)與研究,并將其運(yùn)用于股道現(xiàn)車(chē)同步應(yīng)用測(cè)試,為應(yīng)用性能的提升提供了科學(xué)依據(jù)和有力支撐。
中國(guó)鐵路總公司(簡(jiǎn)稱(chēng):總公司)運(yùn)輸信息集成平臺(tái)股道現(xiàn)車(chē)同步應(yīng)用運(yùn)行在Unix操作系統(tǒng),使用Oracle數(shù)據(jù)庫(kù),運(yùn)用Pro*C編程語(yǔ)言,實(shí)現(xiàn)車(chē)站股道現(xiàn)車(chē)數(shù)據(jù)同步至總公司。全路股道現(xiàn)車(chē)數(shù)據(jù)龐大且實(shí)時(shí)變化,基于當(dāng)前的設(shè)備能力和技術(shù)水平,很難在總公司級(jí)做到真正意義上的同步,即每一輛車(chē)的變化狀態(tài)都實(shí)時(shí)反映在總公司運(yùn)輸信息集成平臺(tái)中。目前采用的方式是:利用MQ消息傳輸機(jī)制,各鐵路局每30 min按車(chē)站為單位以XML文件的形式上報(bào)局管內(nèi)車(chē)站股道現(xiàn)車(chē)數(shù)據(jù)至總公司集成平臺(tái),總公司接收文件并解析入數(shù)據(jù)庫(kù),以數(shù)據(jù)共享方式向相關(guān)應(yīng)用提供數(shù)據(jù)支持。
全路已實(shí)施車(chē)站系統(tǒng)的車(chē)站約6 000多個(gè),均需每30 min上報(bào)本站當(dāng)前股道現(xiàn)車(chē)數(shù)據(jù),具體包括車(chē)號(hào)、到達(dá)時(shí)間、到達(dá)股道、空重、始發(fā)站、終到站、貨物、車(chē)輛狀態(tài)等信息[1];對(duì)于當(dāng)前時(shí)間沒(méi)有任何車(chē)輛的車(chē)站,仍需上報(bào)股道現(xiàn)車(chē)報(bào)告,以便在總公司股道現(xiàn)車(chē)庫(kù)中清除上一時(shí)間點(diǎn)的車(chē)輛信息。頻繁的刪除和插入操作,使得總公司股道現(xiàn)車(chē)庫(kù)壓力較大,執(zhí)行效率較低。為此,根據(jù)各鐵路局報(bào)告數(shù)量,經(jīng)過(guò)估算測(cè)試,優(yōu)化為6個(gè)進(jìn)程并行處理,滿(mǎn)足30 min同步的要求,每處理30 min數(shù)據(jù)需大約12 min左右,即總公司數(shù)據(jù)與車(chē)站實(shí)際情況之間存在約40 min的時(shí)間差。時(shí)間差使得總公司與鐵路局?jǐn)?shù)據(jù)存在較大的不一致性,而提高兩級(jí)數(shù)據(jù)一致性的首要問(wèn)題是縮短數(shù)據(jù)同步時(shí)間間隔,提升數(shù)據(jù)處理能力。
內(nèi)存數(shù)據(jù)庫(kù)技術(shù)具有更快的數(shù)據(jù)讀取速度,能夠大大提升數(shù)據(jù)處理效率,且該項(xiàng)技術(shù)在鐵路互聯(lián)網(wǎng)余票查詢(xún)[2]、鐵路貨車(chē)追蹤[3]等應(yīng)用中已取得一定成效。經(jīng)過(guò)對(duì)目前主流的各類(lèi)內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)品進(jìn)行對(duì)比和分析,基于與既有應(yīng)用最大的兼容性,總公司運(yùn)輸信息集成平臺(tái)股道現(xiàn)車(chē)同步應(yīng)用選取了Oracle TimesTen內(nèi)存數(shù)據(jù)庫(kù),進(jìn)行了數(shù)據(jù)處理性能和高可用性方面的研究與測(cè)試。
Oracle內(nèi)存數(shù)據(jù)庫(kù)TimesTen 是一款針對(duì)內(nèi)存進(jìn)行了優(yōu)化的關(guān)系型數(shù)據(jù)庫(kù),它為應(yīng)用程序提供了即時(shí)響應(yīng)性和非常高的吞吐量。Oracle TimesTen作為高速緩存或嵌入式數(shù)據(jù)庫(kù)部署在應(yīng)用程序中,利用標(biāo)準(zhǔn)SQL 接口對(duì)完全位于物理內(nèi)存中的數(shù)據(jù)存儲(chǔ)進(jìn)行操作,對(duì)于大規(guī)模的查詢(xún)應(yīng)用非常有好處[4]。
目前,Oracle TimesTen在全球的客戶(hù)包括Dell[5]、美國(guó)美林銀行[6]、上海海關(guān)[7]等,擁有如此眾多的客戶(hù)群并得到業(yè)界的廣泛認(rèn)可,主要得益于以下幾項(xiàng)優(yōu)勢(shì)[8]:
(1)能夠和Oracle數(shù)據(jù)庫(kù)做無(wú)縫集成,數(shù)據(jù)可以在TimesTen和Oracle直接實(shí)現(xiàn)實(shí)時(shí)雙向流動(dòng);
(2)TimesTen可以做成多節(jié)點(diǎn)并行提供服務(wù)的模式,數(shù)據(jù)在多個(gè)TimesTen之間直接實(shí)現(xiàn)實(shí)時(shí)或非實(shí)時(shí)的傳輸,進(jìn)一步提高了系統(tǒng)的擴(kuò)展性和可靠性;
(3)TimesTen是符合RDBMS標(biāo)準(zhǔn)的獨(dú)立內(nèi)存數(shù)據(jù)庫(kù)服務(wù),支持SQL92,可運(yùn)行在Linux、Windows、AIX等操作系統(tǒng)平臺(tái)上,使用Java、.NET、 C、 C++、 Pro*C 等語(yǔ)言進(jìn)行應(yīng)用開(kāi)發(fā)。
基于以上幾點(diǎn),并結(jié)合總公司運(yùn)輸信息集成平臺(tái)股道現(xiàn)車(chē)同步應(yīng)用的特點(diǎn),運(yùn)行于Unix平臺(tái)、使用Oracle數(shù)據(jù)庫(kù)、應(yīng)用Pro*C語(yǔ)言、業(yè)務(wù)邏輯相對(duì)簡(jiǎn)單但要求快速響應(yīng),Oracle TimesTen內(nèi)存數(shù)據(jù)庫(kù)是合適的選擇。
本次測(cè)試的主要目的是驗(yàn)證固定場(chǎng)景下內(nèi)存數(shù)據(jù)庫(kù)在數(shù)據(jù)處理上的效率,為評(píng)估內(nèi)存數(shù)據(jù)庫(kù)技術(shù)在運(yùn)輸信息集成平臺(tái)的使用提供依據(jù)。
3.2.1 軟硬件環(huán)境配置
測(cè)試環(huán)境的軟硬件配置情況如表1所示,兩臺(tái)主機(jī)分別安裝TimesTen11,建立Active Standby Pair主從復(fù)制關(guān)系,使用Oracle Cluster Ware作為集群管理軟件,監(jiān)控TimesTen及錯(cuò)誤切換、監(jiān)控應(yīng)用和文件系統(tǒng)及應(yīng)用和文件系統(tǒng)切換。系統(tǒng)邏輯架構(gòu)如圖1所示。測(cè)試文件位于/u01/testdata目錄,TimesTen軟件安裝于/home/oracle/TimesTen/tt1122目錄,測(cè)試程序和腳本位于/home/oracle/poc目錄。
3.2.2 測(cè)試數(shù)據(jù)說(shuō)明
表1 軟硬件環(huán)境配置
圖1 系統(tǒng)邏輯架構(gòu)
測(cè)試所用數(shù)據(jù)是實(shí)際業(yè)務(wù)數(shù)據(jù)文件的備份,為XML格式文件,描述各鐵路局上報(bào)的車(chē)站股道現(xiàn)車(chē)情況,一個(gè)車(chē)站對(duì)應(yīng)一個(gè)或多個(gè)文件,沒(méi)有現(xiàn)車(chē)的車(chē)站上報(bào)一個(gè)只有文件頭沒(méi)有文件內(nèi)容的空文件。為便于測(cè)試,將備份文件整理為數(shù)據(jù)集合A和數(shù)據(jù)集合B:數(shù)據(jù)集A是從隨機(jī)備份的實(shí)際業(yè)務(wù)數(shù)據(jù)的全集中經(jīng)過(guò)篩選后,模擬全路各站每30 min上報(bào)的一輪數(shù)據(jù)的集合,并比照目前股道現(xiàn)車(chē)同步應(yīng)用的實(shí)際情況,按鐵路局分6個(gè)目錄保存,分別為gdcl_1、gdcl_2、……、gdcl_6;數(shù)據(jù)集B是在A的基礎(chǔ)上,按鐵路局將文件分為12個(gè)目錄保存,分別為gdcl_1、gdcl_2、……、gdcl_12。同時(shí),為了保證測(cè)試的準(zhǔn)確性,以股道現(xiàn)車(chē)實(shí)際生產(chǎn)數(shù)據(jù)表BGDCARA中的數(shù)據(jù)作為測(cè)試基礎(chǔ)數(shù)據(jù)。
表2 測(cè)試數(shù)據(jù)集基本情況描述
測(cè)試數(shù)據(jù)集A和B中文件數(shù)量和占用空間大小描述如表2所示。鐵路局上報(bào)的股道車(chē)輛文件格式和股道車(chē)輛數(shù)據(jù)表結(jié)構(gòu),如圖2和圖3所示。
圖2 股道現(xiàn)車(chē)文件格式
圖3 股道現(xiàn)車(chē)數(shù)據(jù)表結(jié)構(gòu)
3.2.3 測(cè)試步驟
(1)將Oracle數(shù)據(jù)庫(kù)中基礎(chǔ)數(shù)據(jù)表的數(shù)據(jù)導(dǎo)入到內(nèi)存數(shù)據(jù)庫(kù)表BGDCARA中。
(2)應(yīng)用按時(shí)序分別讀取各文件夾中的報(bào)文,進(jìn)行XML報(bào)文解析,并更新內(nèi)存數(shù)據(jù)庫(kù)表BGDCARA。處理過(guò)程需保留日志備查。
(3)處理某一車(chē)站報(bào)告時(shí),需刪除數(shù)據(jù)庫(kù)表中該車(chē)站對(duì)應(yīng)的所有車(chē)輛,解析文件中每一輛車(chē)的詳細(xì)信息,插入到內(nèi)存數(shù)據(jù)庫(kù)表BGDCARA中。
(4)正確處理完畢的文件直接刪除;如果文件校驗(yàn)有錯(cuò),將該文件保存到錯(cuò)誤文件目錄。
(5)測(cè)試完畢,將內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)表BGDCARA的數(shù)據(jù)導(dǎo)出到Oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)表。
3.3.1 性能測(cè)試
性能測(cè)試是為了驗(yàn)證系統(tǒng)是否能夠達(dá)到用戶(hù)提出的性能指標(biāo),同時(shí)發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,起到優(yōu)化系統(tǒng)的目的[9]。本測(cè)試僅涉及dp29-08一臺(tái)主機(jī),基于數(shù)據(jù)集A和B,以O(shè)CI和Java兩種方式分別進(jìn)行性能測(cè)試,以驗(yàn)證Oracle TimesTen數(shù)據(jù)處理能力。
(1)測(cè)試準(zhǔn)備
a.連接TimesTen數(shù)據(jù)庫(kù)gdcl1,比照集成平臺(tái)生產(chǎn)環(huán)境中股道車(chē)輛Oracle數(shù)據(jù)表結(jié)構(gòu)和索引在TimesTen數(shù)據(jù)庫(kù)中新建數(shù)據(jù)表BGDCARA。
b.將Oracle數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入TimesTen,記錄表行數(shù)。數(shù)據(jù)成功通過(guò)TimesTen緩存特性從Oracle數(shù)據(jù)庫(kù)導(dǎo)入,記錄數(shù)為626 610。
c.在/u01/testdata目錄下新建子目錄A和B,解壓測(cè)試數(shù)據(jù)集A到/u01/testdata/A目錄下,解壓測(cè)試數(shù)據(jù)集B到/u01/testdata/B目錄下。
(2)OCI測(cè)試
a. A數(shù)據(jù)集測(cè)試。比照既有生產(chǎn)環(huán)境下的模式,啟動(dòng)6個(gè)Pro*C進(jìn)程分別同時(shí)處理數(shù)據(jù)集6個(gè)文件夾中的數(shù)據(jù),以最后完成的進(jìn)程運(yùn)行時(shí)間作為總執(zhí)行時(shí)間。為了保證測(cè)試的準(zhǔn)確性,共進(jìn)行10輪測(cè)試,記錄每次運(yùn)行時(shí)間,并計(jì)算一輪平均運(yùn)行時(shí)間為16 s。登錄TimesTen gdcl1數(shù)據(jù)庫(kù),查看數(shù)據(jù)表BGDCARA中的數(shù)據(jù)及記錄數(shù)。數(shù)據(jù)表總記錄數(shù)為620 356,各字段顯示正確。/u01/testdata/A目錄下正確處理完畢的XML文件成功刪除,解析校驗(yàn)不正確的文件共4個(gè),被挪至/u01/testdata/errdata目錄下。
b. B數(shù)據(jù)集測(cè)試。與既有生產(chǎn)環(huán)境下的模式不同,測(cè)試啟動(dòng)12個(gè)Pro*C進(jìn)程分別同時(shí)處理數(shù)據(jù)集12個(gè)文件夾中的數(shù)據(jù),以最后完成的進(jìn)程運(yùn)行時(shí)間作為總執(zhí)行時(shí)間。為了保證測(cè)試的準(zhǔn)確性,共進(jìn)行10輪測(cè)試,記錄每次運(yùn)行時(shí)間,并計(jì)算一輪平均運(yùn)行時(shí)間為18 s。登錄TimesTen gdcl1數(shù)據(jù)庫(kù),查看數(shù)據(jù)表BGDCARA中的數(shù)據(jù)及記錄數(shù)。數(shù)據(jù)表總記錄數(shù)為620 356,各字段顯示正確。/u01/testdata/B目錄下正確處理完畢的XML文件成功刪除,解析校驗(yàn)不正確的文件共4個(gè),被挪至/u01/testdata/errdata目錄下。
(3)Java測(cè)試
a. A數(shù)據(jù)集測(cè)試。比照既有生產(chǎn)環(huán)境下的模式,啟動(dòng)6個(gè)Java進(jìn)程分別同時(shí)處理數(shù)據(jù)集6個(gè)文件夾中的數(shù)據(jù),以最后完成的進(jìn)程運(yùn)行時(shí)間作為總執(zhí)行時(shí)間。為了保證測(cè)試的準(zhǔn)確性,共進(jìn)行10輪測(cè)試,記錄每次運(yùn)行時(shí)間,并計(jì)算一輪平均運(yùn)行時(shí)間為22 s。登錄TimesTen gdcl1數(shù)據(jù)庫(kù),查看數(shù)據(jù)表BGDCARA中的數(shù)據(jù)及記錄數(shù)。數(shù)據(jù)表總記錄數(shù)為620 356,各字段顯示正確。/u01/testdata/A目錄下正確處理完畢的XML文件成功刪除,解析校驗(yàn)不正確的文件共4個(gè),被挪至/u01/testdata/errdata目錄下。
b. B數(shù)據(jù)集測(cè)試。與既有生產(chǎn)環(huán)境下的模式不同,測(cè)試啟動(dòng)12個(gè)Java進(jìn)程分別同時(shí)處理數(shù)據(jù)集12個(gè)文件夾中的數(shù)據(jù),以最后完成的進(jìn)程的運(yùn)行時(shí)間作為總執(zhí)行時(shí)間。為了保證測(cè)試的準(zhǔn)確性,共進(jìn)行10輪測(cè)試,記錄每次運(yùn)行時(shí)間,并計(jì)算一輪平均運(yùn)行時(shí)間為24 s。登錄TimesTen gdcl1數(shù)據(jù)庫(kù),查看數(shù)據(jù)表BGDCARA中的數(shù)據(jù)及記錄數(shù)。數(shù)據(jù)表總記錄數(shù)為620 356,各字段顯示正確。/u01/testdata/B目錄下正確處理完畢的XML文件成功刪除,解析校驗(yàn)不正確的文件共4個(gè),被挪至/u01/testdata/errdata目錄下。
(4)測(cè)試結(jié)果
性能測(cè)試結(jié)果如表3和表4所示。表3是測(cè)試過(guò)程中執(zhí)行DELETE和INSERT操作的次數(shù),表4匯總了各類(lèi)測(cè)試方式的處理效率。從兩個(gè)表中可以看出,OCI方式數(shù)據(jù)處理效率明顯高于Java方式;頻繁的DELETE與INSERT操作并未對(duì)數(shù)據(jù)處理效率有明顯影響;當(dāng)并行進(jìn)程數(shù)由6調(diào)整到12時(shí),OCI與Java 方式的處理時(shí)間均有所增加,這說(shuō)明并行度也有一個(gè)平衡點(diǎn),并非并發(fā)度越高越好。
3.3.2 高可用性測(cè)試
本文高可用性測(cè)試采用主從方式,即主機(jī)工作,備機(jī)處于監(jiān)控準(zhǔn)備狀況,當(dāng)主機(jī)宕機(jī)時(shí),備機(jī)接管主機(jī)的一切工作,待主機(jī)恢復(fù)正常后,按使用者的設(shè)定以自動(dòng)或手動(dòng)方式將服務(wù)切換到主機(jī)上運(yùn)行,數(shù)據(jù)的一致性通過(guò)共享存儲(chǔ)系統(tǒng)解決[10]。
表3 數(shù)據(jù)表操作統(tǒng)計(jì)表
表4 處理效率匯總表
本測(cè)試涉及dp29-08和dp29-07兩臺(tái)主機(jī),數(shù)據(jù)庫(kù)為gdcl1(dp29-08)和gdcl2(dp29-07),目的是為驗(yàn)證TimesTen對(duì)業(yè)務(wù)連續(xù)性的支持。
(1)測(cè)試準(zhǔn)備
a.清空dp29-08主機(jī)gdcl1數(shù)據(jù)庫(kù)BGDCARA數(shù)據(jù)表中的測(cè)試數(shù)據(jù);在主機(jī)dp29-07 gdcl2數(shù)據(jù)庫(kù)中新建數(shù)據(jù)表BGDCARA。
b.從Oracle數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到gdcl1,記錄數(shù)為626 610,登錄gdcl2可以看到相同記錄數(shù),確認(rèn)兩個(gè)數(shù)據(jù)庫(kù)之間數(shù)據(jù)復(fù)制正常。
c.為便于測(cè)試,將6個(gè)文件夾中的數(shù)據(jù)匯總到一個(gè)文件夾中,以O(shè)IC方式啟動(dòng)一個(gè)應(yīng)用進(jìn)程處理數(shù)據(jù)。
(2)高可用性測(cè)試之模擬內(nèi)存數(shù)據(jù)庫(kù)故障
a.啟動(dòng)應(yīng)用,默認(rèn)連接位于主機(jī)dp29-08的數(shù)據(jù)庫(kù)gdcl1,進(jìn)程運(yùn)行正常,實(shí)時(shí)往數(shù)據(jù)表中寫(xiě)入記錄。模擬內(nèi)存數(shù)據(jù)庫(kù)故障,手動(dòng)Kill數(shù)據(jù)庫(kù)守護(hù)進(jìn)程,應(yīng)用立即檢測(cè)到數(shù)據(jù)庫(kù)錯(cuò)誤,并成功切換至gdcl2數(shù)據(jù)庫(kù)繼續(xù)處理文件、插入數(shù)據(jù)。
b.文件全部處理完成后,檢查兩數(shù)據(jù)庫(kù)表中記錄數(shù)。gdcl2數(shù)據(jù)庫(kù)表中記錄數(shù)為620 356,gdcl1數(shù)據(jù)庫(kù)表中記錄數(shù)為379 703,為數(shù)據(jù)庫(kù)gdcl1故障之前應(yīng)用寫(xiě)入數(shù)據(jù)表的記錄數(shù)。
c.重新啟動(dòng)數(shù)據(jù)庫(kù)gdcl1,復(fù)制關(guān)系自動(dòng)建立,最終gdcl1中的數(shù)據(jù)由379 703變?yōu)?20 356,兩數(shù)據(jù)庫(kù)表數(shù)據(jù)完全一致。
(3)高可用性測(cè)試之模擬主機(jī)故障
a.啟動(dòng)應(yīng)用,默認(rèn)連接位于主機(jī)dp29-08的數(shù)據(jù)庫(kù)gdcl1,進(jìn)程運(yùn)行正常,實(shí)時(shí)往數(shù)據(jù)表中寫(xiě)入記錄。模擬主機(jī)dp29-08故障,reboot重啟主機(jī),應(yīng)用停頓約幾十秒后檢測(cè)到錯(cuò)誤,并成功切換到gdcl2數(shù)據(jù)庫(kù)繼續(xù)處理文件、插入數(shù)據(jù)。
b.文件全部處理完成后,檢查兩數(shù)據(jù)庫(kù)表中記錄數(shù)。gdcl2數(shù)據(jù)庫(kù)表中記錄數(shù)為620 356,gdcl1數(shù)據(jù)庫(kù)表中記錄數(shù)為268 915,為主機(jī)dp29-08重啟之前應(yīng)用寫(xiě)入數(shù)據(jù)表的記錄數(shù)。
c.主機(jī)dp29-08重啟后,啟動(dòng)數(shù)據(jù)庫(kù)gdcl1,復(fù)制關(guān)系自動(dòng)建立,最終gdcl1中的數(shù)據(jù)由268 915變?yōu)?20 356,兩數(shù)據(jù)庫(kù)表數(shù)據(jù)完全一致。
(4)測(cè)試結(jié)果
從表5匯總情況可知,無(wú)論數(shù)據(jù)庫(kù)故障還是主機(jī)故障,應(yīng)用均無(wú)中斷,都可無(wú)縫切換到備機(jī)數(shù)據(jù)庫(kù),繼續(xù)處理數(shù)據(jù),并在故障恢復(fù)后,主備機(jī)數(shù)據(jù)庫(kù)可自動(dòng)恢復(fù)復(fù)制關(guān)系,保證主備機(jī)數(shù)據(jù)庫(kù)表數(shù)據(jù)的完整性和一致性。該測(cè)試證明了Oracle TimesTen具有很好的高可用性,為業(yè)務(wù)處理的連續(xù)性提供了有力的保證。
表5 高可用性測(cè)試結(jié)果匯總表
通過(guò)本次測(cè)試,可以看到使用Oracle TimesTen內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行鐵路局股道現(xiàn)車(chē)數(shù)據(jù)同步的處理效率比Oracle數(shù)據(jù)庫(kù)本身有了質(zhì)的飛躍,處理一輪數(shù)據(jù)所需時(shí)間從12 min縮短到16 s,提升了約45倍,完全能夠?qū)崿F(xiàn)在總公司實(shí)時(shí)掌握車(chē)站車(chē)輛的現(xiàn)場(chǎng)情況。TimesTen的高可用性,更有力保證了業(yè)務(wù)處理的連續(xù)性和數(shù)據(jù)的完整性。同時(shí),由于TimesTen支持SQL92并支持 Pro*C語(yǔ)言進(jìn)行應(yīng)用開(kāi)發(fā),使得本次OCI測(cè)試應(yīng)用程序修改量不大,僅做了部分適應(yīng)性修改,程序主體基本沿用目前生產(chǎn)環(huán)境中的既有應(yīng)用,便于開(kāi)發(fā)運(yùn)維人員學(xué)習(xí)使用。
因此,使用Oracle TimesTen內(nèi)存數(shù)據(jù)庫(kù)提升股道現(xiàn)車(chē)同步應(yīng)用的性能是可行的解決方案。