楊遠超
(中鐵第一勘察設計院集團有限公司,西安 710043)
基于Oracle數據庫的鐵路勘測設計一體化數據管理
楊遠超
(中鐵第一勘察設計院集團有限公司,西安 710043)
結合某鐵路勘測設計一體化平臺的建設,通過分析鐵路勘測設計行業數據存儲與管理的需求,歸納出數據的特點和組織方式,最后建立基于Oracle 11g的分布式數據庫系統,并在此基礎上實現基于數據的協同設計。
鐵路勘測設計一體化;數據庫設計;分布式
鐵路勘測設計一體化的發展方向是通過勘測設計整個生命周期內的全部數據在同一網絡環境下的動態維護、共享和集成應用,實現各階段、各專業之間的協同設計[1]。要實現協同設計,首先得解決數據的規范化,使數據的格式和接口標準統一,從而使其能在專業間順暢流通。建立了數據標準,就能按數據的空間特性建立索引,搭建勘測設計一體化平臺將各專業的數據和服務串聯起來,實現專業間的數據協同。同時勘測設計一體化平臺提供統一的坐標服務,直觀地反映各設計內容的空間關系,確保各專業數據空間相對關系的正確性。以此為基礎,就可以消除信息孤島,實現基于數據的協同設計。
鐵路勘測設計部門在信息化建設過程中,逐步形成了各設計專業的數據標準格式。這些標準雖能滿足業務需求,但由于缺乏總體規劃,數據跨專業直接使用的效率低下。如何將各專業的數據有效串聯起來,使專業間通過數據的無縫銜接快速流通,共同完成某一些單元或整個鐵路項目的設計,是實現鐵路勘測設計一體化需要解決的首要難題。
本文通過分析鐵路勘測設計各專業數據的特點和組織方式,闡述基于Oracle數據庫實現鐵路勘測設計一體化數據的有效管理,給出其實現的關鍵點及解決方案。
2.1 數據的分類
專業設計成果數據可歸納為兩類:文件類數據和屬性表數據。文件類數據是指以各種文件格式存儲的專業勘測設計數據,包括各類圖片、圖形、文本、電子表格文件。它們要么因為技術條件限制不能拆分成更細微的數據單元,要么因為在現行的勘測設計技術條件下,沒有必要進一步拆分,因此在數據庫中都以二進制大字段(BLOB)對象進行存儲。導入數據庫時將文件轉換為二進制數據流,獲取數據時將其還原為對應格式的文件。屬性表類數據是指能用結構化的行、列進行細分,并在數據庫中以數據庫表格形式存儲的數據,可使用結構化查詢語言(SQL)直接檢索。
2.2 數據的分層管理
各專業按存儲的需要將各類接口數據分別歸入本專業的文件類和屬性表類。每一種接口數據就定義為一個數據層。如航測專業的1∶2 000地形圖、數字地面模型、正射影像都定義為3個文件類數據層,橋梁專業的橋梁用地圖、橋梁工點平面圖定義為文件類數據層,而其大中橋表、小橋涵表則定義為屬性表類數據層。
數據要在現存的各類專業設計軟件中傳輸,必須轉換為通用的格式,方便識別??刹捎肵ML文檔格式來描述數據層的定義,各專業軟件可以方便地基于這種通用文件格式開發接口,提供本專業的設計軟件使用。文件類和屬性表類數據的層定義如圖1所示。
其中文件類數據層包括文件編號、文件名稱、上傳日期、上傳人員編號、存儲格式編號、文件的坐標和里程索引、附注;屬性表類數據層包含數據表編號、上傳人員編號、上傳日期、所屬專業、附注等信息,還包括屬性表所有字段的字段名稱、字段類型、字段長度、是否主鍵、是否為空、字段值等信息。
2.3 數據的空間索引
坐標系可以歸納為兩類:地理坐標系和線路坐標系,勘察設計的各類成果數據,均可以通過它們標識。以地理坐標系來描述的勘測設計成果數據多為站前專業數據。站前專業提供的數據多為區域空間數據,如地形圖、地質圖等。這些數據的空間特性需要二維或三維坐標來描述。以線路坐標系來描述的勘測設計成果數據多為站后專業數據,此時線路已經選定,與鐵路相關數據的空間特性轉化為沿鐵路線的一維標識(即線路里程)。通過線路曲線和斷鏈信息,可以建立兩類坐標系的對應關系,將勘測設計成果數據按需轉換。
3.1 數據接口標準的確立
鐵路勘測設計涉及面廣,需要多專業協作完成,規范的確立是工作得以順利開展的基礎。各單項的專業設計,國家和行業標準都已經確立,各專業也一直在依照這些標準開展工作,沒有什么問題。但是涉及專業之間數據交換的標準,可能會因為各種原因而沒有確立。因此開展協同設計,首要任務就是解決數據接口標準問題。這項基礎工作筆者所在單位已經完成,并編制了相應的企業標準《各專業數據接口標準》和《各專業互提資料數據格式標準》,現已頒布實施,這就為勘測設計一體化的開展提供了依據。
3.2 建立分布式數據庫系統
以正式頒布的數據接口標準為藍本、勘測設計的業務邏輯為主線,在對各專業設計業務和流程進行需求分析的基礎上建立覆蓋鐵路設計各專業的Oracle分布式數據庫系統。分布式數據庫由一個全局數據庫和若干專業數據庫組成。全局數據庫存儲項目、方案、坐標系、專業、設計人員、用戶等具有全局屬性的數據,并以數據索引統領各專業數據庫,形成聯系。各專業建立自己的數據庫,存儲本專業的數據,并將數據索引信息注冊到全局數據庫,便于其他專業查找。
3.3 數據注冊
專業數據可分為文件類和屬性表類兩種類型的數據,在數據入庫前需要將各專業數據庫相關信息及其屬性表類型的數據表注冊到全局數據庫。在全局數據庫中建立文件類和屬性表類數據的注冊信息表,專業數據存入專業數據庫時,同時要在全局數據庫的注冊信息表中注冊其各類描述信息。應用系統獲取數據時,必須先通過查詢全局數據庫的注冊信息表獲取專業數據的描述信息,然后再根據此描述信息找到專業數據庫,并在專業數據庫中按圖索驥,獲取想要的專業數據,如圖2所示。
3.4 基于用戶消息的信息傳遞
在全局數據庫中建立用戶消息表,記錄發送用戶編號、接收用戶編號、項目編號、消息標題、消息內容、消息狀態、消息發送時間和消息附注等信息。在協同設計平臺提供消息傳遞功能,讓各專業的設計人員以項目為單位進行信息傳遞。比如A專業的設計人員完成本專業的設計,經過幾級審核后準備將成果提交下游專業的設計人員使用,則A專業的資料發布人員就可以發送一條用戶消息給對應的下游專業用戶,通告A專業的指定資料已經開放設計,可供使用。而下游專業的用戶在看到消息通知,取用A專業的指定資料后,也及時以消息通知A專業資料發布人員,完成一次接口資料交接的循環。同時,如果不同專業的設計人員在設計過程中需要進行溝通,也可以通過用戶消息功能進行信息的傳遞。這樣就使數據的交換和信息的傳遞都有暢通渠道,在統一的平臺下完成交互,實現基于數據的協同。
3.5 版本管理
由于鐵路設計是一個不斷細化的過程,各階段都要進行大量的方案比選,產生許多階段性的成果數據,這就需要對各階段的設計成果進行版本標識,使數據的來龍去脈清晰無誤,專業設計人員能輕松地獲取正確版本的設計數據。
(1)由“方案”表的字段“版本號”記錄一個線路方案設計的歷史軌跡,當方案設計穩定,開放設計后,其他專業以此方案的最終版本為藍本,展開專業設計,由此得到的專業設計成果資料也通過外鍵引用“方案”表的“方案編號”字段串聯起來,組成一套完整的鐵路設計方案。
(2)在全局數據庫建立版本表,記錄表格類數據的版本信息,包括版本對應數據表編號、版本上傳人員編號、方案編號、數據表版本號、版本上傳日期、版本數據的有效性、版本數據是否鎖定以及版本附注等信息。當對專業接口數據中的表格類數據進行開放設計,產生新的版本數據時,就可以通過往版本表中添加一條記錄信息,用來區分數據。
(3)接口資料在設計過程中的版本控制,由各專業建立接口資料的內部版本號控制,可以建立一個整數類型的版本控制字段和一個oracle序列來記錄其版本號的值。用版本號控制簡單方便,易于編程實現。
3.6 并發控制
在鐵路的協同設計環境下,就必須對同一數據資料有可能發生的并發訪問和修改有充分的了解,事先做好規劃,對并發狀態下各種極端的情況做出充分估計,并在訪問數據庫的應用程序編寫時做出相應的判斷及處理。
對于高并發量的系統,宜采用版本列形式的樂觀鎖定方法,為每個要考慮版本信息的表增加一個Oracle時間戳列,類型為TIMESTAMP,這個精確到微秒的數據類型能準確記錄數據的版本信息,并提供數據更新的時間信息。要實現樂觀并發控制,應用只需要驗證請求更新那一刻,數據表中這一時間戳列的值與最初讀出的值是否匹配,如果兩個值相等,就說明這一行在應用程序讀取后沒有其他人更新過,可以放心更新,不會發生更新丟失。反之,如果時間戳列的值與最初讀出的值不匹配,則說明在應用程序讀取數據后已經有別的用戶對其進行了修改,則必須在客戶端程序中確定應用下一步該怎么做。是讓最終用戶查詢這一行的新值,然后再重新開始事務提交,還是應該根據業務規則解決更新沖突,試圖合并這一列上兩個更新的值[2]。
3.7 權限控制
在全局數據庫中要建立用戶數據安全保障機制,保證專業間互提資料的安全性,保證數據流向與設計流程一致,可通過以下一些途徑實現。
通過應用程序權限驗證模塊來實現權限控制。通過應用程序驗證存儲在全局數據庫中的用戶表、權限表等一組權限控制基礎表,授權用戶訪問指定內容,是大部分數據庫應用采用的技術手段,在本項目中也宜使用。
各專業數據庫內的權限控制需要建立各類角色,通過角色對終端用戶授權來保障數據安全。建立四類角色:一般用戶角色(按項目建立,供普通設計人員使用)、接口資料發布用戶角色(按項目建立,供專業內的項目負責人如專冊、所總、處總等簽署發布本專業的接口資料)、專業程序編寫用戶角色(供本專業的程序員編寫基于此專業數據庫的應用程序時使用)、專業數據庫管理員角色(全面負責本專業數據庫維護的工作人員)。通過應用程序驗證的用戶,再由前端應用程序訪問層映射到數據庫內具有相應權限的用戶,通過它訪問數據庫,獲取數據。如圖3所示。
我單位在局域網內建立了原型系統,在銀西鐵路茂陵至慶城段選取了近130 km長的試驗段,基于Oracle數據庫軟件建立了航測、線路、橋隧等專業數據庫及全局數據庫,構建了分布式的數據庫系統,并編制了鐵路勘測設計一體化平臺軟件進行測試。測試結果表明,按照上文所述解決方案建立起來的鐵路勘測設計一體化平臺,能通過分發和共享對各專業勘測設計數據進行有效的管理,實現了基于數據的協同設計。下一步需要將所有涉及到的鐵路勘測設計專業納入一體化平臺系統,建立他們的專業數據庫,增加專業設計數據的數據量,增強局域網網絡負荷以檢測數據傳輸性能,通過不斷測試與改進,達到能在鐵路勘測設計項目中持續應用的目標。
[1] 周艷,王長進,朱慶,韓祖杰.支持協同設計的鐵路勘測設計基礎數據庫研究[J].鐵道勘察,2004(1):23-28.
[2] (美)科瑟瑞(Kothuri,R.)等著.Oracle Spatial空間信息管理——Oracle Database 11g[M].管會生,等,譯.北京:清華大學出版社,2003.
[3] 李桂芳.基于三維空間場景的鐵路選線技術研究[J].鐵道標準設計,2012(10):19-21,72.
[4] 孟存喜,鐘祥水,卞祖經.鐵路勘測設計一體化、智能化的研究與關鍵技術[J]. 鐵道標準設計,2006(S):212-214,219.
[5] 鄒逸江.客戶機/服務器的地圖復雜對象數據庫系統設計[J].測繪學報,1999,22(3):251-256.
[6] 郭明強,黃穎,謝忠.分布式環境下海量瓦片數據實時組織與調度策略研究[J].測繪通報,2013(4):25-28.
[7] 肖迎遠,劉云生,繆國瓊.分布式實時事務一階段實時提交[J].華中科技大學學報,2006,34(3):1-4.
[8] 石紅兵,鄭云,曾學貴.勘測設計一體化軟件開發過程中數據庫的設計[J].鐵道工程學報,2000(2):19-21.
[9] 黃鎮謹.協同設計中數據庫接口的設計與優化[J].廣西工學院學報,2006(3):82-85.
[10]汪享慶.鐵路設計院信息化工程建設探討[J].中國勘察設計,2006(6) :43-45.
[11]張雪平,殷國富,王偉.協同設計中工程數據庫并發控制研究[J].機械科學與技術,2006(3):345-347.
[12]王能斌.數據庫系統教程[M].北京:科學出版社,2002.
DataManagementUsedforIntegrationofRailwaySurveyandDesignBasedonOracleDatabase
YANG Yuan-chao
(China Railway First Survey and Design Institute Group Co., Ltd., Xi’an 710043, China)
In this study, in combination with the establishment of a database platform used for integration of railway survey and design, and after analysis on the demands of data storage and data management in railway survey and design industry, the data characteristics and organization form were summarized. Finally, the distributed database system based on Oracle 11g was built. On that basis, the collaborative design based on data can be implemented.
integration of railway survey and design; database design; distributed
2013-09-05
鐵一院科研項目“基于真實感場景的線路協同設計平臺研究”(院科12-01)
楊遠超(1979—),男,工程師,2002年畢業于西南交通大學攝影測量與遙感專業,工學學士,E-mail:12019608@qq.com。
1004-2954(2014)05-0008-04
U212
:A
10.13238/j.issn.1004-2954.2014.05.003