專利名稱:電力gis跨平臺(tái)空間數(shù)據(jù)服務(wù)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及空間信息技術(shù),是對(duì)電網(wǎng)空間數(shù)據(jù)管理、調(diào)度、緩存的數(shù)據(jù)服務(wù)中間層 技術(shù),尤其涉及一種電力Gis系統(tǒng)跨平臺(tái)空間數(shù)據(jù)服務(wù)方法及系統(tǒng)。
背景技術(shù):
在電網(wǎng)空間信息服務(wù)平臺(tái)采用全省大集中部署方式的前提下,由于全網(wǎng)省的電網(wǎng) 空間數(shù)據(jù)及相關(guān)屬性數(shù)據(jù)都很龐大,以及大集中方式的客戶端應(yīng)用的高并發(fā)率,所以,采用 傳統(tǒng)的與空間數(shù)據(jù)庫(kù)進(jìn)行直連的方式對(duì)空間數(shù)據(jù)訪問(wèn),將給數(shù)據(jù)庫(kù)服務(wù)器和網(wǎng)絡(luò)帶寬帶來(lái) 巨大壓力。同時(shí)也很大的影響客戶端用戶的使用效率。發(fā)明內(nèi)容
本發(fā)明提供一種
為解決上述技術(shù)問(wèn)題,本發(fā)明提供的一個(gè)技術(shù)方案是
提供一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),包括數(shù)據(jù)層、業(yè)務(wù)層以及服務(wù)層,所 述業(yè)務(wù)層包括消息通信模塊、空間數(shù)據(jù)服務(wù)引擎以及空間數(shù)據(jù)訪問(wèn)接口 ;所述服務(wù)層包括 本地空間數(shù)據(jù)庫(kù)以及業(yè)務(wù)接口 ;所述空間數(shù)據(jù)訪問(wèn)接口用于提供對(duì)所述數(shù)據(jù)層的空間數(shù)據(jù) 庫(kù)的矢量數(shù)據(jù)和屬性數(shù)據(jù)的訪問(wèn)操作;所述空間數(shù)據(jù)服務(wù)引擎用于通過(guò)所述空間數(shù)據(jù)訪問(wèn) 接口對(duì)所述數(shù)據(jù)層的空間數(shù)據(jù)庫(kù)進(jìn)行讀取、矢量數(shù)據(jù)回寫、基于Http協(xié)議的數(shù)據(jù)傳輸、矢 量數(shù)據(jù)同步、連接池以及矢量數(shù)據(jù)緩存;所述本地空間數(shù)據(jù)庫(kù)用于對(duì)服務(wù)器端發(fā)送過(guò)來(lái)的 空間數(shù)據(jù)建立本地緩存,將接受的空間數(shù)據(jù)流以及本地編輯的數(shù)據(jù)上傳至服務(wù)器,同時(shí)保 持與服務(wù)器的內(nèi)容同步。
其中,所述空間數(shù)據(jù)服務(wù)引擎包括緩沖池,用于將空間數(shù)據(jù)庫(kù)中的矢量數(shù)據(jù)緩存 到本地空間數(shù)據(jù)庫(kù)中;版本管理模塊,用于通過(guò)建立數(shù)據(jù)庫(kù)修改標(biāo)志的增量記錄來(lái)對(duì)空間 數(shù)據(jù)庫(kù)狀態(tài)進(jìn)行更新,并通過(guò)引用狀態(tài)的更新來(lái)完成版本的更新以及協(xié)調(diào)沖突,以實(shí)現(xiàn)多 用戶編輯下版本的并發(fā)控制;數(shù)據(jù)編輯模塊,用于將客戶端對(duì)矢量數(shù)據(jù)或者屬性數(shù)據(jù)的修 改結(jié)果以原子操作回寫到空間數(shù)據(jù)庫(kù)中,并通知緩沖池更新相應(yīng)數(shù)據(jù)以及發(fā)布數(shù)據(jù)同步消 息;連接池,用于空間數(shù)據(jù)庫(kù)回寫和數(shù)據(jù)緩沖;SQL請(qǐng)求轉(zhuǎn)發(fā)模塊,用于根據(jù)用戶需要將一 些特定SQL語(yǔ)句直接轉(zhuǎn)發(fā)給空間數(shù)據(jù)庫(kù);以及集群服務(wù)模塊,用于將多臺(tái)數(shù)據(jù)服務(wù)器進(jìn)行 集群管理,保持多臺(tái)數(shù)據(jù)服務(wù)器間的數(shù)據(jù)一致性與完整性。
其中,所述緩沖池包括內(nèi)存管理模塊,用于通過(guò)API訪問(wèn)緩沖中的數(shù)據(jù);線程管 理模塊,用于提供線程生命周期管理;索引器,用于根據(jù)空間數(shù)據(jù)和屬性數(shù)據(jù),分別采用網(wǎng) 格空間索引和基于Hash算法的索引進(jìn)行數(shù)據(jù)的查詢和訪問(wèn);本地序列化模塊,用于根據(jù)需 要將當(dāng)前緩沖池的數(shù)據(jù)執(zhí)行快照,并序列化到本地系統(tǒng)文件中,成為文件數(shù)據(jù)源;緩沖池填 充模塊,用于根據(jù)配置文件將空間數(shù)據(jù)庫(kù)中的數(shù)據(jù)填充緩沖池;以及緩沖池刷新模塊,用于 將被編輯過(guò)的數(shù)據(jù)同步到緩沖池中。
其中,所述數(shù)據(jù)編輯模塊包括事務(wù)管理模塊,用于提供數(shù)據(jù)庫(kù)的原子性操作管理;矢量數(shù)據(jù)回寫模塊,用于將客戶端提交的一個(gè)或多個(gè)的修改記錄寫入空間數(shù)據(jù)庫(kù);同 步消息管理模塊,用于將數(shù)據(jù)同步消息發(fā)送給客戶端,使客戶端本地空間數(shù)據(jù)庫(kù)中的數(shù)據(jù) 同步做出修改;以及緩沖池更新模塊,用于通知緩沖池已有對(duì)象發(fā)生修改。
其中,所述連接池包括初始化連接池模塊,用于通過(guò)配置文件或者環(huán)境變量讀取 連接數(shù)據(jù)庫(kù)所必須的信息,以及最大和最小連接數(shù)、等待最大延遲等;請(qǐng)求數(shù)據(jù)庫(kù)連接模 塊,用于返回?cái)?shù)據(jù)庫(kù)連接對(duì)象,以及用于當(dāng)沒有空閑連接對(duì)象,且當(dāng)前連接數(shù)未達(dá)到最大連 接數(shù)時(shí),創(chuàng)建新的連接并放置到連接池中;以及關(guān)閉數(shù)據(jù)庫(kù)連接模塊,用于在使用連接對(duì)象 后關(guān)閉連接對(duì)象。
其中,所述空間數(shù)據(jù)訪問(wèn)接口包括數(shù)據(jù)庫(kù)連接模塊,用于建立與空間數(shù)據(jù)庫(kù)的連 接,并返回連接句柄;數(shù)據(jù)庫(kù)查詢模塊,用于提供基于空間條件、屬性條件、以及空間和屬性 混合條件的查詢,其中,查詢的空間數(shù)據(jù)結(jié)構(gòu)符合Oracle Spatial的SDO_Geometry結(jié)構(gòu); 數(shù)據(jù)庫(kù)編輯模塊,用于提供對(duì)空間數(shù)據(jù)庫(kù)的基于條件的刪除、行的修改、新增行等編輯,其 中,輸入的空間數(shù)據(jù)參數(shù)的結(jié)構(gòu)符合Oracle Spatial的SDO_Geometry結(jié)構(gòu);以及事務(wù)模 塊,用于提供基于批編輯的原子性數(shù)據(jù)庫(kù)操作。
其中,所述本地空間數(shù)據(jù)庫(kù)包括空間數(shù)據(jù)緩存,用于管理所有經(jīng)服務(wù)器接收的空 間數(shù)據(jù)流,將其建庫(kù)形成本地空間數(shù)據(jù)庫(kù);空間索引模塊,用于優(yōu)化對(duì)海量空間數(shù)據(jù)的空間 檢索;事務(wù)緩存,用于對(duì)編輯事務(wù)的歷史數(shù)據(jù)進(jìn)行緩存,以及用于對(duì)編輯進(jìn)行Undo和Redo 操作;序列化模塊,用于將全內(nèi)存方式運(yùn)行的空間數(shù)據(jù)序列化到本地磁盤和從本地磁盤恢 復(fù)空間數(shù)據(jù)緩存;HTTP通信模塊,用于負(fù)責(zé)本地空間數(shù)據(jù)庫(kù)與服務(wù)器的空間數(shù)據(jù)傳輸,通 過(guò)HTTP協(xié)議實(shí)現(xiàn)空間數(shù)據(jù)請(qǐng)求的上傳和空間數(shù)據(jù)的下載;消息通信模塊,用于實(shí)現(xiàn)服務(wù)器 與本地空間數(shù)據(jù)庫(kù)的同步通知;空間數(shù)據(jù)異步傳輸與建庫(kù)模塊,用于在初始開圖時(shí)采用異 步傳輸方式對(duì)大量空間數(shù)據(jù)進(jìn)行傳輸,以及用于在在異步傳輸時(shí)進(jìn)行漸進(jìn)式建庫(kù)與數(shù)據(jù)獲 ?。籊e0Star接口 ;以及擴(kuò)展接口,用于服務(wù)器的通信和其他關(guān)于本地空間數(shù)據(jù)庫(kù)的操作, 主要包括服務(wù)器數(shù)據(jù)請(qǐng)求接口、序列化接口以及屬性SQL查詢接口。
其中,所述集群服務(wù)模塊包括負(fù)載調(diào)度器,用于將客戶端請(qǐng)求發(fā)送到服務(wù)器池上 執(zhí)行;服務(wù)器池,用于根據(jù)客戶請(qǐng)求執(zhí)行相應(yīng)的服務(wù),所述包括數(shù)據(jù)檢索、數(shù)據(jù)編輯、信息獲 ??;以及共享存儲(chǔ)系統(tǒng),用于作為服務(wù)器池共享的存儲(chǔ)區(qū),以使服務(wù)器池?fù)碛邢嗤膬?nèi)容以 及提供相同的服務(wù);所述負(fù)載調(diào)度器、服務(wù)器池和共享存儲(chǔ)系統(tǒng)通過(guò)高速網(wǎng)絡(luò)相連接。
其中,所述共享存儲(chǔ)系統(tǒng)是數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)。
其中,所述數(shù)據(jù)庫(kù)版本管理模塊包括數(shù)據(jù)庫(kù)狀態(tài)記錄模塊,用于當(dāng)修改某一特定 數(shù)據(jù)庫(kù)時(shí)將其變更標(biāo)示為一個(gè)狀態(tài)。所述狀態(tài)為打開狀態(tài)或者關(guān)閉狀態(tài);版本管理模塊, 用于通過(guò)一組關(guān)系表格在數(shù)據(jù)層和要素層管理空間數(shù)據(jù)庫(kù),其中,在數(shù)據(jù)庫(kù)層上,所述版本 管理模塊用于利用版本表記錄空間數(shù)據(jù)庫(kù)每個(gè)版本的名稱、創(chuàng)建者、創(chuàng)建時(shí)間,利用態(tài)表記 錄所指向的數(shù)據(jù)庫(kù)狀態(tài)以及數(shù)據(jù)庫(kù)狀態(tài)間的線索聯(lián)系,利用修改記錄表記錄被修改過(guò)的空 間數(shù)據(jù)庫(kù)中的表,在要素層上,所述版本管理模塊用于利用基表記錄原始狀態(tài)的數(shù)據(jù),利用 修改表記錄對(duì)基表的修改信息,利用版本化視圖提供以上關(guān)系表格重構(gòu)的數(shù)據(jù)庫(kù)版本的內(nèi) 容;以及版本沖突協(xié)調(diào)模塊,用于在提交編輯后的子版本時(shí),進(jìn)行版本協(xié)調(diào),然后判斷是否 存在沖突,并當(dāng)確定存在沖突時(shí)提取沖突信息解決沖突。
本發(fā)明的有益效果是,本發(fā)明采用跨平臺(tái)空間數(shù)據(jù)服務(wù)引擎及本地空間數(shù)據(jù)庫(kù)管理技術(shù),構(gòu)建一套跨平臺(tái)部署的三層架構(gòu)空間數(shù)據(jù)服務(wù)平臺(tái)及相關(guān)的客戶端內(nèi)存空間數(shù) 據(jù)庫(kù)。系統(tǒng)使用標(biāo)準(zhǔn)的HTTP協(xié)議,服務(wù)器將采用擴(kuò)展Apache Web服務(wù)器實(shí)現(xiàn)對(duì)Oracle SpatiaUArcSDE等空間數(shù)據(jù)庫(kù)的訪問(wèn)和數(shù)據(jù)調(diào)度,客戶機(jī)將采用GeoStar兼容的空間數(shù)據(jù) 庫(kù)訪問(wèn)接口,實(shí)現(xiàn)對(duì)服務(wù)器空間數(shù)據(jù)庫(kù)的快速獲取和基于內(nèi)存的快速訪問(wèn),以滿足電網(wǎng)空 間信息服務(wù)平臺(tái)大量用戶并發(fā)訪問(wèn)時(shí)的空間數(shù)據(jù)獲取效率,提升用戶體驗(yàn)。
圖1是本發(fā)明一實(shí)施方式中一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng)的系統(tǒng)架構(gòu)圖 一種車輛調(diào)度系統(tǒng)的系統(tǒng)架構(gòu)圖2是本發(fā)明一實(shí)施方式中緩沖池結(jié)構(gòu)示意圖
圖3是本發(fā)明一實(shí)施方式中本地空間數(shù)據(jù)庫(kù)結(jié)構(gòu)示意圖。
主要元件符號(hào)說(shuō)明
100、電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng);1、消息通信模塊;
2、空間數(shù)據(jù)服務(wù)引擎;3、空間數(shù)據(jù)訪問(wèn)接口 ;4、本地空間數(shù)據(jù)庫(kù);
5、業(yè)務(wù)接口 ;21、緩沖池;22、版本管理模塊;23、數(shù)據(jù)編輯模塊;
24、連接池;25、SQL請(qǐng)求轉(zhuǎn)發(fā)模塊。
具體實(shí)施方式
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式 并配合附圖詳予說(shuō)明。
請(qǐng)參閱圖1,是本發(fā)明一實(shí)施方式中一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng)的系 統(tǒng)架構(gòu)圖。一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng)100包括數(shù)據(jù)層、業(yè)務(wù)層以及服務(wù)層,所 述業(yè)務(wù)層包括消息通信模塊1、空間數(shù)據(jù)服務(wù)引擎2以及空間數(shù)據(jù)訪問(wèn)接口 3 ;所述服務(wù)層 包括本地空間數(shù)據(jù)庫(kù)4以及業(yè)務(wù)接口 5。
所述空間數(shù)據(jù)訪問(wèn)接口 3用于提供對(duì)所述數(shù)據(jù)層的空間數(shù)據(jù)庫(kù)的矢量數(shù)據(jù)和屬 性數(shù)據(jù)的訪問(wèn)操作。所述空間數(shù)據(jù)服務(wù)引擎2用于通過(guò)所述空間數(shù)據(jù)訪問(wèn)接口 3對(duì)所述數(shù) 據(jù)層的空間數(shù)據(jù)庫(kù)進(jìn)行讀取、矢量數(shù)據(jù)回寫、基于Http協(xié)議的數(shù)據(jù)傳輸、矢量數(shù)據(jù)同步、連 接池以及矢量數(shù)據(jù)緩存。所述本地空間數(shù)據(jù)庫(kù)4用于對(duì)服務(wù)器端發(fā)送過(guò)來(lái)的空間數(shù)據(jù)建立 本地緩存,將接受的空間數(shù)據(jù)流以及本地編輯的數(shù)據(jù)上傳至服務(wù)器,同時(shí)保持與服務(wù)器的 內(nèi)容同步。
所述空間數(shù)據(jù)服務(wù)引擎2包括緩沖池21、版本管理模塊22、數(shù)據(jù)編輯模塊23、連 接池24、SQL請(qǐng)求轉(zhuǎn)發(fā)模塊25以及集群服務(wù)模塊。緩沖池21用于將空間數(shù)據(jù)庫(kù)中的矢量 數(shù)據(jù)緩存到本地空間數(shù)據(jù)庫(kù)4中。版本管理模塊22用于通過(guò)建立數(shù)據(jù)庫(kù)修改標(biāo)志的增量 記錄來(lái)對(duì)空間數(shù)據(jù)庫(kù)狀態(tài)進(jìn)行更新,并通過(guò)引用狀態(tài)的更新來(lái)完成版本的更新以及協(xié)調(diào)沖 突,以實(shí)現(xiàn)多用戶編輯下版本的并發(fā)控制。數(shù)據(jù)編輯模塊23用于將客戶端對(duì)矢量數(shù)據(jù)或者 屬性數(shù)據(jù)的修改結(jié)果以原子操作回寫到空間數(shù)據(jù)庫(kù)中,并通知緩沖池21更新相應(yīng)數(shù)據(jù)以 及發(fā)布數(shù)據(jù)同步消息。連接池24用于空間數(shù)據(jù)庫(kù)回寫和數(shù)據(jù)緩沖。SQL請(qǐng)求轉(zhuǎn)發(fā)模塊25 用于根據(jù)用戶需要將一些特定SQL語(yǔ)句直接轉(zhuǎn)發(fā)給空間數(shù)據(jù)庫(kù)。集群服務(wù)模塊26用于將 多臺(tái)數(shù)據(jù)服務(wù)器進(jìn)行集群管理,保持多臺(tái)數(shù)據(jù)服務(wù)器間的數(shù)據(jù)一致性與完整性。
請(qǐng)參閱圖2,為本發(fā)明一實(shí)施方式中緩沖池結(jié)構(gòu)的示意圖。空間數(shù)據(jù)緩存最主要 的功能是將空間數(shù)據(jù)庫(kù)中的矢量數(shù)據(jù)緩存到本地內(nèi)存中,減少空間數(shù)據(jù)庫(kù)的IO操作,大幅 度提高空間數(shù)據(jù)的訪問(wèn)速度和請(qǐng)求響應(yīng)速度。根據(jù)項(xiàng)目有關(guān)客戶端數(shù)據(jù)訪問(wèn)特點(diǎn)的前期調(diào) 研,決定緩沖池在apache服務(wù)器啟動(dòng)時(shí),一次性存放配置文件中指定的所有空間數(shù)據(jù)。
所述緩沖池21包括內(nèi)存管理模塊、線程管理模塊、索引器、本地序列化模塊、矢量 數(shù)據(jù)請(qǐng)求模塊、緩沖池填充模塊以及緩沖池刷新模塊。內(nèi)存管理模塊用于通過(guò)API訪問(wèn)緩 沖中的數(shù)據(jù)。緩沖池21中的物理內(nèi)存將被組織成邏輯上的cache表,以映射DBMS上的表。 數(shù)據(jù)置換算法將追蹤熱點(diǎn)數(shù)據(jù),提高數(shù)據(jù)的命中率。
線程管理模塊用于提供線程生命周期管理,提供線程的調(diào)度和生成、摧毀等線程 生命周期管理,保證在并發(fā)訪問(wèn)下,內(nèi)存中數(shù)據(jù)的完整性。索引器用于根據(jù)空間數(shù)據(jù)和屬 性數(shù)據(jù),分別采用網(wǎng)格空間索引和基于Hash算法的索引進(jìn)行數(shù)據(jù)的查詢和訪問(wèn)。本地序 列化模塊用于根據(jù)需要將當(dāng)前緩沖池的數(shù)據(jù)執(zhí)行快照,并序列化到本地系統(tǒng)文件中,成為 文件數(shù)據(jù)源,被序列化后的文件可被緩沖池加載,使得空間數(shù)據(jù)引擎在即使沒有Oracle Spatial的情況下也能提供數(shù)據(jù)的訪問(wèn)。緩沖池填充模塊用于根據(jù)配置文件將空間數(shù)據(jù)庫(kù) 中的數(shù)據(jù)填充緩沖池。緩沖池刷新模塊用于將被編輯過(guò)的數(shù)據(jù)同步到緩沖池中,以保證數(shù) 據(jù)與Oracle Spatial的一致性。
空間數(shù)據(jù)庫(kù)版本是指向某一特定數(shù)據(jù)庫(kù)狀態(tài)的數(shù)據(jù)庫(kù)記錄,創(chuàng)建空間數(shù)據(jù)庫(kù)的一 個(gè)版本實(shí)際是生成并選擇了空間數(shù)據(jù)庫(kù)的某一狀態(tài),從而產(chǎn)生了整個(gè)空間數(shù)據(jù)庫(kù)的邏輯快 照,當(dāng)用戶編輯不同版本空間數(shù)據(jù)庫(kù)時(shí),所有中間結(jié)果都緩存在各個(gè)數(shù)據(jù)庫(kù)狀態(tài)之中,當(dāng)對(duì) 數(shù)據(jù)庫(kù)編輯完畢并提交數(shù)據(jù)成果時(shí),空間數(shù)據(jù)庫(kù)管理系統(tǒng)通過(guò)對(duì)比各版本所指向的數(shù)據(jù)庫(kù) 狀態(tài),檢查各狀態(tài)下空間數(shù)據(jù)庫(kù)的修改內(nèi)容,并以交互方式或事先設(shè)定好的取舍方案保留 不同版本中的變更要素。
所述數(shù)據(jù)庫(kù)版本管理模塊22包括數(shù)據(jù)庫(kù)狀態(tài)記錄模塊、版本管理模塊以及版本 沖突協(xié)調(diào)模塊。數(shù)據(jù)庫(kù)狀態(tài)記錄模塊,用于當(dāng)修改某一特定數(shù)據(jù)庫(kù)時(shí)將其變更標(biāo)示為一個(gè) 狀態(tài)。所述狀態(tài)為打開狀態(tài)或者關(guān)閉狀態(tài);版本管理模塊,用于通過(guò)一組關(guān)系表格在數(shù)據(jù)層 和要素層管理空間數(shù)據(jù)庫(kù),其中,在數(shù)據(jù)庫(kù)層上,所述版本管理模塊用于利用版本表記錄空 間數(shù)據(jù)庫(kù)每個(gè)版本的名稱、創(chuàng)建者、創(chuàng)建時(shí)間,利用態(tài)表記錄所指向的數(shù)據(jù)庫(kù)狀態(tài)以及數(shù)據(jù) 庫(kù)狀態(tài)間的線索聯(lián)系,利用修改記錄表記錄被修改過(guò)的空間數(shù)據(jù)庫(kù)中的表,在要素層上,所 述版本管理模塊用于利用基表記錄原始狀態(tài)的數(shù)據(jù),利用修改表記錄對(duì)基表的修改信息, 利用版本化視圖提供以上關(guān)系表格重構(gòu)的數(shù)據(jù)庫(kù)版本的內(nèi)容。版本沖突協(xié)調(diào)模塊用于在提 交編輯后的子版本時(shí),進(jìn)行版本協(xié)調(diào),然后判斷是否存在沖突,并當(dāng)確定存在沖突時(shí)提取沖 突信息解決沖突。以上數(shù)據(jù)庫(kù)版本管理模塊22采用這種協(xié)調(diào)機(jī)制解決了不同狀態(tài)中因?qū)?同一記錄的修改而引起的版本沖突,保證空間數(shù)據(jù)庫(kù)的完整一致性。
所述數(shù)據(jù)編輯模塊23包括事務(wù)管理模塊、矢量數(shù)據(jù)回寫模塊、同步消息管理模塊 以及緩沖池更新模塊。事務(wù)管理模塊用于提供數(shù)據(jù)庫(kù)的原子性操作管理。矢量數(shù)據(jù)回寫模 塊用于將客戶端提交的一個(gè)或多個(gè)的修改記錄寫入空間數(shù)據(jù)庫(kù)。同步消息管理模塊用于將 數(shù)據(jù)同步消息發(fā)送給客戶端,使客戶端本地空間數(shù)據(jù)庫(kù)中的數(shù)據(jù)同步做出修改。緩沖池更 新模塊用于通知緩沖池已有對(duì)象發(fā)生修改。
所述連接池24包括初始化連接池模塊、請(qǐng)求數(shù)據(jù)庫(kù)連接模塊以及關(guān)閉數(shù)據(jù)庫(kù)連接模塊。初始化連接池模塊用于通過(guò)配置文件或者環(huán)境變量讀取連接數(shù)據(jù)庫(kù)所必須的信 息,以及最大和最小連接數(shù)、等待最大延遲等。請(qǐng)求數(shù)據(jù)庫(kù)連接模塊用于返回?cái)?shù)據(jù)庫(kù)連接對(duì) 象,以及用于當(dāng)沒有空閑連接對(duì)象,且當(dāng)前連接數(shù)未達(dá)到最大連接數(shù)時(shí),創(chuàng)建新的連接并放 置到連接池中。關(guān)閉數(shù)據(jù)庫(kù)連接模塊用于在使用連接對(duì)象后關(guān)閉連接對(duì)象。
所述空間數(shù)據(jù)訪問(wèn)接口 3包括數(shù)據(jù)庫(kù)連接模塊、數(shù)據(jù)庫(kù)查詢模塊、數(shù)據(jù)庫(kù)編輯模 塊、事務(wù)模塊。數(shù)據(jù)庫(kù)連接模塊用于建立與空間數(shù)據(jù)庫(kù)的連接,并返回連接句柄。數(shù)據(jù)庫(kù)查 詢模塊,用于提供基于空間條件、屬性條件、以及空間和屬性混合條件的查詢,其中,查詢的 空間數(shù)據(jù)結(jié)構(gòu)符合Oracle Spatial的SDO_Geometry結(jié)構(gòu)。數(shù)據(jù)庫(kù)編輯模塊用于提供對(duì)空 間數(shù)據(jù)庫(kù)的基于條件的刪除、行的修改、新增行等編輯,其中,輸入的空間數(shù)據(jù)參數(shù)的結(jié)構(gòu) 符合Oracle Spatial的SDO_Geometry結(jié)構(gòu)。務(wù)管理模塊用于提供基于批編輯的原子性數(shù) 據(jù)庫(kù)操作。
請(qǐng)參閱圖3,為本發(fā)明一實(shí)施方式中本地空間數(shù)據(jù)庫(kù)結(jié)構(gòu)示意圖。基于三層構(gòu)架的 多用戶矢量數(shù)據(jù)訪問(wèn)具有數(shù)據(jù)傳輸量大、并發(fā)訪問(wèn)用戶多等特點(diǎn),即使通過(guò)提高網(wǎng)絡(luò)帶寬、 增加硬件性能以及優(yōu)化數(shù)據(jù)仍舊難以滿足大數(shù)據(jù)量的快速顯示和編輯,因此需要對(duì)服務(wù)器 端發(fā)送過(guò)來(lái)的空間數(shù)據(jù)建立本地空間數(shù)據(jù)庫(kù)。
所述本地空間數(shù)據(jù)庫(kù)4包括空間數(shù)據(jù)緩存、空間索引模塊、事務(wù)緩存、序列化模 塊、HTTP通信模塊、消息通信模塊??臻g數(shù)據(jù)緩存用于管理所有經(jīng)服務(wù)器接收的空間數(shù)據(jù) 流,將其建庫(kù)形成本地空間數(shù)據(jù)庫(kù)。空間索引模塊用于優(yōu)化對(duì)海量空間數(shù)據(jù)的空間檢索。事 務(wù)緩存用于對(duì)編輯事務(wù)的歷史數(shù)據(jù)進(jìn)行緩存,以及用于對(duì)編輯進(jìn)行Undo和Redo操作。序 列化模塊用于將全內(nèi)存方式運(yùn)行的空間數(shù)據(jù)序列化到本地磁盤和從本地磁盤恢復(fù)空間數(shù) 據(jù)緩存。HTTP通信模塊用于負(fù)責(zé)本地空間數(shù)據(jù)庫(kù)與服務(wù)器的空間數(shù)據(jù)傳輸,通過(guò)HTTP協(xié)議 實(shí)現(xiàn)空間數(shù)據(jù)請(qǐng)求的上傳和空間數(shù)據(jù)的下載。消息通信模塊用于實(shí)現(xiàn)服務(wù)器與本地空間數(shù) 據(jù)庫(kù)的同步通知。擴(kuò)展接口用于服務(wù)器的通信和其他關(guān)于本地空間數(shù)據(jù)庫(kù)的操作,主要包 括服務(wù)器數(shù)據(jù)請(qǐng)求接口、序列化接口以及屬性SQL查詢接口。
所述集群服務(wù)模塊23包括負(fù)載調(diào)度器、服務(wù)器池、共享存儲(chǔ)系統(tǒng),所述負(fù)載調(diào)度 器、服務(wù)器池和共享存儲(chǔ)系統(tǒng)通過(guò)高速網(wǎng)絡(luò)相連接。負(fù)載調(diào)度器用于將客戶端請(qǐng)求發(fā)送到 服務(wù)器池上執(zhí)行。服務(wù)器池用于根據(jù)客戶請(qǐng)求執(zhí)行相應(yīng)的服務(wù),所述包括數(shù)據(jù)檢索、數(shù)據(jù)編 輯、信息獲取。共享存儲(chǔ)系統(tǒng)用于作為服務(wù)器池共享的存儲(chǔ)區(qū),以使服務(wù)器池?fù)碛邢嗤膬?nèi) 容以及提供相同的服務(wù)。所述共享存儲(chǔ)系統(tǒng)是數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)。
本發(fā)明的技術(shù)效果是本發(fā)明的電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng)采用跨平臺(tái)空 間數(shù)據(jù)服務(wù)引擎及本地空間數(shù)據(jù)庫(kù)管理技術(shù),構(gòu)建一套跨平臺(tái)部署的三層架構(gòu)空間數(shù)據(jù)服 務(wù)平臺(tái)及相關(guān)的客戶端內(nèi)存空間數(shù)據(jù)庫(kù)。系統(tǒng)使用標(biāo)準(zhǔn)的HTTP協(xié)議,服務(wù)器將采用擴(kuò)展 Apache Web服務(wù)器實(shí)現(xiàn)對(duì)Oracle Spatial>ArcSDE等空間數(shù)據(jù)庫(kù)的訪問(wèn)和數(shù)據(jù)調(diào)度,客戶 機(jī)將采用GeoStar兼容的空間數(shù)據(jù)庫(kù)訪問(wèn)接口,實(shí)現(xiàn)對(duì)服務(wù)器空間數(shù)據(jù)庫(kù)的快速獲取和基 于內(nèi)存的快速訪問(wèn),以滿足電網(wǎng)空間信息服務(wù)平臺(tái)大量用戶并發(fā)訪問(wèn)時(shí)的空間數(shù)據(jù)獲取效 率,提升用戶體驗(yàn)。解決電網(wǎng)GIS平臺(tái)全省集中部署的并發(fā)數(shù)據(jù)訪問(wèn)效率低的問(wèn)題,極大的 提高用戶訪問(wèn)并發(fā)量和緩解數(shù)據(jù)庫(kù)服務(wù)器的訪問(wèn)壓力。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā) 明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,包括數(shù)據(jù)層、業(yè)務(wù)層以及服務(wù)層,所述業(yè)務(wù)層包括消息通信模塊、空間數(shù)據(jù)服務(wù)引擎以及空間數(shù)據(jù)訪問(wèn)接口 ;所述服務(wù)層包括本地空間數(shù)據(jù)庫(kù)以及業(yè)務(wù)接口;所述空間數(shù)據(jù)訪問(wèn)接口用于提供對(duì)所述數(shù)據(jù)層的空間數(shù)據(jù)庫(kù)的矢量數(shù)據(jù)和屬性數(shù)據(jù)的訪問(wèn)操作;所述空間數(shù)據(jù)服務(wù)引擎用于通過(guò)所述空間數(shù)據(jù)訪問(wèn)接口對(duì)所述數(shù)據(jù)層的空間數(shù)據(jù)庫(kù)進(jìn)行讀取、矢量數(shù)據(jù)回寫、基于Http協(xié)議的數(shù)據(jù)傳輸、矢量數(shù)據(jù)同步、連接池以及矢量數(shù)據(jù)緩存;間數(shù)據(jù)流以及本地編輯的數(shù)據(jù)上傳至服務(wù)器,同時(shí)保持與服務(wù)器的內(nèi)容同步。
2.根據(jù)權(quán)利要求1所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述空間數(shù)據(jù)服務(wù)引擎包括緩沖池,用于將空間數(shù)據(jù)庫(kù)中的矢量數(shù)據(jù)緩存到本地空間數(shù)據(jù)庫(kù)中;版本管理模塊,用于通過(guò)建立數(shù)據(jù)庫(kù)修改標(biāo)志的增量記錄來(lái)對(duì)空間數(shù)據(jù)庫(kù)狀態(tài)進(jìn)行更新,并通過(guò)引用狀態(tài)的更新來(lái)完成版本的更新以及協(xié)調(diào)沖突,以實(shí)現(xiàn)多用戶編輯下版本的并發(fā)控制;數(shù)據(jù)編輯模塊,用于將客戶端對(duì)矢量數(shù)據(jù)或者屬性數(shù)據(jù)的修改結(jié)果以原子操作回寫到空間數(shù)據(jù)庫(kù)中,并通知緩沖池更新相應(yīng)數(shù)據(jù)以及發(fā)布數(shù)據(jù)同步消息;連接池,用于空間數(shù)據(jù)庫(kù)回寫和數(shù)據(jù)緩沖;SQL請(qǐng)求轉(zhuǎn)發(fā)模塊,用于根據(jù)用戶需要將一些特定SQL語(yǔ)句直接轉(zhuǎn)發(fā)給空間數(shù)據(jù)庫(kù);以及集群服務(wù)模塊,用于將多臺(tái)數(shù)據(jù)服務(wù)器進(jìn)行集群管理,保持多臺(tái)數(shù)據(jù)服務(wù)器間的數(shù)據(jù)一致性與完整性。
3.根據(jù)權(quán)利要求2所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述緩沖池包括內(nèi)存管理模塊,用于通過(guò)API訪問(wèn)緩沖中的數(shù)據(jù);線程管理模塊,用于提供線程生命周期管理;索引器,用于根據(jù)空間數(shù)據(jù)和屬性數(shù)據(jù),分別采用網(wǎng)格空間索引和基于Hash算法的索引進(jìn)行數(shù)據(jù)的查詢和訪問(wèn);本地序列化模塊,用于根據(jù)需要將當(dāng)前緩沖池的數(shù)據(jù)執(zhí)行快照,并序列化到本地系統(tǒng)文件中,成為文件數(shù)據(jù)源;緩沖池填充模塊,用于根據(jù)配置文件將空間數(shù)據(jù)庫(kù)中的數(shù)據(jù)填充緩沖池;以及緩沖池刷新模塊,用于將被編輯過(guò)的數(shù)據(jù)同步到緩沖池中。
4.根據(jù)權(quán)利要求2所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述數(shù)據(jù)編輯模塊包括事務(wù)管理模塊,用于提供數(shù)據(jù)庫(kù)的原子性操作管理;矢量數(shù)據(jù)回寫模塊,用于將客戶端提交的一個(gè)或多個(gè)的修改記錄寫入空間數(shù)據(jù)庫(kù); 同步消息管理模塊,用于將數(shù)據(jù)同步消息發(fā)送給客戶端,使客戶端本地空間數(shù)據(jù)庫(kù)中的數(shù)據(jù)同步做出修改;以及緩沖池更新模塊,用于通知緩沖池已有對(duì)象發(fā)生修改。
5.根據(jù)權(quán)利要求2所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述連接池包括初始化連接池模塊,用于通過(guò)配置文件或者環(huán)境變量讀取連接數(shù)據(jù)庫(kù)所必須的信息, 以及最大和最小連接數(shù)、等待最大延遲等;請(qǐng)求數(shù)據(jù)庫(kù)連接模塊,用于返回?cái)?shù)據(jù)庫(kù)連接對(duì)象,以及用于當(dāng)沒有空閑連接對(duì)象,且當(dāng)前連接數(shù)未達(dá)到最大連接數(shù)時(shí),創(chuàng)建新的連接并放置到連接池中;以及關(guān)閉數(shù)據(jù)庫(kù)連接模塊,用于在使用連接對(duì)象后關(guān)閉連接對(duì)象。
6.根據(jù)權(quán)利要求1所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述空間數(shù)據(jù)訪問(wèn)接口包括數(shù)據(jù)庫(kù)連接模塊,用于建立與空間數(shù)據(jù)庫(kù)的連接,并返回連接句柄;數(shù)據(jù)庫(kù)查詢模塊,用于提供基于空間條件、屬性條件、以及空間和屬性混合條件的查詢,其中,查詢的空間數(shù)據(jù)結(jié)構(gòu)符合Oracle Spatial的SD0_Geometry結(jié)構(gòu);數(shù)據(jù)庫(kù)編輯模塊,用于提供對(duì)空間數(shù)據(jù)庫(kù)的基于條件的刪除、行的修改、新增行等編輯,其中,輸入的空間數(shù)據(jù)參數(shù)的結(jié)構(gòu)符合OracleSpatial的SDO_Geometry結(jié)構(gòu);以及事務(wù)模塊,用于提供基于批編輯的原子性數(shù)據(jù)庫(kù)操作。
7.根據(jù)權(quán)利要求1所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述本地空間數(shù)據(jù)庫(kù)包括空間數(shù)據(jù)緩存,用于管理所有經(jīng)服務(wù)器接收的空間數(shù)據(jù)流,將其建庫(kù)形成本地空間數(shù)據(jù)庫(kù);空間索引模塊,用于優(yōu)化對(duì)海量空間數(shù)據(jù)的空間檢索;事務(wù)緩存,用于對(duì)編輯事務(wù)的歷史數(shù)據(jù)進(jìn)行緩存,以及用于對(duì)編輯進(jìn)行Undo和Redo操作;序列化模塊,用于將全內(nèi)存方式運(yùn)行的空間數(shù)據(jù)序列化到本地磁盤和從本地磁盤恢復(fù)空間數(shù)據(jù)緩存;HTTP通信模塊,用于負(fù)責(zé)本地空間數(shù)據(jù)庫(kù)與服務(wù)器的空間數(shù)據(jù)傳輸,通過(guò)HTTP協(xié)議實(shí)現(xiàn)空間數(shù)據(jù)請(qǐng)求的上傳和空間數(shù)據(jù)的下載;消息通信模塊,用于實(shí)現(xiàn)服務(wù)器與本地空間數(shù)據(jù)庫(kù)的同步通知;空間數(shù)據(jù)異步傳輸與建庫(kù)模塊,用于在初始開圖時(shí)采用異步傳輸方式對(duì)大量空間數(shù)據(jù)進(jìn)行傳輸,以及用于在在異步傳輸時(shí)進(jìn)行漸進(jìn)式建庫(kù)與數(shù)據(jù)獲??;GeoStar接口 ;以及擴(kuò)展接口,用于服務(wù)器的通信和其他關(guān)于本地空間數(shù)據(jù)庫(kù)的操作,主要包括服務(wù)器數(shù)據(jù)請(qǐng)求接口、序列化接口以及屬性SQL查詢接口。
8.根據(jù)權(quán)利要求2所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述集群服務(wù)模塊包括負(fù)載調(diào)度器,用于將客戶端請(qǐng)求發(fā)送到服務(wù)器池上執(zhí)行;服務(wù)器池,用于根據(jù)客戶請(qǐng)求執(zhí)行相應(yīng)的服務(wù),所述包括數(shù)據(jù)檢索、數(shù)據(jù)編輯、信息獲取;以及共享存儲(chǔ)系統(tǒng),用于作為服務(wù)器池共享的存儲(chǔ)區(qū),以使服務(wù)器池?fù)碛邢嗤膬?nèi)容以及提供相同的服務(wù);所述負(fù)載調(diào)度器、服務(wù)器池和共享存儲(chǔ)系統(tǒng)通過(guò)高速網(wǎng)絡(luò)相連接。
9.根據(jù)權(quán)利要求8所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述共享存儲(chǔ)系統(tǒng)是數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)。
10.根據(jù)權(quán)利要求1所述的一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)版本管理模塊包括數(shù)據(jù)庫(kù)狀態(tài)記錄模塊,用于當(dāng)修改某一特定數(shù)據(jù)庫(kù)時(shí)將其變更標(biāo)示為一個(gè)狀態(tài),所述狀態(tài)為打開狀態(tài)或者關(guān)閉狀態(tài);版本管理模塊,用于通過(guò)一組關(guān)系表格在數(shù)據(jù)層和要素層管理空間數(shù)據(jù)庫(kù),其中,在數(shù)據(jù)庫(kù)層上,所述版本管理模塊用于利用版本表記錄空間數(shù)據(jù)庫(kù)每個(gè)版本的名稱、創(chuàng)建者、創(chuàng)建時(shí)間,利用態(tài)表記錄所指向的數(shù)據(jù)庫(kù)狀態(tài)以及數(shù)據(jù)庫(kù)狀態(tài)間的線索聯(lián)系,利用修改記錄表記錄被修改過(guò)的空間數(shù)據(jù)庫(kù)中的表,在要素層上,所述版本管理模塊用于利用基表記錄原始狀態(tài)的數(shù)據(jù),利用修改表記錄對(duì)基表的修改信息,利用版本化視圖提供以上關(guān)系表格重構(gòu)的數(shù)據(jù)庫(kù)版本的內(nèi)容;以及版本沖突協(xié)調(diào)模塊,用于在提交編輯后的子版本時(shí),進(jìn)行版本協(xié)調(diào),然后判斷是否存在沖突,并當(dāng)確定存在沖突時(shí)提取沖突信息解決沖突。
全文摘要
本發(fā)明公開一種電力GIS跨平臺(tái)空間數(shù)據(jù)服務(wù)系統(tǒng),采用跨平臺(tái)空間數(shù)據(jù)服務(wù)引擎及本地空間數(shù)據(jù)庫(kù)管理技術(shù),構(gòu)建一套跨平臺(tái)部署的三層架構(gòu)空間數(shù)據(jù)服務(wù)平臺(tái)及相關(guān)的客戶端內(nèi)存空間數(shù)據(jù)庫(kù)。系統(tǒng)使用標(biāo)準(zhǔn)的HTTP協(xié)議,服務(wù)器將采用擴(kuò)展Apache Web服務(wù)器實(shí)現(xiàn)對(duì)OracleSpatial、ArcSDE等空間數(shù)據(jù)庫(kù)的訪問(wèn)和數(shù)據(jù)調(diào)度,客戶機(jī)將采用GeoStar兼容的空間數(shù)據(jù)庫(kù)訪問(wèn)接口,實(shí)現(xiàn)對(duì)服務(wù)器空間數(shù)據(jù)庫(kù)的快速獲取和基于內(nèi)存的快速訪問(wèn),以滿足電網(wǎng)空間信息服務(wù)平臺(tái)大量用戶并發(fā)訪問(wèn)時(shí)的空間數(shù)據(jù)獲取效率,提升用戶體驗(yàn)。
文檔編號(hào)G06F17/30GK102999584SQ201210458939
公開日2013年3月27日 申請(qǐng)日期2012年11月14日 優(yōu)先權(quán)日2012年11月14日
發(fā)明者楊成月, 肖志峰, 余建輝, 包勝, 趙光, 陳姣, 俞松 申請(qǐng)人:廈門億力吉奧信息科技有限公司, 國(guó)家電網(wǎng)公司