999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于IEC61970的CIM 模型數(shù)據(jù)庫的設(shè)計與實現(xiàn)

2013-08-03 01:28:08劉吉財蘇豪飛
山東工業(yè)技術(shù) 2013年15期
關(guān)鍵詞:定義數(shù)據(jù)庫

劉吉財 蘇豪飛

(1.重慶郵電大學(xué),中國 重慶400065;2.河南煤化集團(tuán) 鶴煤公司熱電廠,河南 鶴壁458000)

0 引言

隨著通信、計算機等技術(shù)的慢慢融入,電力系統(tǒng)的更新和發(fā)展已經(jīng)是越來愈快,這就對支撐電力系統(tǒng)軟件應(yīng)用的數(shù)據(jù)平臺部分提出了更高的要求:由于電力系統(tǒng)不斷發(fā)展,需要的數(shù)據(jù)量越來越龐大,數(shù)據(jù)間的關(guān)系也更加的復(fù)雜,因此數(shù)據(jù)平臺應(yīng)該能夠支持高數(shù)量級的數(shù)據(jù)管理和關(guān)系建模;由于IEC 61970 標(biāo)準(zhǔn)里定義的CIM 是基于面向?qū)ο笏枷氲模虼藬?shù)據(jù)平臺要能夠反映出面向?qū)ο蟮奶攸c;要能夠?qū)崿F(xiàn)數(shù)據(jù)共享和交換; 由于IEC 61970 系列標(biāo)準(zhǔn)還在不斷的改進(jìn),CIM 模型也在不斷的擴展,就要求數(shù)據(jù)庫要易于擴充和維護(hù)。

1 總體結(jié)構(gòu)

通過上文對功能需求的分析及數(shù)據(jù)庫的選擇,將模塊實現(xiàn)需要的工作總結(jié)為五部分,如圖1 所示:

圖1 模塊的整體設(shè)計

功能的大致流程如下:

(1)在服務(wù)器端系統(tǒng)將數(shù)據(jù)加載到FastDB,系統(tǒng)后臺實時的將封裝好的數(shù)據(jù)更新到FastDB 內(nèi);

(2)操作人員選擇需要實時監(jiān)控的表,同時在服務(wù)器端人機交互界面通過只讀的方式將監(jiān)控數(shù)據(jù)顯示出來;

(3)系統(tǒng)定期將FastDB 中的數(shù)據(jù)同步到MySQL 中;

(4)用戶在客戶端通過HSDA 實現(xiàn)訪問FastDB 內(nèi)的實時數(shù)據(jù);

(5) 用戶在客戶端通過GDA 或TSDA 實現(xiàn)訪問存儲在MySQL 內(nèi)的歷史數(shù)據(jù)。

1.1 系統(tǒng)設(shè)計功能

(1)CIM 模型映射: 根據(jù)IEC61970 標(biāo)準(zhǔn)將CIM 以表的形式映射到數(shù)據(jù)庫中;

(2)數(shù)據(jù)持久化: 根據(jù)獲得數(shù)據(jù)類型,對應(yīng)存入不同的表中;

(3)歷史數(shù)據(jù)查詢: 根據(jù)查詢需求提取數(shù)據(jù);

(4)人機交互界面: 數(shù)據(jù)庫操作權(quán)限、數(shù)據(jù)管理。

1.1.1 CIM 模型在MySQL 中的 映射

對象的每個屬性可以匹配成對應(yīng)二維表中的一列或者多列。不是所有的屬性都要映射, 在應(yīng)用中不需要的部分就不用存儲到數(shù)據(jù)庫中。 命名規(guī)則中參考CIM 的規(guī)則,將數(shù)據(jù)庫表名和類名匹配,字段名和類的屬性名相對。 對象所使用的屬性通常繼承自其他類的屬性,表中可以包含對象中沒有用到的列屬性,但需要在建立表結(jié)構(gòu)的時候給其設(shè)定缺省值,特別是實現(xiàn)表間關(guān)系的那些列。 根據(jù)實際需要考慮在表里建立一些CIM 類沒有明確定義的屬性, 例如建立CIM 版本信息的字段等。

1.1.2 主鍵

主鍵的存在就代表著表結(jié)構(gòu)的完整性,表的記錄必須地得有唯一區(qū)分的字段,主鍵主要是用于和其他表的外鍵關(guān)聯(lián)。 主鍵本身在業(yè)務(wù)邏輯上不體現(xiàn),不具有實際意義,這點與FastDB 是一致的并且也能保證以后數(shù)據(jù)庫更改的方便。因此我們定義了一個唯一無符號整數(shù)的主鍵來標(biāo)識CIM 中每個類的實例對象。 并且該主鍵首先被定義在最頂端的“PowerSystemResource”表中,字段名為“PK_PowerSystemResource”。

1.1.3 命名轉(zhuǎn)換

為了和CIM 模型保持一致, 數(shù)據(jù)庫實體或表的命名取決于實體的使用。 表的命名采用其對應(yīng)的CIM 類名。 在我們建立CIM 數(shù)據(jù)庫中,一個類名就對應(yīng)一個表名。而當(dāng)兩個實體具有雙向關(guān)聯(lián)關(guān)系時,引進(jìn)一個新的實體來表征它們之間的關(guān)系。例如為了反映類“Class”和量測對象“measurement” 之間的關(guān)系, 引進(jìn)一個新的表, 被命名為“ClassMeasurement”。 當(dāng)引進(jìn)的實體是為了反映自身之間的關(guān)聯(lián)關(guān)系時, 表被命名為 “baseClassNamebaseClassName”。 例如, 為了反映“PowerSystemResource”自身間的關(guān)系,引進(jìn)的表名為“PowerSystemResource PowerSystemResource”。 主 鍵 名 為 “PK_baseClassName”, 外 鍵 為“FK_foreignbaseClassName”。 這樣的設(shè)計也是為了體現(xiàn)CIM 類之間多對多的關(guān)聯(lián)關(guān)系,同時減少了外鍵的數(shù)量,有利于提高數(shù)據(jù)庫的訪問效率。

1.1.4 繼承關(guān)系

在繼承樹的頂層對象的所有屬性為全部的子對象所擁有,每個子對象是父對象的特例。 設(shè)計的CIM 數(shù)據(jù)庫為了減少各個表之間耦合而又體現(xiàn)CIM 的這種繼承特征,對父類和子類各建一張表,還需建立一個附加的屬性表,這個表名為“Class”,用以連接這些集合。它有一個主鍵“PK_Class”以及字段“TableName”和“ParentTableName”,這樣繼承關(guān)系得以實現(xiàn)。同時在各個包含繼承關(guān)系的各個表中定義一個主鍵“PK_PowerSystemResource”來連接這種關(guān)系。 這種方法最大的好處就是它能夠很好的適應(yīng)面向?qū)ο蟮奶匦裕軌蚝芎玫闹С侄鄳B(tài),對于對象可能有的每個角色,只需要在相應(yīng)的表中保存記錄。 修改超類和添加新的子類也非常容易,因為只需要修改或添加一張表。

1.1.5 一對多的關(guān)系

CIM 規(guī)范中有許多的一對多的關(guān)系。 對于一對多,在CIM 數(shù)據(jù)庫實施的時候可以方便的利用外鍵進(jìn)行映射,通過在多方定義一個外鍵指向單方來表示出這種一對多關(guān)系。 例如在量測類“Measurement”和量 測值 類“MeasureValue”之 間,往 往 一 個“Measurement”包 含 幾 個“MeasureValue”,因此通過在“MeasureValue”表中定義一個外鍵“FK_Measurement”指向“Measurement”表的“PK_ Measurement”來連接這種關(guān)系。

1.2 數(shù)據(jù)持久化

使用open()函數(shù)打開FastDB,getTables()函數(shù)可以獲取FastDB 內(nèi)所有表的內(nèi)容。 聲明一個描述表的指針dbTableDescriptor*desc 指向獲得的所有表的內(nèi)容則可以將表所有數(shù)據(jù)取出。 在將數(shù)據(jù)從FastDB 取出后使用mysql_query()將數(shù)據(jù)插入到MySQL 相應(yīng)的表中,相關(guān)函數(shù):bool dbDatabase::open (char_t const* dbName, char_t const* fileName=NULL,time_t waitLockTimeoutMsec=INFINITE,time_t commitDelaySec=0。

其中fileName 為數(shù)據(jù)庫所在路徑,waitLockTimeoutMsec 為自定義鎖釋放延遲時間,commitDelaySec 為自定義事務(wù)延遲提交時間。 如果文件名參數(shù)省略, 則通過數(shù)據(jù)庫名稱加一個后綴“.fdb" 來創(chuàng)建一個文件。dbTableDescriptor*getTables(){return tables;}函數(shù)返回dbTableDescriptor*tables;表示一個所有表的列表mysql_query(MYSQL*mysql,const char*q);其中mysql 為程序一開始聲明的一個句柄, 第二個參數(shù)為程序要執(zhí)行的SQL 語句。

1.3 服務(wù)器端歷史數(shù)據(jù)查詢

使用mysql_real_connect()打開數(shù)據(jù)庫,mysql_list_tables()可以獲取所有表名并讓一個數(shù)據(jù)集指針指向返回的結(jié)果,mysql_fetch_row ()來獲得每個表的表名并全部存入結(jié)果集的數(shù)組中,按下標(biāo)讀取此數(shù)組則可獲取表名。 mysql_store_result()獲取指定表數(shù)據(jù)組成的結(jié)果集,最后由mysql_fetch_row()函數(shù)獲取表中數(shù)據(jù),相關(guān)函數(shù):mysql_real_connect (MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag); 其中參數(shù)分別對應(yīng)句柄,主機名,用戶名,密碼,數(shù)據(jù)庫名,端口,套接字或命名管道,風(fēng)格。

1.4 人機交互

檢驗用戶名與密碼正確后連接到數(shù)據(jù)庫。 錯誤則彈出警告框。 正確連接到數(shù)據(jù)庫后, 可以根據(jù)表名調(diào)出表中數(shù)據(jù)以及備份和刪除數(shù)據(jù)。

2 系統(tǒng)實時監(jiān)控功能

(1)CIM 模型映射:根據(jù)IEC61970 標(biāo)準(zhǔn)將CIM 以表的形式映射到數(shù)據(jù)庫中;

(2)數(shù)據(jù)監(jiān)控:選擇想要監(jiān)控的表;

(3)實時監(jiān)控:監(jiān)控所選表的實時數(shù)據(jù);

(4)人機界面:監(jiān)控項的選擇等。

2.1 CIM 模型在FastDB 中的映射

使用宏TYPE_DESCRIRTOR(field_list)來描述C++類或者結(jié)構(gòu)體,其參數(shù)為一個類的字段描述符列表。所有數(shù)據(jù)庫中使用的類都要定義類型描述符。除了定義類型描述符外,還需要使用宏REGISTER(name)在C++類和數(shù)據(jù)庫表之間建立一個映像,該宏構(gòu)造一個與類相連的表的描述符。 每個表只能在一個數(shù)據(jù)庫中使用,如果一個應(yīng)用中使用了多個數(shù)據(jù)庫,需要用REGISTER_IN(name,database)宏將表注冊到一個具體的數(shù)據(jù)庫中。

2.2 數(shù)據(jù)表監(jiān)控

使用open()函數(shù)連接數(shù)據(jù)庫后使用getName()函數(shù)將庫中所有的表名依次提取出來, 此時可以選取想要實時監(jiān)控的表。 相關(guān)函數(shù):getName(){ return name; }此函數(shù)返回表的名字;

2.3 數(shù)據(jù)實時監(jiān)控

根據(jù)所選擇的表,使用findTableByName()找到和所選表名相匹配。 匹配后使用getFirstField()獲得表中所有字段,lastRow 表示表中最后一條記錄,記錄的獲取采用表的偏移量加上字段的偏移量dbsOffs。系統(tǒng)間隔5 秒讀取一次表內(nèi)最后一條記錄相關(guān)函數(shù): TableDescriptor*dbDatabase::findTableByName(char const* name),函數(shù)參數(shù)為指向一個字符串的字符指針,如果找到傳入字符串所相同的數(shù)據(jù)庫表的名字則返回一個指向這個表的結(jié)構(gòu)指針。

[1]辛耀中.新世紀(jì)電網(wǎng)調(diào)度自動化技術(shù)發(fā)展趨勢[J].電網(wǎng)技術(shù),2001,25(12):1-10.

[2]韓韜.遵循IEC 61970 標(biāo)準(zhǔn)的EMS 數(shù)據(jù)庫研究——基于CIM 和面向?qū)ο蠹夹g(shù)的數(shù)據(jù)庫瀏覽系統(tǒng)[D].國電自動化研究,2005.

猜你喜歡
定義數(shù)據(jù)庫
永遠(yuǎn)不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風(fēng)格”
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
修辭學(xué)的重大定義
山的定義
主站蜘蛛池模板: 少妇精品久久久一区二区三区| 国产三级韩国三级理| 亚洲永久精品ww47国产| 99re这里只有国产中文精品国产精品 | 欧美精品在线观看视频| 久久香蕉国产线| 亚洲日韩精品欧美中文字幕| 亚洲精品无码久久毛片波多野吉| 日本人妻一区二区三区不卡影院| 黄色在线网| 超级碰免费视频91| 激情综合激情| 色综合中文| 国产91视频免费| 大陆国产精品视频| 亚洲乱亚洲乱妇24p| 久精品色妇丰满人妻| 日韩欧美中文| 亚洲精品另类| 国产毛片高清一级国语| 91小视频在线观看| 日韩在线2020专区| 99视频国产精品| 欧美国产菊爆免费观看 | 欧美一区二区三区国产精品| 国产麻豆aⅴ精品无码| h视频在线观看网站| 国产在线第二页| 成人精品免费视频| 亚洲天堂网视频| 国产精品爆乳99久久| 精品国产成人a在线观看| 欧美性猛交一区二区三区| 午夜精品福利影院| 伊人国产无码高清视频| 精品国产美女福到在线不卡f| 天堂中文在线资源| 色首页AV在线| 日韩欧美国产成人| 伊人久久福利中文字幕| 国产亚洲一区二区三区在线| 九色综合伊人久久富二代| 久久久久亚洲精品成人网| 1769国产精品视频免费观看| 亚洲色无码专线精品观看| 亚洲一级色| 亚洲一区毛片| 亚洲成人黄色在线| 91精品综合| 亚洲熟女中文字幕男人总站| 欧美日韩亚洲国产主播第一区| 中文字幕人成人乱码亚洲电影| a级毛片一区二区免费视频| 亚洲香蕉伊综合在人在线| 精品国产成人av免费| 亚洲AV无码一二区三区在线播放| 91色爱欧美精品www| 亚洲精品无码AⅤ片青青在线观看| 日本五区在线不卡精品| 宅男噜噜噜66国产在线观看| 91精品国产情侣高潮露脸| 午夜色综合| 欧美一区二区三区国产精品| 伊人AV天堂| 日本成人福利视频| 亚洲一级毛片在线观播放| 亚洲男人的天堂网| 91在线日韩在线播放| 国产爽爽视频| 毛片手机在线看| 日韩免费中文字幕| 欧美精品在线免费| 成人午夜视频网站| 人妻夜夜爽天天爽| 91极品美女高潮叫床在线观看| 香蕉在线视频网站| 国产综合在线观看视频| 91精品视频在线播放| 无遮挡一级毛片呦女视频| 亚洲欧美综合另类图片小说区| 成人免费黄色小视频| 91毛片网|