李 闖
(1.五凌電力有限公司,湖南 長(zhǎng)沙 410004;2.湖南省水電智慧化工程技術(shù)研究中心,湖南 長(zhǎng)沙 410004)
國(guó)內(nèi)大多數(shù)行業(yè)的IT架構(gòu)中,數(shù)據(jù)庫(kù)是基礎(chǔ)和核心的內(nèi)容,做為信息資源的載體,選用安全可靠的數(shù)據(jù)庫(kù)是保障信息系統(tǒng)安全的重要內(nèi)容。國(guó)外數(shù)據(jù)庫(kù)進(jìn)入國(guó)內(nèi)市場(chǎng)比較早,國(guó)內(nèi)的金融、能源、通信等涉及國(guó)家經(jīng)濟(jì)命脈的行業(yè)和政府機(jī)關(guān)多采用Oracle、DB2、Sybase等國(guó)外數(shù)據(jù)庫(kù),同時(shí)在國(guó)際政治和經(jīng)濟(jì)形勢(shì)多變的情況下,部分軟硬件系統(tǒng)的使用受到限制,數(shù)據(jù)安全受到威脅。
國(guó)產(chǎn)化自主可控的背后是國(guó)家對(duì)信息安全和數(shù)據(jù)安全的重視,國(guó)產(chǎn)數(shù)據(jù)庫(kù)經(jīng)過(guò)三十多年的發(fā)展技術(shù)逐步成熟,在安全性、穩(wěn)定性、高可用性及性能上都達(dá)到或超過(guò)國(guó)外數(shù)據(jù)庫(kù)的技術(shù)指標(biāo),已經(jīng)具備替代國(guó)外數(shù)據(jù)庫(kù)的能力,綜合多個(gè)因素?cái)?shù)據(jù)庫(kù)國(guó)產(chǎn)化替代成為必然。
電力行業(yè)一直以來(lái)采用國(guó)外關(guān)系型數(shù)據(jù)庫(kù)構(gòu)建應(yīng)用平臺(tái),對(duì)關(guān)系型數(shù)據(jù)庫(kù)的基本能力、事務(wù)能力、高可用能力的有關(guān)鍵技術(shù)標(biāo)準(zhǔn),在性能、安全以及運(yùn)維方面也提出了要求,并制定了如數(shù)據(jù)庫(kù)通用訪(fǎng)問(wèn)接口規(guī)范、通用數(shù)據(jù)模型、數(shù)據(jù)交換、傳輸?shù)确矫娴臉?biāo)準(zhǔn)規(guī)范,國(guó)產(chǎn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)替換需要兼容國(guó)外數(shù)據(jù)庫(kù)及現(xiàn)行的行業(yè)開(kāi)發(fā)標(biāo)準(zhǔn)。結(jié)合當(dāng)下復(fù)雜的國(guó)際關(guān)系,電力行業(yè)的特殊性,亟需穩(wěn)固數(shù)據(jù)底座,推進(jìn)國(guó)產(chǎn)化數(shù)據(jù)庫(kù)在智慧集控各業(yè)務(wù)系統(tǒng)上的使用已勢(shì)在必行。
作為發(fā)電集控中心智慧化建設(shè)的核心內(nèi)容之一的智能化調(diào)度服務(wù)指揮應(yīng)用平臺(tái),是以集控中心為主體,集控電廠(chǎng)為支撐建設(shè)的基于A(yíng)I智能語(yǔ)音的綜合指揮調(diào)度平臺(tái),它通過(guò)辦公網(wǎng)絡(luò)和移動(dòng)通信網(wǎng)絡(luò),運(yùn)用HTTPS協(xié)議下的信息加密、消息推送、語(yǔ)音提醒等技術(shù),實(shí)現(xiàn)調(diào)度指揮的信息化、數(shù)字化、網(wǎng)絡(luò)化,調(diào)度業(yè)務(wù)交互的多元化。
智慧調(diào)度和智慧語(yǔ)控系統(tǒng)是智能化調(diào)度服務(wù)指揮應(yīng)用平臺(tái)的兩大核心應(yīng)用,其對(duì)數(shù)據(jù)庫(kù)的安全合規(guī)、高性能、擴(kuò)展性、兼容性和可靠性要求極為嚴(yán)格。早期建設(shè)的信息系統(tǒng)的技術(shù)及設(shè)備還在應(yīng)用開(kāi)源或非國(guó)產(chǎn)化數(shù)據(jù)庫(kù),對(duì)集控中心現(xiàn)有信息系統(tǒng)的安全性、合規(guī)性提出了嚴(yán)峻考驗(yàn),綜上考慮,選擇一款國(guó)內(nèi)自主可控的數(shù)據(jù)庫(kù)作為智能化調(diào)度服務(wù)指揮應(yīng)用平臺(tái)建設(shè)的數(shù)據(jù)底座十分必要。
數(shù)據(jù)庫(kù)國(guó)產(chǎn)化的難點(diǎn)在于許多對(duì)數(shù)據(jù)可靠性要求較高的、業(yè)務(wù)應(yīng)用較復(fù)雜的系統(tǒng)長(zhǎng)期以來(lái)對(duì) Oracle 和 DB2 等數(shù)據(jù)庫(kù)形成依賴(lài),適應(yīng)性、耦合度強(qiáng);此外國(guó)產(chǎn)化改造過(guò)程中,涉及現(xiàn)有數(shù)據(jù)庫(kù)與oracle數(shù)據(jù)庫(kù)的兼容性的問(wèn)題,數(shù)據(jù)類(lèi)型、語(yǔ)法格式、函數(shù)等內(nèi)容的匹配情況都增加了國(guó)產(chǎn)化的難度。如何減少對(duì)業(yè)務(wù)系統(tǒng)的影響,盡可能地實(shí)現(xiàn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)的平滑遷移,都是數(shù)據(jù)庫(kù)國(guó)產(chǎn)化進(jìn)程中將會(huì)面臨的問(wèn)題。
UXDB擁有自主知識(shí)產(chǎn)權(quán),是現(xiàn)有國(guó)產(chǎn)自主可控?cái)?shù)據(jù)庫(kù)軟件的重要成員之一,符合ANSI SQL國(guó)際標(biāo)準(zhǔn),提供完善的數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)管理功能。支持行式存儲(chǔ)、列式存儲(chǔ)及行列混和存儲(chǔ),支持結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化等多種數(shù)據(jù)類(lèi)型,可同時(shí)滿(mǎn)足在線(xiàn)事務(wù)型業(yè)務(wù)與在線(xiàn)分析型業(yè)務(wù)場(chǎng)景需求。同時(shí)支持多種部署方式,包括:一主多備模式、讀寫(xiě)分離模式、共享存儲(chǔ)模式、大規(guī)模并行計(jì)算集群模式,以及云部署。
UXDB可實(shí)現(xiàn)數(shù)據(jù)強(qiáng)一致性,支持事務(wù) ACID,支持復(fù)雜查詢(xún)及統(tǒng)計(jì)分析,可以通過(guò)增加節(jié)點(diǎn)擴(kuò)充數(shù)據(jù)庫(kù)容量及性能,實(shí)現(xiàn)高可用[1]。為了更好的實(shí)現(xiàn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)的替代,在Oracle、MySQL等國(guó)外數(shù)據(jù)庫(kù)的兼容性方面也提出了獨(dú)立的解決方法,例如數(shù)據(jù)類(lèi)型、SQL語(yǔ)法等方面及設(shè)置數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)和兼容兩種模式。為簡(jiǎn)化遷移過(guò)程提供了數(shù)據(jù)遷移工具,支持Oracle、SQL Server、MySQL等多種數(shù)據(jù)庫(kù)的遷移,具備完備的遷移功能并提升了數(shù)據(jù)遷移性能,并提供自定義函數(shù)/存儲(chǔ)過(guò)程等的遷移。從數(shù)據(jù)庫(kù)設(shè)計(jì)、研發(fā)、實(shí)施、運(yùn)維等各環(huán)節(jié),完全實(shí)現(xiàn)產(chǎn)品及解決方案的自主可控。使用自主可控?cái)?shù)據(jù)庫(kù)一方面可以從根本上杜絕系統(tǒng)后門(mén),從而減少了安全隱患。另外也可以克服電力行業(yè)企業(yè)對(duì)國(guó)外商業(yè)數(shù)據(jù)庫(kù)產(chǎn)品的深度依賴(lài)性,從而大大減少了數(shù)據(jù)庫(kù)耗費(fèi),促進(jìn)企業(yè)信息化國(guó)產(chǎn)化率的升級(jí),加大了數(shù)據(jù)安全的保護(hù)力量,為集控中心智慧化建設(shè)提供有力支撐。
智慧調(diào)度作為智能化調(diào)度服務(wù)指揮應(yīng)用平臺(tái)子系統(tǒng)之一,其核心功能是調(diào)度操作票管理及網(wǎng)絡(luò)發(fā)令,這也是智能化調(diào)度服務(wù)指揮應(yīng)用平臺(tái)中一項(xiàng)重要的建設(shè)內(nèi)容?;陟`活、方便地為調(diào)度操作票管理及網(wǎng)絡(luò)發(fā)令等綜合業(yè)務(wù)提供服務(wù),智慧調(diào)度系統(tǒng)的底層技術(shù)框架采用前后端分離技術(shù)搭建,前端采用Vue、Element UI,后端采用Spring Boot、Spring Security和Mybatis。權(quán)限認(rèn)證使用Jwt,支持多終端認(rèn)證系統(tǒng)。支持加載動(dòng)態(tài)權(quán)限菜單,多方式輕松權(quán)限控制。
在開(kāi)發(fā)智慧調(diào)度的過(guò)程中,持久層框架 Mybatis基于開(kāi)源的關(guān)系數(shù)據(jù)庫(kù)Mysql搭建,其中數(shù)據(jù)查詢(xún)和存儲(chǔ)的SQL語(yǔ)句依據(jù)Mysql編寫(xiě),為保障業(yè)務(wù)正常使用,需將其無(wú)縫遷移到UXDB上。
智慧語(yǔ)控系統(tǒng)的核心功能是采取自然語(yǔ)言交互方式對(duì)PC、數(shù)字大屏、機(jī)器人等終端設(shè)備進(jìn)行語(yǔ)音操控。其中使用到了語(yǔ)音識(shí)別技術(shù)、語(yǔ)音合成技術(shù)、自然語(yǔ)言理解技術(shù)等AI能力,基于這些AI能力打造出智控機(jī)器人。
智慧語(yǔ)控系統(tǒng)分為客戶(hù)端和配置端,客戶(hù)端采取C/S架構(gòu)使用C#語(yǔ)言開(kāi)發(fā),主要功能是對(duì)終端設(shè)備的控制和虛擬機(jī)器人形象展示;配置端采取B/S架構(gòu)通過(guò)瀏覽器頁(yè)面訪(fǎng)問(wèn),主要功能是對(duì)機(jī)器人控制的指令集合配置,控制路徑配置,用戶(hù)權(quán)限管理、數(shù)據(jù)字典管理等;基于微服務(wù)框架理念的輕量化考慮,后端服務(wù)框架采用Spring Boot,減小對(duì)中間件的依賴(lài),安裝方便,易于擴(kuò)容和遷移。
在開(kāi)發(fā)智慧語(yǔ)控系統(tǒng)的過(guò)程中,持久層框架使用spring Boot JPA,數(shù)據(jù)庫(kù)基于開(kāi)源的關(guān)系數(shù)據(jù)庫(kù)Mysql搭建,其中配置端中涉及用戶(hù)權(quán)限數(shù)據(jù)、指令配置和數(shù)據(jù)字典等業(yè)務(wù)數(shù)據(jù)在mysql數(shù)據(jù)庫(kù)中存儲(chǔ),這些業(yè)務(wù)數(shù)據(jù)的增刪改查sql語(yǔ)句均遵循mysql語(yǔ)句語(yǔ)法規(guī)范編寫(xiě),并且涉及使用mysql數(shù)據(jù)庫(kù)一些常用函數(shù)(比如日期格式化、字符串處理等),為保障業(yè)務(wù)正常使用,需將其無(wú)縫遷移到UXDB上。
2.4.1 數(shù)據(jù)遷移
(1)數(shù)據(jù)庫(kù)安裝
按照數(shù)據(jù)庫(kù)廠(chǎng)商提供的安裝手冊(cè)步驟安裝UXDB數(shù)據(jù)庫(kù),導(dǎo)入開(kāi)發(fā)許可文件。
(2)安裝ux_migration工具
解壓安裝包uxdb-migration-v3.0.4-RELEASE到目錄ux_migration。在目ux_migration下面運(yùn)行 install.exe工具和相關(guān)部分會(huì)被復(fù)制到UXDB Server安裝目錄下相應(yīng)位置。安裝過(guò)程中,如果出現(xiàn)打印ux_config命令不存在的情況,需確認(rèn)UXDB Server已經(jīng)安裝并且PATH環(huán)境變量已經(jīng)配置。
(3)遷移準(zhǔn)備
遷移開(kāi)始前,需要記錄、統(tǒng)計(jì)原有數(shù)據(jù)庫(kù)的完整信息,方便在遷移完成后做對(duì)應(yīng)的檢查工作,其內(nèi)容主要有:源數(shù)據(jù)庫(kù)中的用戶(hù)、角色權(quán)限;源數(shù)據(jù)庫(kù)中數(shù)據(jù)表的定義(列名、數(shù)據(jù)類(lèi)型、主鍵、外鍵等等);源數(shù)據(jù)庫(kù)中數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)對(duì)象數(shù)量;源數(shù)據(jù)庫(kù)中紀(jì)錄索引的名稱(chēng)、類(lèi)型及實(shí)際工作狀態(tài)。
(4)遷移過(guò)程
UXDB提供了數(shù)據(jù)庫(kù)遷移工具 uxdb-migration,該工具支持遷移的源數(shù)據(jù)庫(kù)有:Mysql、SqlServer、Sybase等數(shù)據(jù)庫(kù)。
為了確保在遷移過(guò)程中,沒(méi)有任何新的數(shù)據(jù)庫(kù)修改,遷移前需要停止所有的應(yīng)用。關(guān)閉數(shù)據(jù)庫(kù)、關(guān)閉監(jiān)聽(tīng)。然后重新打開(kāi)數(shù)據(jù)庫(kù),以確保沒(méi)有應(yīng)用連接到mysql數(shù)據(jù)庫(kù)。
運(yùn)行uxdb-migration,創(chuàng)建遷移任務(wù),輸入任務(wù)名稱(chēng)(隨意),選擇源數(shù)據(jù)類(lèi)型Mysql和目標(biāo)數(shù)據(jù)類(lèi)型。
點(diǎn)擊下一步按鈕,按照界面提示,分別完成源數(shù)據(jù)庫(kù)鏈接(主機(jī)名稱(chēng)、端口號(hào)、用戶(hù)名和密碼)、目標(biāo)數(shù)據(jù)庫(kù)鏈接(主機(jī)名稱(chēng)、端口號(hào)、用戶(hù)名和密碼)、需要遷移的數(shù)據(jù)庫(kù)對(duì)象即可完成整個(gè)數(shù)據(jù)庫(kù)的遷移(在選擇遷移的數(shù)據(jù)庫(kù)時(shí)遷移內(nèi)容需要選中“遷移結(jié)構(gòu)和數(shù)據(jù)”選項(xiàng))。
(5)遷移過(guò)程監(jiān)控
數(shù)據(jù)庫(kù)遷移過(guò)程開(kāi)始后,用戶(hù)可根據(jù)遷移監(jiān)控界面,了解數(shù)據(jù)庫(kù)遷移過(guò)程的進(jìn)度和詳細(xì)情況。數(shù)據(jù)庫(kù)遷移完成后,用戶(hù)可單擊“導(dǎo)出”按鈕,將“遷移日志”或“遷移 報(bào)告”以文本方式,導(dǎo)出到文件中保存。
(6)數(shù)據(jù)庫(kù)檢查
數(shù)據(jù)庫(kù)遷移完成后,進(jìn)行全方位的檢查,以確保數(shù)據(jù)移植的完整準(zhǔn)確。其主要內(nèi)容有:檢查導(dǎo)入數(shù)據(jù)的完整性;檢查表空間、數(shù)據(jù)文件狀態(tài)是否正確;檢查導(dǎo)入對(duì)象數(shù)量、狀態(tài)是否正確;檢查導(dǎo)入索引數(shù)量、狀態(tài)是否正確;檢查用戶(hù)角色權(quán)限是否與原有數(shù)據(jù)庫(kù)系統(tǒng)保持一致。
(7)修改應(yīng)用程序配置文件
修改Maven配置文件內(nèi)JDBC連接方式和依賴(lài)配置項(xiàng)。
2.4.2 問(wèn)題及解決方法
(1)遷移工具軟件配置問(wèn)題及解決方法
UXDB遷移工具內(nèi)jdbc驅(qū)動(dòng)默認(rèn)安裝路徑為D:uxdbuxdbinstallUXDBAdmindriversjdbc,需嚴(yán)格按照此路徑對(duì)遷移工具進(jìn)行配置。
(2)應(yīng)用程序運(yùn)行在遷移后的UNXDB上,出現(xiàn)的問(wèn)題及解決方法如表1所示。
表1 數(shù)據(jù)庫(kù)適配問(wèn)題及解決方法
(1)遷移時(shí)目標(biāo)數(shù)據(jù)庫(kù)的名稱(chēng)和源數(shù)據(jù)庫(kù)的名稱(chēng)可以不一致,mysql里面是wsd數(shù)據(jù)庫(kù),uxdb可以自定義一個(gè)數(shù)據(jù)庫(kù)作為目標(biāo)數(shù)據(jù)庫(kù)。
(2)遷移時(shí)由于mysql沒(méi)有模式的概念,但是遷移工具會(huì)根據(jù)源數(shù)據(jù)庫(kù)名稱(chēng),將數(shù)據(jù)遷移到同名的模式下,所以需要在UXDB中創(chuàng)建一個(gè)與源數(shù)據(jù)庫(kù)同名的模式。
(3)遷移工具使用時(shí),必須與uxdb在同一臺(tái)機(jī)器上,且uxdb機(jī)器上需要安裝mysql客戶(hù)端,遷移工具進(jìn)行數(shù)據(jù)遷移時(shí),需要使用mysql客戶(hù)端連接到mysql獲取到相應(yīng)的表結(jié)構(gòu)與數(shù)據(jù),再將結(jié)構(gòu)與數(shù)據(jù)轉(zhuǎn)移到uxdb上。
電力行業(yè)關(guān)系國(guó)民經(jīng)濟(jì)命脈和國(guó)家能源安全,由于行業(yè)的特殊性和信息安全的戰(zhàn)略需求,信息和數(shù)據(jù)的安全性顯得尤為重要。在電力行業(yè)各信息化系統(tǒng)中,高性能、易移植、可擴(kuò)展及兼容性強(qiáng)的可控?cái)?shù)據(jù)庫(kù)具有舉足輕重的地位。數(shù)據(jù)庫(kù)技術(shù)是發(fā)電集控中心智慧化建設(shè)中各信息系統(tǒng)的核心,也是智能化調(diào)度指揮應(yīng)用平臺(tái)必不可少的組成部分,通過(guò)在智慧調(diào)度、智慧語(yǔ)控等信息系統(tǒng)數(shù)據(jù)庫(kù)軟件安裝、遷移和適配工作,進(jìn)一步驗(yàn)證了某國(guó)產(chǎn)自主可控?cái)?shù)據(jù)庫(kù)的安全合規(guī)、高性能、可擴(kuò)展、易兼容等特性,這對(duì)今后國(guó)產(chǎn)數(shù)據(jù)庫(kù)在電力行業(yè)的發(fā)展和在各智能化信息系統(tǒng)的推廣均有重要的意義。