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