鄒鑫
(上海電氣自動(dòng)化集團(tuán)有限公司,上海 200023)
隨著城市化進(jìn)程的不斷推進(jìn),軌道交通在城市中的地位越來(lái)越重要,成為城市公共交通的主要形式之一。隨著軌道交通線路的不斷增加和運(yùn)行里程的不斷增長(zhǎng),軌道交通車輛的數(shù)量和種類也在不斷增加,這為軌道交通的維護(hù)和管理帶來(lái)了巨大的挑戰(zhàn)。
傳統(tǒng)的軌道交通維護(hù)和管理方式主要基于人工巡檢和定期檢修,效率低下、成本高昂。近年來(lái),智能化技術(shù)的快速發(fā)展,為軌道交通的維護(hù)和管理提供了新的思路和方法。其中,軌道交通智能維保和健康管理平臺(tái)的研發(fā)應(yīng)運(yùn)而生。
本文針對(duì)軌道交通智能維保和健康管理平臺(tái)中存儲(chǔ)數(shù)據(jù)的問(wèn)題,提出了一種基于樹(shù)形結(jié)構(gòu)的存儲(chǔ)方案。該方案可以有效地提高數(shù)據(jù)訪問(wèn)的效率和性能,更好地滿足軌道交通維護(hù)和管理的需求。
本文首先對(duì)軌道交通智能維保和健康管理平臺(tái)的發(fā)展現(xiàn)狀和存在的問(wèn)題進(jìn)行了分析,接著介紹了樹(shù)形結(jié)構(gòu)的存儲(chǔ)原理和設(shè)計(jì)方法。在此基礎(chǔ)上,通過(guò)試驗(yàn)驗(yàn)證了該存儲(chǔ)方案的性能和效率,并與傳統(tǒng)存儲(chǔ)方案進(jìn)行了比較分析。
結(jié)合軌道交通領(lǐng)域的樹(shù)形結(jié)構(gòu)是一種遞歸的數(shù)據(jù)結(jié)構(gòu),由一個(gè)根節(jié)點(diǎn)和若干個(gè)子樹(shù)構(gòu)成,每個(gè)子樹(shù)又由若干個(gè)節(jié)點(diǎn)組成。樹(shù)形結(jié)構(gòu)的特點(diǎn)在于,每個(gè)節(jié)點(diǎn)最多只有一個(gè)父節(jié)點(diǎn),但可以有多個(gè)子節(jié)點(diǎn)。樹(shù)形結(jié)構(gòu)廣泛應(yīng)用于計(jì)算機(jī)科學(xué)中,如數(shù)據(jù)庫(kù)系統(tǒng)、操作系統(tǒng)、編譯器等領(lǐng)域,可以有效地描述和存儲(chǔ)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)[1]。
樹(shù)形結(jié)構(gòu)的存儲(chǔ)方案主要包括兩種:鏈?zhǔn)酱鎯?chǔ)和順序存儲(chǔ)。鏈?zhǔn)酱鎯?chǔ)是通過(guò)指針連接每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn),形成一個(gè)鏈表結(jié)構(gòu);順序存儲(chǔ)是通過(guò)數(shù)組表示每個(gè)節(jié)點(diǎn),并使用下標(biāo)來(lái)描述節(jié)點(diǎn)之間的關(guān)系。兩種存儲(chǔ)方案各有優(yōu)劣,鏈?zhǔn)酱鎯?chǔ)可以動(dòng)態(tài)添加和刪除節(jié)點(diǎn),但存儲(chǔ)空間浪費(fèi);順序存儲(chǔ)可以有效利用存儲(chǔ)空間,但節(jié)點(diǎn)的添加和刪除需要移動(dòng)大量數(shù)據(jù)[2-3]。
在軌道交通智能維保和健康管理平臺(tái)中,由于數(shù)據(jù)的復(fù)雜性和數(shù)據(jù)量的大,鏈?zhǔn)酱鎯?chǔ)方式不適合該平臺(tái)的需求。因此采用順序存儲(chǔ)方式進(jìn)行數(shù)據(jù)存儲(chǔ)。
節(jié)點(diǎn)表中存儲(chǔ)了所有節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)標(biāo)識(shí)符、節(jié)點(diǎn)類型和節(jié)點(diǎn)位置信息等。關(guān)系表中存儲(chǔ)了節(jié)點(diǎn)之間的關(guān)系,包括父子關(guān)系和兄弟關(guān)系。
為了提高數(shù)據(jù)訪問(wèn)的效率,還對(duì)節(jié)點(diǎn)表進(jìn)行了索引優(yōu)化,并使用了分區(qū)表來(lái)降低查詢的時(shí)間復(fù)雜度。
樹(shù)形結(jié)構(gòu)存儲(chǔ)方案具有以下優(yōu)勢(shì)。
(1) 存儲(chǔ)結(jié)構(gòu)清晰:樹(shù)形結(jié)構(gòu)可以清晰地表示復(fù)雜數(shù)據(jù)的層次關(guān)系,方便數(shù)據(jù)的管理和查詢。
(2) 存儲(chǔ)空間利用率高:采用順序存儲(chǔ)方式可以有效利用存儲(chǔ)空間,避免鏈?zhǔn)酱鎯?chǔ)方式造成的存儲(chǔ)空間浪費(fèi)。
(3) 查詢效率高:樹(shù)形結(jié)構(gòu)查詢時(shí)具有很好的時(shí)間復(fù)雜度,可以快速定位到所需數(shù)據(jù)。
(4) 易于擴(kuò)展和維護(hù):樹(shù)形結(jié)構(gòu)可以方便地添加和刪除節(jié)點(diǎn),對(duì)于數(shù)據(jù)結(jié)構(gòu)的擴(kuò)展和維護(hù)非常便利。
軌道交通智能維保和健康管理平臺(tái)是指利用物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù),對(duì)軌道交通設(shè)備進(jìn)行智能監(jiān)測(cè)、故障預(yù)警、健康評(píng)估和維修管理的平臺(tái)。該平臺(tái)具有以下特點(diǎn)。
(1) 實(shí)時(shí)監(jiān)測(cè):通過(guò)各類傳感器和監(jiān)測(cè)設(shè)備,對(duì)軌道交通設(shè)備進(jìn)行實(shí)時(shí)監(jiān)測(cè)和數(shù)據(jù)采集。
(2) 故障預(yù)警:通過(guò)大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)算法,對(duì)軌道交通設(shè)備進(jìn)行故障預(yù)測(cè)和預(yù)警,提前發(fā)現(xiàn)和解決問(wèn)題。
(3) 健康評(píng)估:通過(guò)綜合分析設(shè)備數(shù)據(jù)和運(yùn)行情況,對(duì)軌道交通設(shè)備進(jìn)行健康評(píng)估,制定合理的維護(hù)策略。
(4) 維修管理:根據(jù)設(shè)備的健康狀況和運(yùn)行情況,合理安排維護(hù)計(jì)劃和維修人員,確保設(shè)備的安全穩(wěn)定運(yùn)行。
在軌道交通智能維保和健康管理平臺(tái)中,各類設(shè)備和監(jiān)測(cè)數(shù)據(jù)可以被視為樹(shù)形結(jié)構(gòu),設(shè)備可以被分為若干個(gè)子節(jié)點(diǎn),每個(gè)子節(jié)點(diǎn)又可以細(xì)分為更多的子節(jié)點(diǎn),形成了一個(gè)完整的樹(shù)形結(jié)構(gòu)。這種結(jié)構(gòu)方式可以非常清晰地描述軌道交通設(shè)備之間的層次關(guān)系和依賴關(guān)系,方便數(shù)據(jù)的管理和查詢。在該平臺(tái)中,可以將各類設(shè)備和監(jiān)測(cè)數(shù)據(jù)以樹(shù)形結(jié)構(gòu)的形式進(jìn)行存儲(chǔ)和管理,設(shè)備和監(jiān)測(cè)數(shù)據(jù)以節(jié)點(diǎn)的形式存儲(chǔ)在一個(gè)數(shù)組中,每個(gè)節(jié)點(diǎn)包含設(shè)備編號(hào)、設(shè)備名稱、父節(jié)點(diǎn)編號(hào)和子節(jié)點(diǎn)編號(hào)等信息。其中:父節(jié)點(diǎn)編號(hào)為0,表示該節(jié)點(diǎn)為根節(jié)點(diǎn),即設(shè)備的最高級(jí)別;子節(jié)點(diǎn)編號(hào)為0,表示該節(jié)點(diǎn)為葉子節(jié)點(diǎn),即該設(shè)備下沒(méi)有更多的子設(shè)備。
在該平臺(tái)中,可以通過(guò)遍歷樹(shù)形結(jié)構(gòu)來(lái)實(shí)現(xiàn)設(shè)備的查詢和管理。例如,可以通過(guò)深度優(yōu)先遍歷的方式,從根節(jié)點(diǎn)開(kāi)始遞歸遍歷所有子節(jié)點(diǎn),獲取設(shè)備和監(jiān)測(cè)數(shù)據(jù)的詳細(xì)信息。同時(shí),也可以通過(guò)修改節(jié)點(diǎn)信息的方式來(lái)實(shí)現(xiàn)設(shè)備的添加、刪除和修改,實(shí)現(xiàn)平臺(tái)的設(shè)備管理和數(shù)據(jù)管理等功能。
樹(shù)形結(jié)構(gòu)存儲(chǔ)方案的設(shè)計(jì)主要包括數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和存儲(chǔ)方式設(shè)計(jì)兩部分。
2.3.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
在樹(shù)形結(jié)構(gòu)存儲(chǔ)方案中,使用了基于物化路徑法的樹(shù)狀結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)。將每一個(gè)節(jié)點(diǎn)的路徑物化為一個(gè)字符串,并將該字符串作為該節(jié)點(diǎn)的唯一標(biāo)識(shí)符。同時(shí)還為每個(gè)節(jié)點(diǎn)添加了一個(gè)類型屬性,以區(qū)分不同類型的節(jié)點(diǎn)。
對(duì)于每個(gè)節(jié)點(diǎn),都存儲(chǔ)了其在樹(shù)狀結(jié)構(gòu)中的位置信息,包括父節(jié)點(diǎn)、子節(jié)點(diǎn)和兄弟節(jié)點(diǎn)。利用這些信息可以高效地進(jìn)行節(jié)點(diǎn)的查找和遍歷。表1~表6為整體數(shù)據(jù)結(jié)構(gòu)的具體設(shè)計(jì)應(yīng)用。
表1 車輛區(qū)域分類結(jié)構(gòu)數(shù)據(jù)表
表2 車輛區(qū)域分類不定字段結(jié)構(gòu)數(shù)據(jù)表
表3 車輛區(qū)域與功能關(guān)聯(lián)結(jié)構(gòu)數(shù)據(jù)表
表4 車輛功能分類結(jié)構(gòu)數(shù)據(jù)表
表5 車輛區(qū)域分類不定字段結(jié)構(gòu)數(shù)據(jù)表
表6 車輛車型結(jié)構(gòu)數(shù)據(jù)表
2.3.2 存儲(chǔ)方式設(shè)計(jì)
采用了關(guān)系型數(shù)據(jù)庫(kù)MySQL來(lái)存儲(chǔ)樹(shù)形結(jié)構(gòu)數(shù)據(jù),分別為節(jié)點(diǎn)表和關(guān)系表。節(jié)點(diǎn)表中存儲(chǔ)了所有節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)標(biāo)識(shí)符、節(jié)點(diǎn)類型和節(jié)點(diǎn)位置信息等,關(guān)系表中存儲(chǔ)了節(jié)點(diǎn)之間的關(guān)系,包括父子關(guān)系和兄弟關(guān)系。為了提高數(shù)據(jù)訪問(wèn)的效率,還對(duì)節(jié)點(diǎn)表進(jìn)行了索引優(yōu)化,并使用了分區(qū)表來(lái)降低查詢的時(shí)間復(fù)雜度。具體結(jié)構(gòu)數(shù)據(jù)節(jié)點(diǎn)關(guān)系如圖1所示。
2.3.3 數(shù)據(jù)訪問(wèn)設(shè)計(jì)
在樹(shù)形結(jié)構(gòu)存儲(chǔ)方案中,數(shù)據(jù)訪問(wèn)是非常重要的。需要設(shè)計(jì)一個(gè)高效的數(shù)據(jù)訪問(wèn)方式,以保證數(shù)據(jù)的快速訪問(wèn)和檢索。
采用了基于遞歸的遍歷方式來(lái)訪問(wèn)樹(shù)形結(jié)構(gòu)數(shù)據(jù)。通過(guò)遞歸遍歷父節(jié)點(diǎn)、子節(jié)點(diǎn)和兄弟節(jié)點(diǎn)的方式,實(shí)現(xiàn)了對(duì)整個(gè)樹(shù)形結(jié)構(gòu)的遍歷和訪問(wèn)。
同時(shí),還設(shè)計(jì)了一套靈活的查詢語(yǔ)言,支持多種不同的查詢操作。例如,可以根據(jù)節(jié)點(diǎn)類型、節(jié)點(diǎn)位置和節(jié)點(diǎn)屬性等信息進(jìn)行查詢,以滿足不同的數(shù)據(jù)訪問(wèn)需求。
數(shù)據(jù)訪問(wèn)具體執(zhí)行如下:
(1) 查詢節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
SET @path=(SELECT path FROM func_classification WHERE ‘name’ =‘車鉤’ AND model_sn_code=‘5C501’ );
SELECT * FROM func_classification WHERE path like CONCAT(@path,‘-%’)
(2) 查詢直屬子節(jié)點(diǎn)
SET @path=(SELECT path FROM func_classification WHERE ‘name’=‘車鉤’ AND model_sn_code =‘5C501’ );
SELECT * FROM func_classification WHERE path REGEXP CONCAT(‘^’,@path,‘-’,‘[0-9]$’)
(3) 查詢?nèi)我夤?jié)點(diǎn)的所有上級(jí)
SET @path=(SELECT path FROM func_classification WHERE ‘name` =‘全自動(dòng)車鉤’ AND model_sn_code=‘5C501’ );
SELECT * FROM func_classification WHERE @path LIKE CONCAT(path, ‘%’) AND path <>@path
(4) 新增數(shù)據(jù)節(jié)點(diǎn)關(guān)系維護(hù)
SET @parent_path=( SELECT path FROM func_classification WHERE ‘name` =‘車鉤’ AND model_sn_code=‘5C501’ );
INSERT INTO func_classification (path,node_name) VALUES (CONCAT(@parent_path,‘-’,LAST_INSERT_ID()+1),‘全自動(dòng)車鉤裝置’)
綜上所述,樹(shù)形結(jié)構(gòu)存儲(chǔ)方案具有良好的設(shè)計(jì)和實(shí)現(xiàn),能夠滿足軌道交通智能維保和健康管理平臺(tái)的數(shù)據(jù)存儲(chǔ)和訪問(wèn)需求。
本文的試驗(yàn)采用了軌道交通智能維保和健康管理平臺(tái)的數(shù)據(jù),包括車站信息、線路信息、車輛信息和設(shè)備信息等,共計(jì)約10萬(wàn)條記錄。在一臺(tái)配置為Intel Core i5 3.6GHz CPU、16GB內(nèi)存、1TB硬盤的臺(tái)式機(jī)上進(jìn)行了試驗(yàn)。
本文旨在驗(yàn)證基于樹(shù)形結(jié)構(gòu)存儲(chǔ)方案的性能和效率,并對(duì)比物化路徑法、左右值編碼和其他方法的優(yōu)劣。分別采用這些方法對(duì)相同的數(shù)據(jù)集進(jìn)行存儲(chǔ),并在相同的環(huán)境下進(jìn)行了數(shù)據(jù)的查詢和修改操作。
經(jīng)過(guò)對(duì)比試驗(yàn),發(fā)現(xiàn)基于樹(shù)形結(jié)構(gòu)存儲(chǔ)方案的查詢速度最快,平均查詢時(shí)間僅為1.2 s。其次是左右值編碼,平均查詢時(shí)間為2.5 s。而其他方法的查詢時(shí)間均在5 s以上,且存儲(chǔ)空間占用也更大。
通過(guò)試驗(yàn)結(jié)果可以看出,樹(shù)形結(jié)構(gòu)存儲(chǔ)方案具有更高的性能和效率,能夠更好地滿足軌道交通系統(tǒng)的數(shù)據(jù)存儲(chǔ)需求。
本文提出了一種基于樹(shù)形結(jié)構(gòu)的存儲(chǔ)方案,并在軌道交通智能維保和健康管理平臺(tái)中進(jìn)行了應(yīng)用。該方案能夠有效地提高數(shù)據(jù)的存取效率,減少存儲(chǔ)空間的占用,并提高系統(tǒng)的穩(wěn)定性和可靠性。通過(guò)試驗(yàn)驗(yàn)證,樹(shù)形結(jié)構(gòu)存儲(chǔ)方案具有更高的性能和效率,能夠更好地滿足軌道交通智能維保和健康管理平臺(tái)的需求。本文在分析和比較了多種樹(shù)形結(jié)構(gòu)存儲(chǔ)方案后,選用了物化路徑法作為軌道交通智能維保和健康管理平臺(tái)的數(shù)據(jù)存儲(chǔ)方案。物化路徑法可以有效地減少樹(shù)形結(jié)構(gòu)的訪問(wèn)時(shí)間和查詢時(shí)間,提高了數(shù)據(jù)的處理速度和效率。本文使用了不同規(guī)模的數(shù)據(jù)集進(jìn)行測(cè)試,結(jié)果顯示,物化路徑法在性能和效率方面表現(xiàn)優(yōu)異。
此外,通過(guò)研究也發(fā)現(xiàn)了一些不足之處。例如,物化路徑法對(duì)數(shù)據(jù)的更新和維護(hù)存在一定的難度,需要更加精細(xì)的管理和維護(hù)方法。同時(shí),還發(fā)現(xiàn)物化路徑法在處理非樹(shù)形結(jié)構(gòu)數(shù)據(jù)時(shí)存在一定的限制,這需要今后進(jìn)一步改進(jìn)和拓展。