朱小龍 ,張興波 ,趙麗敏 ,陸 晨
(1.華北計(jì)算機(jī)系統(tǒng)工程研究所 研究生部,北京 100083;2.北京國(guó)際系統(tǒng)控制有限公司,北京 100083;3.德州學(xué)院 計(jì)算機(jī)系,山東 德州253300)
軌道交通綜合監(jiān)控系統(tǒng)是原有各個(gè)單獨(dú)機(jī)電系統(tǒng)的應(yīng)用集成,具有多子站、多子系統(tǒng)和地理分布分散的結(jié)構(gòu)特點(diǎn)。其主要功能包括對(duì)設(shè)備的集中監(jiān)控和子系統(tǒng)之間的協(xié)調(diào)聯(lián)動(dòng),一般綜合監(jiān)控系統(tǒng)由電力(PSCADA)、信號(hào)(SIG)、環(huán)控(BAS)、乘客信息(PIS)、乘客廣播(PA)、視頻監(jiān)控(CCTV)、火災(zāi)報(bào)警(FAS)、售檢票(AFC)、門(mén)禁(ACS)和屏蔽門(mén)(PSD)等子系統(tǒng)組成。
數(shù)據(jù)庫(kù)是軌道交通綜合監(jiān)控系統(tǒng)各種應(yīng)用的基礎(chǔ),是數(shù)據(jù)交換和共享信息的直接載體。使用MySQL Cluster數(shù)據(jù)庫(kù)集群既能滿(mǎn)足系統(tǒng)較強(qiáng)實(shí)時(shí)性和高可用性的要求(NDB存儲(chǔ)引擎采用內(nèi)存表和無(wú)單點(diǎn)故障設(shè)計(jì)),又具有低成本、易擴(kuò)展的優(yōu)點(diǎn)。
MySQL Cluster由若干個(gè)主機(jī)中內(nèi)存數(shù)據(jù)庫(kù)組成集群。各個(gè)主機(jī)之間無(wú)共享結(jié)構(gòu),降低了分布式系統(tǒng)的硬件需求。在MySQL Cluster中,有3種類(lèi)型的節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)表示為一個(gè)服務(wù)進(jìn)程。MySQL Cluster結(jié)構(gòu)圖如圖1所示。
管理節(jié)點(diǎn):集群管理服務(wù)器,負(fù)責(zé)配置系統(tǒng)參數(shù)、管理節(jié)點(diǎn)的啟動(dòng)和停止、運(yùn)行備份。節(jié)點(diǎn)中存儲(chǔ)了數(shù)據(jù)庫(kù)集群的整體配置信息,它必須在其他節(jié)點(diǎn)進(jìn)程啟動(dòng)之前啟動(dòng)。
數(shù)據(jù)節(jié)點(diǎn):用于存儲(chǔ)集群的數(shù)據(jù),集群的數(shù)據(jù)以數(shù)據(jù)組(Data Group)的形式存儲(chǔ)在數(shù)據(jù)節(jié)點(diǎn)上,一個(gè)數(shù)據(jù)組中包含NoOfReplica個(gè)數(shù)據(jù)節(jié)點(diǎn),這些節(jié)點(diǎn)互為副本,數(shù)據(jù)組中單個(gè)副本節(jié)點(diǎn)故障不影響數(shù)據(jù)庫(kù)的正常使用。在集群中數(shù)據(jù)組按數(shù)據(jù)節(jié)點(diǎn)的nodeID順序排序來(lái)劃分,NoOfReplica取值范圍為1~4,目前NDB只支持取值1~2。
圖1 MySQL Cluster結(jié)構(gòu)圖
SQL節(jié)點(diǎn):客戶(hù)端和外部API訪(fǎng)問(wèn)集群數(shù)據(jù)的接口服務(wù)器(MySQL Server)??筛鶕?jù)不同應(yīng)用的需求靈活配置和構(gòu)造,如讀寫(xiě)分離和負(fù)載均衡等。
MySQL Cluster集群支持異步復(fù)制。復(fù)制結(jié)構(gòu)中包含主 服 務(wù) 器 (Master Server)和 從 服 務(wù) 器 (Slave Server), 數(shù)據(jù)和操作由主服務(wù)器復(fù)制到從服務(wù)器中。NDB二進(jìn)制日志接口線(xiàn)程運(yùn)行在主、從服務(wù)器兩端將數(shù)據(jù)庫(kù)的變化存儲(chǔ)到二進(jìn)制格式的日志文件中,并通過(guò)復(fù)制通道,將主服務(wù)器的變化保存到從服務(wù)器中。集群復(fù)制如圖2所示。
在綜合監(jiān)控系統(tǒng)中,數(shù)據(jù)庫(kù)平臺(tái)需要提供的數(shù)據(jù)功能包括:存儲(chǔ)設(shè)備及現(xiàn)場(chǎng)采集的實(shí)時(shí)狀態(tài)和信息,存儲(chǔ)設(shè)備及系統(tǒng)的配置參數(shù)(包括通信參數(shù)、設(shè)備信息、系統(tǒng)配置和權(quán)限配置等),存儲(chǔ)設(shè)備及系統(tǒng)的運(yùn)行記錄數(shù)據(jù)(包括設(shè)備遙測(cè)或遙信值記錄、操作記錄等)。
數(shù)據(jù)模型參考IEC-61970標(biāo)準(zhǔn),并根據(jù)軌道交通綜合監(jiān)控應(yīng)用的特點(diǎn)對(duì)公共對(duì)象接口模型CIM(Common Interface Model)做相應(yīng)的拓展設(shè)計(jì)。CIM是一個(gè)抽象模型,由描述系統(tǒng)的有關(guān)對(duì)象組成。這些對(duì)象又劃分成若干個(gè)邏輯包,每個(gè)邏輯包代表了整個(gè)系統(tǒng)模型的某個(gè)部分。核心包用于表示系統(tǒng)的核心結(jié)構(gòu)或構(gòu)件;拓?fù)浒糜诒硎緲?gòu)件之間的連接關(guān)系;運(yùn)營(yíng)包用于描述人員、權(quán)限、財(cái)務(wù)等運(yùn)營(yíng)關(guān)系;量測(cè)包和SCADA包用于描述通信、遙信、遙測(cè)、遙調(diào),遙控等結(jié)構(gòu)。數(shù)據(jù)模型組織圖如圖3所示。
(1)核心包(Core):包括車(chē)站類(lèi)、子系統(tǒng)類(lèi)、區(qū)域類(lèi)、設(shè)備類(lèi)、設(shè)備端子類(lèi)。車(chē)站對(duì)象表示軌道交通線(xiàn)上的車(chē)站,一般分為正線(xiàn)車(chē)站和車(chē)輛段兩種類(lèi)型。有站號(hào)、站名等信息。區(qū)域?qū)ο蟊硎镜乩淼膮^(qū)域位置,主要有站廳、站臺(tái)、通道、隧道區(qū)間、大小端機(jī)房等,詳盡的區(qū)域描述有利于提高車(chē)站的應(yīng)急處理效率。子系統(tǒng)對(duì)象表示機(jī)電系統(tǒng)的功能和職責(zé)分類(lèi),軌道交通綜合監(jiān)控中的子系統(tǒng)主要包括環(huán)控(BAS)、信號(hào)(SIG)、電力(PSCADA)、售檢票(AFC)、視頻監(jiān)控(CCTV)、乘客信息與廣播(PIS&PA)等,運(yùn)營(yíng)中各子系統(tǒng)各司其職,保證整個(gè)系統(tǒng)的正常運(yùn)行。設(shè)備對(duì)象描述設(shè)備的基本信息:設(shè)備編號(hào)、設(shè)備名稱(chēng)、車(chē)站、區(qū)域、子系統(tǒng)、設(shè)備類(lèi)型等。設(shè)備端子對(duì)象表示設(shè)備的連接屬性,一個(gè)設(shè)備可以對(duì)應(yīng)若干個(gè)設(shè)備連接端子。
(2)拓?fù)浒═opology):用來(lái)描述設(shè)備的連接屬性,如軌道、道岔的連接,電力線(xiàn)路的連接等。主要包括連接節(jié)點(diǎn)類(lèi)、拓?fù)涔?jié)點(diǎn)類(lèi)和拓?fù)鋶u類(lèi)。設(shè)備都是通過(guò)連接節(jié)點(diǎn)連接,如果在某個(gè)設(shè)備端子上存在多種連接方式(連接節(jié)點(diǎn)),則構(gòu)成拓?fù)涔?jié)點(diǎn),在同一時(shí)刻拓?fù)涔?jié)點(diǎn)上只有一種連接方式有效。若干個(gè)拓?fù)涔?jié)點(diǎn)則構(gòu)成一個(gè)拓?fù)鋶u,拓?fù)鋶u即為統(tǒng)籌的聯(lián)鎖區(qū)。
(3)運(yùn)營(yíng)包(Operation):包括員工、部門(mén)、權(quán)限等信息。其中用戶(hù)對(duì)象用來(lái)描述用戶(hù)的信息,部門(mén)對(duì)象用來(lái)描述運(yùn)營(yíng)層面職能部門(mén)的信息,權(quán)限對(duì)象則用于全局的用戶(hù)權(quán)限管理和系統(tǒng)權(quán)限認(rèn)證功能。
(4)量測(cè)和 SCADA 包(Measure&SCADA):量測(cè)和 SCADA包是系統(tǒng)的核心模塊,描述量測(cè)相關(guān)信息。通信對(duì)象和RTU對(duì)象表示SCADA通信的基本參數(shù),遙測(cè)類(lèi)是模擬量輸入,累計(jì)量輸入和狀態(tài)量輸入的父類(lèi)??刂祁?lèi)是設(shè)定點(diǎn)類(lèi)和狀態(tài)量輸出類(lèi)的父類(lèi)。每個(gè)控制對(duì)象和遙測(cè)對(duì)象需要對(duì)應(yīng)到具體的設(shè)備及設(shè)備端子上才具有實(shí)際的意義。
根據(jù)數(shù)據(jù)對(duì)象的信息和關(guān)系,將其映射為關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的數(shù)據(jù)模式。獨(dú)立性比較強(qiáng)的對(duì)象,映射為數(shù)據(jù)模式中的實(shí)體;對(duì)于依附于其他對(duì)象才有實(shí)際意義,或者具有一對(duì)一關(guān)系的對(duì)象,則映射為實(shí)體的屬性;而那些具有多對(duì)多關(guān)系的對(duì)象,則直接映射為數(shù)據(jù)模式中的關(guān)系。
軌道交通綜合監(jiān)控系統(tǒng)一般分成中心和車(chē)站兩層結(jié)構(gòu),主要的操作都在控制中心上完成,特殊情況下操作權(quán)限可以下放到車(chē)站,以便車(chē)站進(jìn)行就地控制。集群的數(shù)據(jù)節(jié)點(diǎn)分別設(shè)置在中心和車(chē)站,減輕系統(tǒng)的網(wǎng)絡(luò)通信負(fù)擔(dān),增加系統(tǒng)的可用性。另外,在控制中心一般還會(huì)設(shè)置一個(gè)備用中心,防止控制中心因服務(wù)器故障而失效。將備用中心配置成集群的數(shù)據(jù)復(fù)制,如果中心服務(wù)器發(fā)生故障,系統(tǒng)可以啟用中心備用的數(shù)據(jù)服務(wù)器,保證正常運(yùn)行。集群結(jié)構(gòu)圖如圖4所示。
圖4 集群結(jié)構(gòu)圖
MySQL Cluster數(shù)據(jù)庫(kù)集群有多個(gè)版本的安裝文件,本例中采用免安裝的Windows版本。這個(gè)版本的安裝過(guò)程比較簡(jiǎn)單,只需要拷貝程序文件和配置文件即可。默認(rèn) 的 程 序 集 文 件 的 路 徑 為 C:mysql或 C:Program FilesMySQLMySQL Server5.6。管理節(jié)點(diǎn)上需要的程序文件為(ndb_mgmd.exe和 ndb_mgm.exe,后者為可選項(xiàng)),配置文件config.ini中需要包含節(jié)點(diǎn)信息(主機(jī)名、IP地址和節(jié)點(diǎn)類(lèi)型等),數(shù)據(jù)存儲(chǔ)信息(數(shù)據(jù)存儲(chǔ)內(nèi)存和索引存儲(chǔ)內(nèi)存分配,數(shù)據(jù)文件和日志文件配置),數(shù)據(jù)組節(jié)點(diǎn)數(shù)量(NoOfReplica)等。數(shù)據(jù)節(jié)點(diǎn)上需要的程序文件是ndbd.exe或者ndbmtd.exe,配置文件中只需說(shuō)明集群連接屬性(ndb-connectstring=管理節(jié)點(diǎn)IP地址:端口號(hào),端口號(hào)默認(rèn)為1186)。SQL節(jié)點(diǎn)拷貝完全的免安裝文件,配置文件my.ini中只需說(shuō)明集群連接屬性和存儲(chǔ)引擎參數(shù)即可(ndbcluster ndb-connectstring=管理節(jié)點(diǎn) IP:1186)。 模型系統(tǒng)配置如表1所示。
主集群安裝完成后,使用MySQL Sever Windows安裝文件(msi文件)安裝中心備用數(shù)據(jù)庫(kù)。備用數(shù)據(jù)庫(kù)不采用MySQL Cluster集群結(jié)構(gòu),以防止由于集群管理節(jié)點(diǎn)故障而導(dǎo)致整個(gè)集群失效。設(shè)置備用數(shù)據(jù)庫(kù)為主集群的復(fù)制。
按上述步驟安裝數(shù)據(jù)庫(kù)集群,然后根據(jù)設(shè)計(jì)的數(shù)據(jù)模式建立數(shù)據(jù)庫(kù)和數(shù)據(jù)表。在實(shí)際應(yīng)用中不僅需要記錄量測(cè)和SCADA數(shù)據(jù)的實(shí)時(shí)測(cè)量值,還需要記錄其歷史運(yùn)行記錄,按照其特點(diǎn)分別創(chuàng)建參數(shù)庫(kù)SysPara、實(shí)時(shí)庫(kù)RealScada和歷史庫(kù)HisRecord 3個(gè)數(shù)據(jù)庫(kù)。參數(shù)庫(kù)包含核心包、運(yùn)營(yíng)包、量測(cè)包和SCADA包的通信鏈路表、RTU表、限值表、報(bào)警組表等信息;實(shí)時(shí)庫(kù)包含量測(cè)包和SCADA包的大部分具有實(shí)時(shí)內(nèi)容的部分以及實(shí)時(shí)報(bào)警表、拓?fù)浒膬?nèi)容;歷史庫(kù)主要是從實(shí)時(shí)庫(kù)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)和用戶(hù)操作記錄表等信息。將3個(gè)數(shù)據(jù)庫(kù)建立在集群的數(shù)據(jù)節(jié)點(diǎn)上,參數(shù)庫(kù)和歷史庫(kù)采用磁盤(pán)表存儲(chǔ),實(shí)時(shí)庫(kù)采用內(nèi)存表存儲(chǔ)。
數(shù)據(jù)庫(kù)平臺(tái)是綜合監(jiān)控系統(tǒng)開(kāi)發(fā)的基礎(chǔ),選用以上設(shè)計(jì)是因?yàn)镮EC-61970的公共數(shù)據(jù)接口模型具有良好的結(jié)構(gòu)性和規(guī)范性,以及MySQL Cluster數(shù)據(jù)庫(kù)軟件高實(shí)時(shí)性、高可用性和易拓展的優(yōu)點(diǎn)。實(shí)驗(yàn)過(guò)程中數(shù)據(jù)庫(kù)集群也表現(xiàn)出較好的性能,能夠滿(mǎn)足軌道交通綜合監(jiān)控系統(tǒng)的一般要求。但是在負(fù)載和性能方面,數(shù)據(jù)庫(kù)集群還有進(jìn)一步優(yōu)化的空間。
[1]金紫蘅.從雙機(jī)到四機(jī)中MySQL數(shù)據(jù)庫(kù)高可用性實(shí)現(xiàn)方法[J].中國(guó)科技信息,2011(16):91,96.
[2]程鵬,劉偉.電力SCADA系統(tǒng)運(yùn)行平臺(tái)的存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)研究與發(fā)展,2011,48(z1):132-136.
[3]張慎明,劉國(guó)定.IEC61970標(biāo)準(zhǔn)簡(jiǎn)介[J].電力系統(tǒng)自動(dòng)化,2002(14):1-6.
[4]唐漢明,翟振興,蘭麗華.深入淺出MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)、優(yōu)化與管理維護(hù)[M].北京:人民郵電出版社,2008.
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2014年13期