楊素花 楊 潔 祝 琴
(北京市智慧水務(wù)發(fā)展研究院,北京 100036)
北京市南水北調(diào)水進(jìn)京后,形成了外調(diào)水、本地地表水、地下水、再生水、雨洪水五水共濟(jì)的水源保障和供水體系。截至2020年底,利用南水北調(diào)中線水累計(jì)超61億m3,直接受益人口1300多萬(wàn)。在五水調(diào)度的業(yè)務(wù)工作中,通過(guò)北京市南水北調(diào)智能調(diào)度、水資源統(tǒng)一調(diào)度平臺(tái)等信息系統(tǒng)的建設(shè),積累了大量的信息資源,形成了體系化的水資源調(diào)度業(yè)務(wù)數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù):配置信息、調(diào)度水量信息、調(diào)度指令信息;非結(jié)構(gòu)化數(shù)據(jù):調(diào)度規(guī)程、調(diào)度方案,以及各實(shí)體對(duì)象的關(guān)系數(shù)據(jù)。為了更好地發(fā)揮數(shù)據(jù)價(jià)值,梳理分析水資源調(diào)度關(guān)系,構(gòu)建基于圖數(shù)據(jù)庫(kù)的數(shù)據(jù)、關(guān)系存儲(chǔ),實(shí)現(xiàn)調(diào)度信息的可視化展示及關(guān)系分析,為下一步水資源知識(shí)圖譜構(gòu)建提供數(shù)據(jù)基礎(chǔ)。
業(yè)務(wù)信息存儲(chǔ)體系選擇時(shí)需考慮知識(shí)可靠、可融合、可應(yīng)用等問(wèn)題,為表示多樣性、復(fù)雜化的水資源調(diào)度業(yè)務(wù),選用Neo4j圖數(shù)據(jù)庫(kù)作為存儲(chǔ)體系[1]。Neo4j圖數(shù)據(jù)庫(kù)是一種高性能的圖形數(shù)據(jù)庫(kù),它是可以將結(jié)構(gòu)化的數(shù)據(jù)保存在網(wǎng)絡(luò)中,而不是關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)表中[2]。
1.1.1 靈活性和適用性
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)通過(guò)多張數(shù)據(jù)庫(kù)表來(lái)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),當(dāng)數(shù)據(jù)的關(guān)系復(fù)雜時(shí),需要關(guān)聯(lián)查詢多張數(shù)據(jù)庫(kù)表,數(shù)據(jù)應(yīng)用服務(wù)較為繁瑣和低效。而Neo4j圖數(shù)據(jù)庫(kù)是通過(guò)圖結(jié)構(gòu)的方式進(jìn)行數(shù)據(jù)存儲(chǔ),對(duì)于關(guān)聯(lián)數(shù)據(jù)的存儲(chǔ)優(yōu)勢(shì)較為明顯,可以直接表現(xiàn)數(shù)據(jù)的關(guān)聯(lián)性,不需要進(jìn)行復(fù)雜的關(guān)聯(lián)操作,提高了數(shù)據(jù)存儲(chǔ)和檢索性能[3]。而且隨著業(yè)務(wù)的調(diào)整,避免了傳統(tǒng)數(shù)據(jù)庫(kù)的重構(gòu)導(dǎo)致建設(shè)成本增加等問(wèn)題,因?yàn)镹eo4j圖數(shù)據(jù)庫(kù)采用非結(jié)構(gòu)化的圖數(shù)據(jù)格式,它具有很好的可擴(kuò)展性,只需要根據(jù)需求的調(diào)整進(jìn)行節(jié)點(diǎn)、關(guān)系以及屬性的調(diào)整,不會(huì)影響原有數(shù)據(jù)信息的正常使用[4]。
1.1.2 圖結(jié)構(gòu)存儲(chǔ)
對(duì)于水資源調(diào)度業(yè)務(wù),由于調(diào)度規(guī)程的復(fù)雜性,需要對(duì)調(diào)度工程、調(diào)度實(shí)施單位等實(shí)體對(duì)象進(jìn)行關(guān)聯(lián),因此選擇適合表示實(shí)體對(duì)象之間關(guān)系的數(shù)據(jù)庫(kù),存儲(chǔ)相關(guān)的關(guān)系信息,更有利于多水源聯(lián)合調(diào)度的數(shù)據(jù)挖掘。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)采用表結(jié)構(gòu)的方式存儲(chǔ)數(shù)據(jù),不能很好地存儲(chǔ)關(guān)系信息,Neo4j就很好地解決了這種問(wèn)題,可以將數(shù)據(jù)存儲(chǔ)在靈活的網(wǎng)絡(luò)結(jié)構(gòu)中而不是表格中,具備了完整的數(shù)據(jù)庫(kù)特性,實(shí)現(xiàn)了專業(yè)數(shù)據(jù)庫(kù)級(jí)別的圖數(shù)據(jù)模型存儲(chǔ)[5]。
1.1.3 圖遍歷式查詢
Neo4j存儲(chǔ)的是一種原生的圖數(shù)據(jù),它使用圖遍歷的算法進(jìn)行數(shù)據(jù)查詢,從一個(gè)節(jié)點(diǎn)開(kāi)始,按照之間的關(guān)聯(lián)關(guān)系查詢所有與它有關(guān)系的節(jié)點(diǎn)和屬性。而在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)的查詢會(huì)通過(guò)大量的數(shù)據(jù)進(jìn)行檢索查詢,很多數(shù)據(jù)的檢索與結(jié)果并無(wú)關(guān)系,在復(fù)雜的水資源調(diào)度業(yè)務(wù)和數(shù)據(jù)量較大的水資源監(jiān)測(cè)數(shù)據(jù)場(chǎng)景下,傳統(tǒng)數(shù)據(jù)庫(kù)的查詢性能不能很好地支撐應(yīng)用。應(yīng)用Neo4j圖數(shù)據(jù)庫(kù)可以極大地提高查詢效率,查詢速度是傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)倍[6]。提高查詢效率的同時(shí)也可以對(duì)Neo4j圖數(shù)據(jù)庫(kù)的查詢語(yǔ)言進(jìn)行擴(kuò)展,使其可以進(jìn)行模糊查詢,有效解決了水資源調(diào)度業(yè)務(wù)中的模糊查詢相關(guān)應(yīng)用需求[7]。
1.1.4 圖論算法支持
由于Neo4j 是一個(gè)基于圖論算法,完全兼容ACID的圖形數(shù)據(jù)庫(kù)[8],在基于Neo4j的應(yīng)用中,可以根據(jù)設(shè)計(jì)選擇相應(yīng)的圖操作算法,為業(yè)務(wù)應(yīng)用提供更深入的挖掘和操作,這些是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)所不具有的優(yōu)勢(shì)。
1.2.1 節(jié)點(diǎn)
節(jié)點(diǎn)(Node)即實(shí)體對(duì)象,可以分為起始節(jié)點(diǎn)和終止節(jié)點(diǎn),并且兩個(gè)節(jié)點(diǎn)通過(guò)關(guān)系進(jìn)行連接[9],節(jié)點(diǎn)相對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)中E-R圖中的實(shí)體,主要通過(guò)實(shí)體的標(biāo)簽信息進(jìn)行區(qū)別,節(jié)點(diǎn)可以包含屬性信息或者不包含屬性信息,屬性信息是描述實(shí)體的信息,例如:表示水利工程調(diào)度的圖數(shù)據(jù)庫(kù)中,水庫(kù)可以當(dāng)作一個(gè)節(jié)點(diǎn),可以包含多個(gè)屬性信息。節(jié)點(diǎn)在圖數(shù)據(jù)庫(kù)中用圓圈表示。
1.2.2 關(guān)系
關(guān)系(Relationship)用于表示實(shí)體與實(shí)體間的聯(lián)系,例如:調(diào)度實(shí)施單位與調(diào)度工程之間的關(guān)系是調(diào)度和被調(diào)度的關(guān)系。關(guān)系在圖數(shù)據(jù)庫(kù)中用箭頭表示,關(guān)系可以是單向關(guān)系,也可以使是雙向關(guān)系。
1.2.3 屬性
屬性(Property)用于表示節(jié)點(diǎn)或者關(guān)系的特征信息,屬性通過(guò)Key-Value (鍵值對(duì))表示,節(jié)點(diǎn)可以設(shè)置節(jié)點(diǎn)屬性,關(guān)系可以設(shè)置關(guān)系屬性,但是不能共享屬性[10],屬性的鍵名是由字符串來(lái)表示,屬性值可以用一個(gè)原始值表示,也可以用原始的數(shù)組表示。
參照?qǐng)D數(shù)據(jù)庫(kù)節(jié)點(diǎn)、關(guān)系及屬性構(gòu)建方法,結(jié)合水資源調(diào)度業(yè)務(wù)信息,在水資源調(diào)度圖數(shù)據(jù)庫(kù)構(gòu)建過(guò)程中,主要包括數(shù)據(jù)梳理、圖數(shù)據(jù)庫(kù)構(gòu)建、圖數(shù)據(jù)庫(kù)查詢應(yīng)用等流程,具體的流程見(jiàn)圖1。
圖1 水資源調(diào)度數(shù)據(jù)庫(kù)構(gòu)建流程
a.數(shù)據(jù)梳理。數(shù)據(jù)梳理主要包括水資源調(diào)度業(yè)務(wù)流程梳理、節(jié)點(diǎn)梳理、關(guān)系梳理。節(jié)點(diǎn)主要包括調(diào)度參與人、調(diào)度工程對(duì)象等節(jié)點(diǎn);關(guān)系主要包括調(diào)度參與人與調(diào)度工程之間的關(guān)系。
b.圖數(shù)據(jù)庫(kù)構(gòu)建。圖數(shù)據(jù)庫(kù)構(gòu)建主要包括節(jié)點(diǎn)構(gòu)建和關(guān)系構(gòu)建,在構(gòu)建水資源調(diào)度節(jié)點(diǎn)和關(guān)系構(gòu)建中進(jìn)行屬性的定義。
c.圖數(shù)據(jù)庫(kù)查詢應(yīng)用。根據(jù)構(gòu)建的水資源調(diào)度業(yè)務(wù)信息圖數(shù)據(jù)庫(kù)按需查詢,實(shí)現(xiàn)查詢結(jié)構(gòu)的可視化展示。
本文中水資源調(diào)度數(shù)據(jù)庫(kù)以北京市水資源調(diào)度相關(guān)規(guī)程為主要數(shù)據(jù)來(lái)源,包括調(diào)度參與人及其職責(zé),調(diào)度工程對(duì)象以及調(diào)度實(shí)施單位與調(diào)度工程關(guān)系。
a.調(diào)度參與人梳理。調(diào)度參與人主要包括總調(diào)度長(zhǎng)、調(diào)度長(zhǎng)、副調(diào)度長(zhǎng)、執(zhí)行副調(diào)度長(zhǎng)、調(diào)度實(shí)施單位。
b.調(diào)度工程對(duì)象梳理。調(diào)度工程對(duì)象主要包括自來(lái)水廠、再生水廠、管網(wǎng)、引水工程、輸水工程、水庫(kù)、河道、水利工程等。
c.調(diào)度實(shí)施單位與調(diào)度工程關(guān)系。指各單位涉及的工程調(diào)度管理權(quán)屬。調(diào)度實(shí)施單位工程調(diào)度管轄范圍見(jiàn)表1。
表1 調(diào)度實(shí)施單位與調(diào)度工程關(guān)系
2.3.1 節(jié)點(diǎn)構(gòu)建
水資源調(diào)度業(yè)務(wù)流程主要包括的節(jié)點(diǎn)有總調(diào)度長(zhǎng)、調(diào)度長(zhǎng)、副調(diào)度長(zhǎng)、執(zhí)行調(diào)度長(zhǎng)、調(diào)度實(shí)施單位、調(diào)度工程。
其中 “總調(diào)度長(zhǎng)”節(jié)點(diǎn)的定義見(jiàn)表2。
表2 總調(diào)度長(zhǎng)節(jié)點(diǎn)屬性
表2中“總調(diào)度長(zhǎng)”節(jié)點(diǎn)定義了兩個(gè)屬性:總調(diào)度長(zhǎng)名稱和總調(diào)度長(zhǎng)主要職責(zé)。通過(guò)命令創(chuàng)建了一個(gè)“總調(diào)度長(zhǎng)”節(jié)點(diǎn),節(jié)點(diǎn)名稱為n,標(biāo)簽為ZDDZ,節(jié)點(diǎn)包含屬性“name:總調(diào)度長(zhǎng)”,“duty:負(fù)責(zé)決策重大水資源調(diào)度工作事項(xiàng)、年度用水計(jì)劃和調(diào)配方案等,簽發(fā)重要調(diào)度事項(xiàng)”。
create(n:ZDDZ{name:‘總調(diào)度長(zhǎng)’, duty:‘負(fù)責(zé)決策重大水資源調(diào)度工作事項(xiàng)、年度用水計(jì)劃和調(diào)配方案等,簽發(fā)重要調(diào)度事項(xiàng)’})。
根據(jù)各節(jié)點(diǎn)屬性,應(yīng)用上述create命令,定義調(diào)度長(zhǎng)、副調(diào)度長(zhǎng)、執(zhí)行調(diào)度長(zhǎng)。
2.3.2 關(guān)系構(gòu)建
按照水資源調(diào)度業(yè)務(wù)數(shù)據(jù)挖掘及應(yīng)用需求,根據(jù)調(diào)度業(yè)務(wù)現(xiàn)狀,創(chuàng)建了3種關(guān)系:調(diào)度、調(diào)度需求申請(qǐng)、調(diào)度通知單。
a.“調(diào)度”關(guān)系:實(shí)施單位與調(diào)度工程,總調(diào)度長(zhǎng)與調(diào)度長(zhǎng)、調(diào)度長(zhǎng)與副調(diào)度長(zhǎng)、副調(diào)度長(zhǎng)與執(zhí)行調(diào)度長(zhǎng)的關(guān)系為“調(diào)度”關(guān)系。
b.“調(diào)度需求申請(qǐng)”關(guān)系:實(shí)施單位與執(zhí)行副調(diào)度長(zhǎng)調(diào)度中心的關(guān)系為“調(diào)度需求申請(qǐng)”關(guān)系。
c.“調(diào)度通知單”關(guān)系:執(zhí)行副調(diào)度長(zhǎng)調(diào)度中心與實(shí)施單位的關(guān)系為“調(diào)度通知單”的關(guān)系。
部分構(gòu)建結(jié)果示例見(jiàn)圖2。
圖2 水資源調(diào)度圖數(shù)據(jù)庫(kù)構(gòu)建結(jié)果示意圖
圖數(shù)據(jù)庫(kù)查詢具有較強(qiáng)的靈活性,對(duì)象關(guān)系查詢結(jié)果可視化相對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)具有很好的應(yīng)用效果。
例如:應(yīng)用構(gòu)建的水資源調(diào)度圖數(shù)據(jù)庫(kù),查詢京密引水管理處所調(diào)度的工程的方法如下。
查詢語(yǔ)句:
MATCH (a:SSDW{name:‘京密引水管理處‘})-[r:調(diào)度]-(b:DDGC) return a,b
查詢結(jié)果見(jiàn)圖3。
圖3 水資源調(diào)度關(guān)系可視化查詢結(jié)果示意圖
查詢結(jié)果導(dǎo)出見(jiàn)表3。
表3 關(guān)系查詢結(jié)構(gòu)
查詢結(jié)果可以通過(guò)圖表的方式展示,為業(yè)務(wù)應(yīng)用提供友好的可視化服務(wù),同時(shí)為數(shù)據(jù)資源管理提供可視化的操作頁(yè)面。
Neo4j圖數(shù)據(jù)庫(kù)是目前挖掘?qū)嶓w關(guān)系較為優(yōu)秀的圖數(shù)據(jù)庫(kù),在實(shí)體關(guān)系挖掘方面及知識(shí)圖譜構(gòu)建等方面有著廣泛的應(yīng)用。本文采用Neo4j研究了水資源調(diào)度圖數(shù)據(jù)庫(kù)的構(gòu)建方法,通過(guò)梳理業(yè)務(wù)信息,選取節(jié)點(diǎn),定義關(guān)系及屬性,最后通過(guò)構(gòu)建結(jié)果的查詢,非常便捷地實(shí)現(xiàn)了水資源調(diào)度業(yè)務(wù)信息的按需查詢及可視化展示,這為后續(xù)水資源調(diào)度知識(shí)圖譜的構(gòu)建、調(diào)度預(yù)案的智能推薦以及調(diào)度智能問(wèn)答提供了有效的數(shù)據(jù)支持及指導(dǎo)方法。