技術(shù)領(lǐng)域
[0001] 本
發(fā)明屬于電
力系統(tǒng)實(shí)時(shí)數(shù)據(jù)庫(kù)領(lǐng)域,特別是一種基于IEC61970標(biāo)準(zhǔn)的實(shí)時(shí)數(shù)據(jù)庫(kù)群集實(shí)現(xiàn)方法。
背景技術(shù)
[0002] 電力業(yè)務(wù)應(yīng)用采集的實(shí)時(shí)數(shù)據(jù),主要包括調(diào)度自動(dòng)化系統(tǒng)、
電能計(jì)量系統(tǒng)、保護(hù)信息和故障管理系統(tǒng)、配電自動(dòng)化系統(tǒng)、氣象系統(tǒng)、雷電監(jiān)測(cè)系統(tǒng)、電能
質(zhì)量監(jiān)測(cè)系統(tǒng)、輸變電狀態(tài)監(jiān)測(cè)系統(tǒng)、用電信息采集系統(tǒng)等。隨著智能
電網(wǎng)建設(shè)的深入,電力業(yè)務(wù)越來越多,所產(chǎn)生的數(shù)據(jù)規(guī)模越來越龐大。企業(yè)對(duì)打破信息壁壘,統(tǒng)一數(shù)據(jù)管理的需求越來越強(qiáng)烈,目前迫切需要提供一個(gè)數(shù)據(jù)平臺(tái),能夠同時(shí)滿足日益增長(zhǎng)的海量數(shù)據(jù)存儲(chǔ)
訪問和舊系統(tǒng)的融合改造需求。由于舊系統(tǒng)已經(jīng)包含各種類型的實(shí)時(shí)數(shù)據(jù)庫(kù),而且其使用的
操作系統(tǒng)平臺(tái)也不盡相同。這就要求設(shè)計(jì)的數(shù)據(jù)平臺(tái)是異構(gòu)的,并且平臺(tái)向外提供的訪問能滿足跨平臺(tái)的要求。
發(fā)明內(nèi)容
[0003] 針對(duì)
現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供了一種適用于系統(tǒng)企業(yè)數(shù)據(jù)的存儲(chǔ)訪問機(jī)制,處理日益增長(zhǎng)的電力業(yè)務(wù)海量數(shù)據(jù)存儲(chǔ)訪問,同時(shí)實(shí)現(xiàn)舊系統(tǒng)的融合改造的基于IEC61970標(biāo)準(zhǔn)的實(shí)時(shí)數(shù)據(jù)庫(kù)群集實(shí)現(xiàn)方法。
[0004] 本發(fā)明的目的通過以下技術(shù)方案實(shí)現(xiàn)。
[0005] 一種基于IEC61970標(biāo)準(zhǔn)的實(shí)時(shí)數(shù)據(jù)庫(kù)群集實(shí)現(xiàn)方法,步驟包括:
[0006] 1)實(shí)現(xiàn)基于IEC61970的實(shí)時(shí)數(shù)據(jù)庫(kù)的群集管理:客戶端在訪問群集數(shù)據(jù)庫(kù)中數(shù)據(jù)前,先與群集
服務(wù)器建立連接,然后通過群集服務(wù)器的測(cè)點(diǎn)
位置解析服務(wù),確定是否有權(quán)限訪問測(cè)點(diǎn)以及測(cè)點(diǎn)存在于哪個(gè)數(shù)據(jù)庫(kù)中,如果有權(quán)限訪問則返回?cái)?shù)據(jù)庫(kù)的IP地址、監(jiān)聽端口號(hào)、用戶名和密碼,客戶端連接具體數(shù)據(jù)庫(kù)訪問數(shù)據(jù)后斷開與數(shù)據(jù)庫(kù)的連接;
[0007] 2)實(shí)現(xiàn)基于IEC61970的模型的數(shù)據(jù)訪問:數(shù)據(jù)訪問部署包括Web
應(yīng)用服務(wù)器群集,用于部署管理應(yīng)用、GDA的WebService服務(wù)、HSDA的WebSrevice服務(wù)、TSDA的WebService服務(wù)、CORBA
中間件服務(wù)器,用于部署HSDA的CORBA和TSDA的CORBA服務(wù)和
數(shù)據(jù)中心的關(guān)系數(shù)據(jù)庫(kù)服務(wù);訪問
接口以CORBA提供,并基于CORBA發(fā)布WebService;
[0008] 3)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)透明訪問:定義異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)通用接口規(guī)范,實(shí)現(xiàn)不同廠商實(shí)時(shí)數(shù)據(jù)庫(kù)統(tǒng)一
應(yīng)用程序編程接口;
[0009] 4)實(shí)現(xiàn)并發(fā)訪問:當(dāng)平臺(tái)只有一個(gè)實(shí)時(shí)庫(kù)異構(gòu)代理服務(wù)時(shí),認(rèn)為所有的訪問都需要經(jīng)過唯一
節(jié)點(diǎn),只需要保證全局的線程安全就;如果數(shù)據(jù)訪問規(guī)模擴(kuò)大,一個(gè)異構(gòu)代理服務(wù)無法承受訪問壓力時(shí),需要配置多個(gè)異構(gòu)代理服務(wù),則設(shè)計(jì)了一個(gè)單獨(dú)的實(shí)時(shí)數(shù)據(jù)訪問
鎖服務(wù),平臺(tái)使用實(shí)時(shí)數(shù)據(jù)庫(kù)的數(shù)據(jù)類型包括測(cè)點(diǎn)屬性、實(shí)時(shí)數(shù)據(jù)、訂閱數(shù)據(jù),實(shí)時(shí)數(shù)據(jù)和訂閱配置都基于測(cè)點(diǎn)屬性,設(shè)計(jì)了兩層鎖都使用測(cè)點(diǎn)標(biāo)志作為鍵的Hash?Map實(shí)現(xiàn),對(duì)測(cè)點(diǎn)屬性的訪問優(yōu)先級(jí)更高LH,對(duì)實(shí)時(shí)數(shù)據(jù)和訂閱數(shù)據(jù)的訪問優(yōu)先級(jí)較低LL,當(dāng)代理接收到客戶端的訪問
請(qǐng)求時(shí),如果是測(cè)點(diǎn)訪問的,則只需要判斷LH,否則,則需要判斷LH和LL。
[0010] 進(jìn)一步的,步驟2)中訪問接口使用CORBA客戶端訪問海量歷史/準(zhǔn)實(shí)時(shí)數(shù)據(jù)管理平臺(tái)模型訪問接口或者直接使用WebService接口。
[0011] 相比于現(xiàn)有技術(shù),本發(fā)明的優(yōu)點(diǎn)在于:基于IEC61970實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)庫(kù)異構(gòu)群集,屏蔽了異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的訪問差異性,同時(shí)完成了基于模型的數(shù)據(jù)訪問方法實(shí)現(xiàn),解決了并發(fā)訪問問題。從而能夠同時(shí)滿足日益增長(zhǎng)的海量數(shù)據(jù)存儲(chǔ)訪問和舊系統(tǒng)的融合改造需求。本方法所設(shè)計(jì)的實(shí)時(shí)數(shù)據(jù)庫(kù)平臺(tái)是異構(gòu)的,向外提供的訪問接口支持透明訪問,并支持分布式并發(fā)訪問。
附圖說明
[0012] 圖1是群集數(shù)據(jù)庫(kù)總體結(jié)構(gòu)圖。
[0013] 圖2是基于模型的數(shù)據(jù)訪問部署圖。
[0014] 圖3是基于模型的數(shù)據(jù)訪問結(jié)構(gòu)圖。
[0015] 圖4是異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)接口的透明訪問示意圖。
具體實(shí)施方式
[0016] 下面結(jié)合
說明書附圖和具體的
實(shí)施例,對(duì)本發(fā)明作詳細(xì)描述。
[0017] 基于IEC61970的實(shí)時(shí)數(shù)據(jù)庫(kù)的群集管理實(shí)現(xiàn)
[0018] 由于單個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù)的測(cè)點(diǎn)數(shù)是有限的,為了能夠?qū)崿F(xiàn)無限平滑擴(kuò)容,我們提出了群集數(shù)據(jù)庫(kù)的概念。群集數(shù)據(jù)庫(kù)是將多個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù)構(gòu)建成一個(gè)邏輯上的統(tǒng)一體并提供服務(wù),從而實(shí)現(xiàn)平滑擴(kuò)容。附圖1給出了群集數(shù)據(jù)庫(kù)的整體結(jié)構(gòu),存儲(chǔ)載體是多個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù)。
[0019] 客戶端在訪問群集數(shù)據(jù)庫(kù)中數(shù)據(jù)前,先與群集服務(wù)器建立連接,然后通過群集服務(wù)器的測(cè)點(diǎn)位置解析服務(wù),確定是否有權(quán)限訪問測(cè)點(diǎn)以及測(cè)點(diǎn)存在于哪個(gè)數(shù)據(jù)庫(kù)中,如果有權(quán)限訪問則返回?cái)?shù)據(jù)庫(kù)的IP地址、監(jiān)聽端口號(hào)、用戶名和密碼,客戶端連接具體數(shù)據(jù)庫(kù)訪問數(shù)據(jù)后斷開與數(shù)據(jù)庫(kù)的連接。
[0020] 集群數(shù)據(jù)庫(kù)分為以下幾個(gè)模
塊:
[0021] 1)日志模塊對(duì)用戶對(duì)群集數(shù)據(jù)庫(kù)的訪問進(jìn)行記錄,日志記錄內(nèi)容如下:
[0022] 建立、斷開與群集數(shù)據(jù)庫(kù)的連接
[0023] 向測(cè)點(diǎn)寫入、讀取數(shù)據(jù)
[0024] 對(duì)測(cè)點(diǎn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)
[0025] 出錯(cuò)設(shè)計(jì)部分所有錯(cuò)誤信息
[0026] 2)平臺(tái)管理模塊需提供以下功能:
[0027] 數(shù)據(jù)庫(kù)節(jié)點(diǎn)信息維護(hù)
[0028] 群集數(shù)據(jù)庫(kù)用戶管理
[0029] 群集數(shù)據(jù)庫(kù)測(cè)點(diǎn)管理
[0030] 群集數(shù)據(jù)測(cè)點(diǎn)組管理
[0031] 群集數(shù)據(jù)庫(kù)權(quán)限管理
[0032] 3)整個(gè)群集數(shù)據(jù)庫(kù)的輸入輸出界面分成三層:
[0033] 最底層為數(shù)據(jù)庫(kù)級(jí)API,提供數(shù)據(jù)庫(kù)的訪問接口;
中間層為數(shù)據(jù)庫(kù)級(jí)UAPI,其在數(shù)據(jù)庫(kù)級(jí)API之上通過UAPI轉(zhuǎn)換模塊實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)UAPI,從而實(shí)現(xiàn)異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的統(tǒng)一接口;最上層為群集數(shù)據(jù)庫(kù)級(jí)API,其在數(shù)據(jù)庫(kù)級(jí)UAPI之上利用群集服務(wù)模塊實(shí)現(xiàn)了群集數(shù)據(jù)庫(kù)級(jí)API。整個(gè)群集數(shù)據(jù)庫(kù)的對(duì)外接口為群集數(shù)據(jù)庫(kù)級(jí)API。
[0034] 4)數(shù)據(jù)庫(kù)級(jí)UAPI模塊
[0035] 在數(shù)據(jù)庫(kù)廠商提供的API之上實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)的UAPI,結(jié)果為一個(gè)動(dòng)態(tài)鏈接庫(kù)。如果廠商API提供了與數(shù)據(jù)庫(kù)級(jí)UAPI功能相同的函數(shù),則直接將廠商API映射為數(shù)據(jù)庫(kù)級(jí)UAPI即可。如果廠商API沒有提供與數(shù)據(jù)庫(kù)級(jí)UAPI功能相同的函數(shù),則可以通過編程方式利用廠商API實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)UAPI。
[0036] 5)群集服務(wù)模塊
[0037] 群集服務(wù)模塊是在數(shù)據(jù)庫(kù)級(jí)UAPI
基礎(chǔ)上實(shí)現(xiàn)群集功能,它的連接管理函數(shù)連接的是群集服務(wù)器,測(cè)點(diǎn)管理功能由群集數(shù)據(jù)庫(kù)管理模塊提供并調(diào)用數(shù)據(jù)庫(kù)級(jí)UAPI實(shí)現(xiàn)。為了保證群集數(shù)據(jù)庫(kù)對(duì)客戶程序的透明性,群集數(shù)據(jù)庫(kù)級(jí)API的數(shù)據(jù)寫入、查詢、分析函數(shù)則需要先調(diào)用群集服務(wù)器的測(cè)點(diǎn)位置解析服務(wù)確定是否擁有對(duì)目標(biāo)測(cè)點(diǎn)數(shù)據(jù)的訪問權(quán)限,以及測(cè)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)存放位置,然后與相應(yīng)節(jié)點(diǎn)數(shù)據(jù)庫(kù)創(chuàng)建連接、調(diào)用數(shù)據(jù)庫(kù)級(jí)UAPI函數(shù)訪問數(shù)據(jù)、斷開連接、將結(jié)果返回給用戶。群集數(shù)據(jù)庫(kù)部分實(shí)現(xiàn)為基于Corba的分布式組件。
[0038] 基于IEC61970的模型的數(shù)據(jù)訪問實(shí)現(xiàn)
[0039] 1)如附圖2所示,基于模型的數(shù)據(jù)訪問部署主要分為以下部分:
[0040] Web應(yīng)用服務(wù)器群集,用于部署管理應(yīng)用、GDA的WebService服務(wù)、HSDA的WebSrevice服務(wù)、TSDA的WebService服務(wù);
[0041] CORBA中間件服務(wù)器,用于部署HSDA的CORBA和TSDA的CORBA服務(wù);
[0042] 數(shù)據(jù)中心已具備的關(guān)系數(shù)據(jù)庫(kù)服務(wù)。
[0043] 2)在數(shù)據(jù)訪問方面,訪問接口以CORBA提供,并基于CORBA發(fā)布WebService。對(duì)性能有較高要求的應(yīng)用,可以使用CORBA客戶端訪問海量歷史/準(zhǔn)實(shí)時(shí)數(shù)據(jù)管理平臺(tái)模型訪問接口;應(yīng)用也可以直接使用WebService接口。如附圖3所示。
[0044] 整個(gè)數(shù)據(jù)訪問接口分為三個(gè)層次,包括:
[0045] 基礎(chǔ)組件層:提供最基礎(chǔ)的服務(wù),包括元數(shù)據(jù)管理、緩存管理、異常管理、日志管理、持久化管理。
[0046] 核心組件層:依賴基礎(chǔ)組件層,為實(shí)現(xiàn)層提供高級(jí)的服務(wù)。包括訂閱管理、事件管理、視圖管理等組件。
[0047] 實(shí)現(xiàn)層:基于核心組件層、基礎(chǔ)組件層來實(shí)現(xiàn)標(biāo)準(zhǔn)的GDA、HSDA和TSDA規(guī)范。
[0048] 實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)透明訪問
[0049] 異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的統(tǒng)一應(yīng)用程序編程接口實(shí)現(xiàn)方法具體實(shí)現(xiàn)上包括如下幾個(gè)步驟:
[0050] 1)基于HS_API定義異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用程序編程接口規(guī)范編制,所述的異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用程序編程接口包括:連接維護(hù)應(yīng)用程序編程接口、測(cè)點(diǎn)管理應(yīng)用程序編程接口、測(cè)點(diǎn)數(shù)據(jù)讀寫應(yīng)用程序編程接口和統(tǒng)計(jì)分析應(yīng)用程序編程接口;所述的連接維護(hù)應(yīng)用程序編程接口用于異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的連接和斷開,所述的連接維護(hù)應(yīng)用程序編程接口包括如下表所示接口:
[0051]名稱 描述
URTDB_Connect 建立同數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)連接
URTDB_Disconnect 斷開同數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)連接
URTDB_HostTime 獲取服務(wù)器當(dāng)前UTC時(shí)間
URTDB_GetConnectionStatus 獲取當(dāng)前連接服務(wù)器的狀態(tài)
[0052] 所述的測(cè)點(diǎn)管理應(yīng)用程序編程接口用于測(cè)點(diǎn)的增刪改查,所述的測(cè)點(diǎn)管理應(yīng)用程序編程接口包括如下表所示接口:
[0053]
[0054]
[0055] 所述的測(cè)點(diǎn)數(shù)據(jù)讀寫應(yīng)用程序編程接口數(shù)據(jù)的讀寫,所述的測(cè)點(diǎn)數(shù)據(jù)讀寫應(yīng)用程序編程接口包括如下表所示接口:
[0056]
[0057] 所述的統(tǒng)計(jì)分析應(yīng)用程序編程接口用于對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析,所述的統(tǒng)計(jì)分析應(yīng)用程序編程接口包括如下表所示接口:
[0058]名稱 描述
URTDB_Summary 統(tǒng)計(jì)數(shù)據(jù)
URTDB_SummaryFilt 按照過濾條件統(tǒng)計(jì)數(shù)據(jù)
[0059] 2)遵循步驟1)中的異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用程序編程接口規(guī)范設(shè)計(jì)并實(shí)現(xiàn)自身實(shí)時(shí)數(shù)據(jù)庫(kù)的
[0060] UAPI,如HS_UAPI,應(yīng)用層需要調(diào)用不同廠商的應(yīng)用程序編程接口是,只需重新加載相應(yīng)廠商的動(dòng)態(tài)庫(kù),不需要
修改代碼即可實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和訪問。同時(shí),統(tǒng)一應(yīng)用程序編程接口的實(shí)現(xiàn),屏蔽了各廠商數(shù)據(jù)接入和訪問的差異,實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)的透明訪問。異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)接口的透明訪問示意圖見圖1;當(dāng)用戶通過調(diào)用統(tǒng)一數(shù)據(jù)接入接口(UAPI)進(jìn)行數(shù)據(jù)接入時(shí),動(dòng)態(tài)調(diào)用HS_UAPI的接口,HS_UAPI從本地緩存里判斷數(shù)據(jù)接入所用的測(cè)點(diǎn)是否存在,存在則直接將數(shù)據(jù)存入實(shí)時(shí)數(shù)據(jù)庫(kù),不存在則新增測(cè)點(diǎn)信息并加載到本地緩存中,如圖3所示;
[0061] 3)實(shí)時(shí)數(shù)據(jù)庫(kù)數(shù)據(jù)接入和訪問效率優(yōu)化。通過在客戶端增加緩存實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)庫(kù)接入和訪問效率的優(yōu)化:緩存分測(cè)點(diǎn)緩存和數(shù)據(jù)緩存;數(shù)據(jù)接入時(shí),通過查詢客戶端緩存測(cè)點(diǎn)與異構(gòu)數(shù)據(jù)的映射關(guān)系,
感知測(cè)點(diǎn)的位置,減少與數(shù)據(jù)庫(kù)的通信交互;同時(shí)數(shù)據(jù)接入時(shí)可實(shí)現(xiàn)數(shù)據(jù)緩存,防止數(shù)據(jù)丟失,該技術(shù)原理為相關(guān)數(shù)據(jù)請(qǐng)求在客戶端本機(jī)磁盤上做實(shí)時(shí)緩存;
[0062] 4)當(dāng)客戶端接口確認(rèn)服務(wù)端已經(jīng)接收到數(shù)據(jù)并將數(shù)據(jù)包從緩存文件中刪除;當(dāng)在發(fā)送請(qǐng)求報(bào)文的過程中網(wǎng)絡(luò)通訊或者
數(shù)據(jù)處理服務(wù)器發(fā)生故障,客戶端接口會(huì)持續(xù)緩存請(qǐng)求報(bào)文,并不斷生成新的緩存文件;當(dāng)數(shù)據(jù)通訊恢復(fù)正常后,客戶端接口會(huì)逐步將緩存的數(shù)據(jù)重新發(fā)送到服務(wù)端,從而能保證提交的數(shù)據(jù)在故障過程中不丟失;
[0063] 5)數(shù)據(jù)訪問時(shí),為了提高數(shù)據(jù)的訪問速率,當(dāng)訪問數(shù)據(jù)查詢接口時(shí),建立數(shù)據(jù)緩存,則直接從緩存中取數(shù)據(jù),當(dāng)緩存中不存在數(shù)據(jù),再發(fā)起到具體異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問請(qǐng)求,異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)的統(tǒng)一應(yīng)用程序編程接口緩存原理圖如附圖2所示。;
[0064] 6)當(dāng)需要使用其他的實(shí)時(shí)數(shù)據(jù)庫(kù)如GAIA_UAPI時(shí),只需要將HS_UAP替換為GAIA_UAPI,即可實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)庫(kù)的異構(gòu)功能。
[0065] 應(yīng)用層需要調(diào)用不同廠商的應(yīng)用程序編程接口時(shí),只需重新加載相應(yīng)廠商的動(dòng)態(tài)庫(kù),不需要修改代碼即可實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和訪問。同時(shí),統(tǒng)一應(yīng)用程序編程接口的實(shí)現(xiàn),屏蔽了各廠商數(shù)據(jù)接入和訪問的差異,實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)的透明訪問。異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)接口的透明訪問示意圖見附圖4。
[0066] 實(shí)現(xiàn)并發(fā)訪問
[0067] 當(dāng)平臺(tái)只有一個(gè)實(shí)時(shí)庫(kù)異構(gòu)代理服務(wù)時(shí),認(rèn)為所有的訪問都需要經(jīng)過唯一節(jié)點(diǎn),只需要保證全局的線程安全就可以了。如果數(shù)據(jù)訪問規(guī)模擴(kuò)大,一個(gè)異構(gòu)代理服務(wù)無法承受訪問壓力時(shí),需要配置多個(gè)異構(gòu)代理服務(wù),這時(shí)候需要有類似分布式鎖的機(jī)制,保障并發(fā)訪問安全。由于實(shí)時(shí)數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)模型已經(jīng)由通用訪問接口統(tǒng)一,結(jié)構(gòu)非常簡(jiǎn)單,設(shè)計(jì)了一個(gè)單獨(dú)的實(shí)時(shí)數(shù)據(jù)訪問鎖服務(wù),用于實(shí)現(xiàn)分布式鎖機(jī)制。平臺(tái)使用實(shí)時(shí)數(shù)據(jù)庫(kù)的數(shù)據(jù)類型主要包括測(cè)點(diǎn)屬性、實(shí)時(shí)數(shù)據(jù)、訂閱數(shù)據(jù)。實(shí)時(shí)數(shù)據(jù)和訂閱配置都基于測(cè)點(diǎn)屬性,為了簡(jiǎn)單起見,設(shè)計(jì)了兩層鎖,都使用測(cè)點(diǎn)標(biāo)志作為鍵的Hash?Map實(shí)現(xiàn),對(duì)測(cè)點(diǎn)屬性的訪問優(yōu)先級(jí)更高(LH),對(duì)實(shí)時(shí)數(shù)據(jù)和訂閱數(shù)據(jù)的訪問優(yōu)先級(jí)較低(LL)。代理接收到客戶端的訪問請(qǐng)求時(shí),如果是測(cè)點(diǎn)訪問的,則只需要判斷LH,如果是其它的,則需要判斷LH和LL。
[0068] 實(shí)施例1
[0069] 1)各實(shí)時(shí)數(shù)據(jù)庫(kù)廠商遵循異構(gòu)實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用程序編程接口規(guī)范設(shè)計(jì)并實(shí)現(xiàn)各自的實(shí)時(shí)數(shù)據(jù)庫(kù)API接口。
[0070] 2)在數(shù)據(jù)庫(kù)API基礎(chǔ)上通過UAPI轉(zhuǎn)換模塊實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)UAPI,如果廠商API提供了與數(shù)據(jù)庫(kù)級(jí)UAPI功能相同的函數(shù),則直接將廠商API映射為數(shù)據(jù)庫(kù)級(jí)UAPI,如果廠商API沒有提供與數(shù)據(jù)庫(kù)級(jí)UAPI功能相同的函數(shù),則可以通過編程方式利用廠商API實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)UAPI。
[0071] 3)當(dāng)用戶調(diào)用群集數(shù)據(jù)庫(kù)API進(jìn)行數(shù)據(jù)接入時(shí),首先判斷該用戶是否對(duì)目標(biāo)測(cè)點(diǎn)擁有接入權(quán)限,有則根據(jù)緩存中測(cè)點(diǎn)位置確定是哪個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù)的實(shí)例,然后調(diào)用數(shù)據(jù)庫(kù)級(jí)UAPI把數(shù)據(jù)寫入該實(shí)時(shí)數(shù)據(jù)庫(kù)中。
[0072] 4)當(dāng)用戶調(diào)用群集數(shù)據(jù)庫(kù)API進(jìn)行數(shù)據(jù)訪問時(shí),首先判斷該用戶是否對(duì)目標(biāo)測(cè)點(diǎn)擁有訪問權(quán)限,有則根據(jù)緩存中測(cè)點(diǎn)位置確定是哪個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù)的實(shí)例,然后調(diào)用數(shù)據(jù)庫(kù)級(jí)UAPI把數(shù)據(jù)從該出實(shí)時(shí)數(shù)據(jù)庫(kù)中讀取出來。