專利名稱:實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多個(gè)實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)與方法,當(dāng)配置實(shí)時(shí)數(shù)據(jù)庫訪問的點(diǎn)名后,可以在多個(gè)實(shí)時(shí)數(shù)據(jù)庫之間查找該點(diǎn)值的方法。
背景技術(shù):
對(duì)于訪問實(shí)時(shí)數(shù)據(jù)庫中的點(diǎn)名對(duì)應(yīng)的值時(shí),由于一套系統(tǒng)可能關(guān)聯(lián)多種實(shí)時(shí)數(shù)據(jù)庫,所以配置點(diǎn)名時(shí),還需要配置具體關(guān)聯(lián)的數(shù)據(jù)庫。這樣帶來了幾個(gè)弊端:一、由于現(xiàn)場實(shí)際情況中,需要讀取的點(diǎn)數(shù)量巨大,這樣就給現(xiàn)場開發(fā)人員帶來很多麻煩。;二、由于需要配置關(guān)聯(lián)的數(shù)據(jù)庫和點(diǎn)名這兩項(xiàng)內(nèi)容,導(dǎo)致增加配置錯(cuò)誤的風(fēng)險(xiǎn);三、修改時(shí)也可能遺漏修改配置關(guān)聯(lián)的數(shù)據(jù)庫和點(diǎn)名這兩項(xiàng)內(nèi)容中的一項(xiàng)。上述問題急需解決。發(fā)明內(nèi)容
本發(fā)明為了彌補(bǔ)現(xiàn)有技術(shù)的不足,提供了一種連接多個(gè)實(shí)時(shí)庫時(shí),根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)與方法。
本發(fā)明是通過如下技術(shù)方案實(shí)現(xiàn)的: 一種實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)的運(yùn)行方法,其特征在于:當(dāng)接受用戶的請(qǐng)求后,需要對(duì)所有實(shí)時(shí)數(shù)據(jù)庫進(jìn)行遍歷,在每次遍歷中,將已知屬于該實(shí)時(shí)數(shù)據(jù)庫的測點(diǎn)和未知測點(diǎn)全部發(fā)送給實(shí)時(shí)數(shù)據(jù)庫,根據(jù)實(shí)時(shí)數(shù)據(jù)庫返回信息,從未知測點(diǎn)中刪除屬于該數(shù)據(jù)庫的測點(diǎn),執(zhí)行下一次循環(huán)直到所有的測點(diǎn)都讀取成功或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢為止;該方法包括配置文件讀取模塊、測點(diǎn)位置存儲(chǔ)庫、調(diào)度模塊、實(shí)時(shí)數(shù)據(jù)訪問模塊和錯(cuò)誤碼模塊。
所述配置文件讀取模塊,用戶按照規(guī)定格式編寫連接實(shí)時(shí)數(shù)據(jù)庫的配置文件信息,打開用戶編寫的配置文件,讀取配置文件,提取數(shù)據(jù)庫連接信息,并保存; 所述實(shí)時(shí)數(shù)據(jù)訪問模塊,根據(jù)配置文件建立與實(shí)時(shí)數(shù)據(jù)庫的連接,調(diào)用當(dāng)前實(shí)時(shí)庫的API,輸入點(diǎn)名訪問點(diǎn)值; 所述測點(diǎn)位置存儲(chǔ)庫模塊,構(gòu)造表結(jié)構(gòu),此表結(jié)構(gòu)包含,點(diǎn)名和實(shí)時(shí)數(shù)據(jù)庫連接實(shí)體,外部對(duì)象可以根據(jù)點(diǎn)名設(shè)置和讀取數(shù)據(jù)庫實(shí)體對(duì)象; 所述錯(cuò)誤碼模塊,將每個(gè)實(shí)時(shí)數(shù)據(jù)庫返回的錯(cuò)誤碼自動(dòng)轉(zhuǎn)換為統(tǒng)一的錯(cuò)誤碼; 所述調(diào)度模塊,調(diào)用配置文件讀取模塊讀取配置文件中的數(shù)據(jù)庫連接信息,再利用讀取的信息和實(shí)時(shí)數(shù)據(jù)訪問模塊建立多個(gè)數(shù)據(jù)庫的實(shí)體。I)用戶輸入需要訪問的測點(diǎn)列表。2)遍歷測點(diǎn)列表中的所有測點(diǎn),按照測點(diǎn)對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫將測點(diǎn)列表中的測點(diǎn)分組如果測點(diǎn)沒有對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫,則放入未知組中。3)以所有實(shí)時(shí)庫為循環(huán),設(shè)置訪問成功的測點(diǎn)數(shù)為0,首先將當(dāng)前實(shí)時(shí)數(shù)據(jù)庫對(duì)應(yīng)的測點(diǎn)組與未知組合并為一個(gè)臨時(shí)測點(diǎn)組,將臨時(shí)測點(diǎn)組的所有測點(diǎn)發(fā)送到該實(shí)時(shí)數(shù)據(jù)庫中。實(shí)時(shí)數(shù)據(jù)庫返回?cái)?shù)據(jù)后,將本次請(qǐng)求沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)數(shù)累加到訪問成功的測點(diǎn)數(shù)中,將請(qǐng)求成功的測點(diǎn)與該實(shí)時(shí)數(shù)據(jù)庫的關(guān)系,存放到測點(diǎn)位置存儲(chǔ)庫中。將沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)返回值拷貝到返回值數(shù)組對(duì)應(yīng)的測點(diǎn)中。然后從未知組中除去沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)。隨后繼續(xù)循環(huán)到下一個(gè)實(shí)時(shí)數(shù)據(jù)庫。直到訪問成功的測點(diǎn)數(shù)等于用戶請(qǐng)求測點(diǎn)數(shù)或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢。4)返回測點(diǎn)值。
本發(fā)明的配置文件讀取模塊,用于讀取連接數(shù)據(jù)庫的配置信息;測點(diǎn)位置存儲(chǔ)庫,用于保存點(diǎn)對(duì)應(yīng)的數(shù)據(jù)庫;調(diào)度模塊,載入配置的每個(gè)實(shí)時(shí)數(shù)據(jù)庫所用的通用訪問接口模塊;實(shí)時(shí)數(shù)據(jù)訪問模塊,根據(jù)點(diǎn)名和每個(gè)實(shí)時(shí)數(shù)據(jù)庫的信息訪問點(diǎn)值;錯(cuò)誤碼模塊,將每個(gè)實(shí)時(shí)數(shù)據(jù)庫返回的錯(cuò)誤碼統(tǒng)一的錯(cuò)誤碼。
所述的實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)的運(yùn)行方法,其特征在于對(duì)實(shí)時(shí)數(shù)據(jù)庫遍歷及建立多個(gè)數(shù)據(jù)庫過程為: a)用戶輸入需要訪問的測點(diǎn)列表;b)遍歷測點(diǎn)列表中的所有測點(diǎn),根據(jù)測點(diǎn)位置存儲(chǔ)庫的信息,按照測點(diǎn)對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫將測點(diǎn)列表中的測點(diǎn)分組;如果測點(diǎn)沒有對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫,則放入未知組中;c)以所有實(shí)時(shí)庫為循環(huán),設(shè)置訪問成功的測點(diǎn)數(shù)為0,首先將當(dāng)前實(shí)時(shí)數(shù)據(jù)庫對(duì)應(yīng)的測點(diǎn)組與未知組合并為一個(gè)臨時(shí)測點(diǎn)組,將臨時(shí)測點(diǎn)組的所有測點(diǎn)發(fā)送到該實(shí)時(shí)數(shù)據(jù)庫中;實(shí)時(shí)數(shù)據(jù)庫返回?cái)?shù)據(jù)后,將本次請(qǐng)求沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)數(shù)累加到訪問成功的測點(diǎn)數(shù)中,將請(qǐng)求成功的測點(diǎn)與該實(shí)時(shí)數(shù)據(jù)庫的關(guān)系,存放到測點(diǎn)位置存儲(chǔ)庫中;將沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)返回值拷貝到返回值數(shù)組對(duì)應(yīng)的測點(diǎn)中;然后從未知組中除去沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)。隨后繼續(xù)循環(huán)到下一個(gè)實(shí)時(shí)數(shù)據(jù)庫;直到訪問成功的測點(diǎn)數(shù)等于用戶請(qǐng)求測點(diǎn)數(shù)或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢;d)返回測點(diǎn)值。
本發(fā)明的有益效果是:該發(fā)明可以在只有點(diǎn)名的情況下,在不影響效率的前提下,查找所有數(shù)據(jù)庫的點(diǎn)名,并訪問。在不影響效率的前提下,僅根據(jù)點(diǎn)名即可訪問實(shí)時(shí)數(shù)據(jù)庫中的點(diǎn)。
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說明。
圖1本發(fā)明讀取數(shù)據(jù)流程圖; 圖2本發(fā)明的框架圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說明。附圖為本發(fā)明的流程圖。。
1、配置文件讀取模塊,需要用戶提取出數(shù)據(jù)庫的連接信息,并按照該模塊指定的格式書寫實(shí)時(shí)數(shù)據(jù)庫的配置文件,在程序啟動(dòng)時(shí),打開用戶編寫的配置文件,讀取配置文件,提取數(shù)據(jù)庫連接信息,并將連接信息保存在內(nèi)存中,以便快速隨時(shí)地的供其他模塊調(diào)用; 2、實(shí)時(shí)數(shù)據(jù)訪問模塊,根據(jù)配置文件讀取模塊提供的配置信息建立與實(shí)時(shí)數(shù)據(jù)庫的連接,并始終持有該連接實(shí)體。當(dāng)用戶需要訪問具體某個(gè)實(shí)時(shí)數(shù)據(jù)庫中的測點(diǎn)時(shí),調(diào)用該模塊提供的統(tǒng)一訪問實(shí)時(shí)數(shù)據(jù)庫接口來獲得具體信息。此接口內(nèi)部內(nèi)部通過調(diào)用當(dāng)前實(shí)時(shí)庫的API來訪問具體某個(gè)數(shù)據(jù)庫的測點(diǎn)。; 3、測點(diǎn)位置存儲(chǔ)庫模塊,構(gòu)造表結(jié)構(gòu),此表結(jié)構(gòu)包含測點(diǎn)名和實(shí)時(shí)數(shù)據(jù)庫連接實(shí)體,為了通過測點(diǎn)名能夠快速查找到對(duì)應(yīng)的數(shù)據(jù)庫實(shí)體,所以利用Map進(jìn)行存儲(chǔ),將關(guān)鍵字設(shè)置為點(diǎn)名,值為實(shí)時(shí)數(shù)據(jù)庫實(shí)體。外部可以通過才模塊提供的接口,輸入點(diǎn)名得到讀取數(shù)據(jù)庫實(shí)體; 4、調(diào)度模塊,調(diào)用配置文件讀取模塊讀取配置文件中的數(shù)據(jù)庫連接信息,再利用讀取的信息和實(shí)時(shí)數(shù)據(jù)訪問模塊建立多個(gè)數(shù)據(jù)庫的實(shí)體。
I)用戶輸入需要訪問的測點(diǎn)列表。2)遍歷測點(diǎn)列表中的所有測點(diǎn),根據(jù)測點(diǎn)位置存儲(chǔ)庫模塊提供的測點(diǎn)名與實(shí)時(shí)數(shù)據(jù)庫實(shí)體對(duì)應(yīng)的信息,調(diào)用測點(diǎn)位置存儲(chǔ)庫模塊的接口得到測點(diǎn)對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫實(shí)體,并將屬于同一個(gè)實(shí)時(shí)數(shù)據(jù)庫實(shí)體的測點(diǎn)歸并到一個(gè)測點(diǎn)組中(例如,將第一個(gè)實(shí)時(shí)數(shù)據(jù)庫實(shí)體對(duì)應(yīng)的測點(diǎn)全部放入測點(diǎn)組I中,將第二個(gè)實(shí)時(shí)數(shù)據(jù)庫實(shí)體對(duì)應(yīng)的測點(diǎn)全部放入測試組2中,以此類推)。如果測點(diǎn)沒有對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫實(shí)體,則將測點(diǎn)放入未知組中。
2)新建統(tǒng)計(jì)訪問成功的測點(diǎn)數(shù)變量,設(shè)置變量初始化為O。創(chuàng)建返回值數(shù)組。
3)遍歷所有實(shí)時(shí)數(shù)據(jù)庫的實(shí)體,循環(huán)內(nèi)部對(duì)每一個(gè)實(shí)時(shí)數(shù)據(jù)庫實(shí)體進(jìn)行操作:a)首先將步驟2中計(jì)算得來的當(dāng)前實(shí)時(shí)數(shù)據(jù)庫對(duì)應(yīng)的測點(diǎn)組與未知組合并為一個(gè)臨時(shí)測點(diǎn)組,將臨時(shí)測點(diǎn)組的所有測點(diǎn)通過實(shí)時(shí)數(shù)據(jù)庫實(shí)體提供的接口,發(fā)送到當(dāng)前實(shí)時(shí)數(shù)據(jù)庫中。b)實(shí)時(shí)數(shù)據(jù)庫返回?cái)?shù)據(jù)后,調(diào)用錯(cuò)誤碼模塊提供的接口,將錯(cuò)誤碼轉(zhuǎn)換為統(tǒng)一的錯(cuò)誤碼。c)沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)的數(shù)量累加到訪問成功的測點(diǎn)數(shù)變量中d)在未知點(diǎn)組中以及請(qǐng)求成功的測點(diǎn)與實(shí)時(shí)數(shù)據(jù)庫實(shí)體的關(guān)系,通過調(diào)用測點(diǎn)位置存儲(chǔ)庫模塊提供的接口存放到測點(diǎn)位置存儲(chǔ)庫中。e)沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)返回值拷貝到返回值數(shù)組對(duì)應(yīng)的測點(diǎn)中。f)從未知組中除去沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)。
4)繼續(xù)循環(huán)到下一個(gè)實(shí)時(shí)數(shù)據(jù)庫。直到訪問成功的測點(diǎn)數(shù)的變量-等于用戶請(qǐng)求測點(diǎn)數(shù)或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢為止。
5)將返回值數(shù)組返回給用戶。
5、錯(cuò)誤碼模塊,每個(gè)實(shí)時(shí)數(shù)據(jù)庫驅(qū)動(dòng)將自己的錯(cuò)誤碼映射到統(tǒng)一的錯(cuò)誤碼上。
權(quán)利要求
1.一種實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng),其特征在于:該系統(tǒng)包括配置文件讀取模塊、測點(diǎn)位置存儲(chǔ)庫、調(diào)度模塊、實(shí)時(shí)數(shù)據(jù)訪問模塊和錯(cuò)誤碼模塊,其中 所述配置文件讀取模塊,用于用戶按照規(guī)定格式編寫連接實(shí)時(shí)數(shù)據(jù)庫的配置文件信息,打開編寫的配置文件,讀取配置文件,提取數(shù)據(jù)庫連接信息,并保存; 所述實(shí)時(shí)數(shù)據(jù)訪問模塊,用于根據(jù)配置文件建立與實(shí)時(shí)數(shù)據(jù)庫的連接,調(diào)用當(dāng)前實(shí)時(shí)庫的API,輸入點(diǎn)名訪問點(diǎn)值; 所述測點(diǎn)位置存儲(chǔ)庫模塊,用于點(diǎn)名和實(shí)時(shí)數(shù)據(jù)庫連接實(shí)體,外部對(duì)象可以根據(jù)點(diǎn)名設(shè)置和讀取數(shù)據(jù)庫實(shí)體對(duì)象; 所述錯(cuò)誤碼模塊,將每個(gè)實(shí)時(shí)數(shù)據(jù)庫返回的錯(cuò)誤碼自動(dòng)轉(zhuǎn)換為統(tǒng)一的錯(cuò)誤碼; 所述調(diào)度模塊,調(diào)用配置文件讀取模塊讀取配置文件中的數(shù)據(jù)庫連接信息,再利用讀取的信息和實(shí)時(shí)數(shù)據(jù)訪問模塊建立多個(gè)數(shù)據(jù)庫的實(shí)體。
2.根據(jù)權(quán)利要求1所述的實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)的運(yùn)行方法,其特征在于包括以下步驟:當(dāng)接受用戶的請(qǐng)求后,對(duì)所有實(shí)時(shí)數(shù)據(jù)庫進(jìn)行遍歷,在每次遍歷中,將已知屬于該實(shí)時(shí)數(shù)據(jù)庫的測點(diǎn)和未知測點(diǎn)全部發(fā)送給實(shí)時(shí)數(shù)據(jù)庫,根據(jù)實(shí)時(shí)數(shù)據(jù)庫返回信息,從未知測點(diǎn)中刪除屬于該數(shù)據(jù)庫的測點(diǎn),執(zhí)行下一次循環(huán)直到所有的測點(diǎn)都讀取成功或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢為止。
3.根據(jù)權(quán)利要求2所述的實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)的運(yùn)行方法,其特征在于對(duì)實(shí)時(shí)數(shù)據(jù)庫遍歷及建立多個(gè)數(shù)據(jù)庫過程為: a)用戶輸入需要訪問的測點(diǎn)列表;b)遍歷測點(diǎn)列表中的所有測點(diǎn),根據(jù)測點(diǎn)位置存儲(chǔ)庫的信息,按照測點(diǎn)對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫將測點(diǎn)列表中的測點(diǎn)分組;如果測點(diǎn)沒有對(duì)應(yīng)的實(shí)時(shí)數(shù)據(jù)庫,則放入未知組中;c)以所有實(shí)時(shí)庫為循環(huán),設(shè)置訪問成功的測點(diǎn)數(shù)為O,首先將當(dāng)前實(shí)時(shí)數(shù)據(jù)庫對(duì)應(yīng)的測點(diǎn)組與未知組合并為一個(gè)臨時(shí)測點(diǎn)組,將臨時(shí)測點(diǎn)組的所有測點(diǎn)發(fā)送到該實(shí)時(shí)數(shù)據(jù)庫中;實(shí)時(shí)數(shù)據(jù)庫返回?cái)?shù)據(jù)后,將本次請(qǐng)求沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)數(shù)累加到訪問成功的測點(diǎn)數(shù)中,將請(qǐng)求成功的測點(diǎn)與該實(shí)時(shí)數(shù)據(jù)庫的關(guān)系,存放到測點(diǎn)位置存儲(chǔ)庫中;將沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn)返回值拷貝到返回值數(shù)組對(duì)應(yīng)的測點(diǎn)中;然后從未知組中除去沒有出現(xiàn)測點(diǎn)不存在錯(cuò)誤的測點(diǎn);隨后繼續(xù)循環(huán)到下一個(gè)實(shí)時(shí)數(shù)據(jù)庫;直到訪問成功的測點(diǎn)數(shù)等于用戶請(qǐng)求測點(diǎn)數(shù)或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢;d)返回測點(diǎn)值。
全文摘要
本發(fā)明涉及一種實(shí)時(shí)數(shù)據(jù)庫中根據(jù)點(diǎn)名找到數(shù)據(jù)庫并訪問的系統(tǒng)與方法,其特征在于當(dāng)接受用戶的請(qǐng)求后,需要對(duì)所有實(shí)時(shí)數(shù)據(jù)庫進(jìn)行遍歷,在每次遍歷中,將已知屬于該實(shí)時(shí)數(shù)據(jù)庫的測點(diǎn)和未知測點(diǎn)全部發(fā)送給實(shí)時(shí)數(shù)據(jù)庫,根據(jù)實(shí)時(shí)數(shù)據(jù)庫返回信息,從未知測點(diǎn)中刪除屬于該數(shù)據(jù)庫的測點(diǎn),執(zhí)行下一次循環(huán)直到所有的測點(diǎn)都讀取成功或所有實(shí)時(shí)數(shù)據(jù)庫遍歷完畢為止;該方法包括配置文件讀取模塊、測點(diǎn)位置存儲(chǔ)庫、調(diào)度模塊、實(shí)時(shí)數(shù)據(jù)訪問模塊和錯(cuò)誤碼模塊。該發(fā)明可以在只有點(diǎn)名的情況下,在不影響效率的前提下,查找所有數(shù)據(jù)庫的點(diǎn)名,并訪問。在不影響效率的前提下,僅根據(jù)點(diǎn)名即可訪問實(shí)時(shí)數(shù)據(jù)庫中的點(diǎn)。
文檔編號(hào)G06F17/30GK103150408SQ201310113588
公開日2013年6月12日 申請(qǐng)日期2013年4月2日 優(yōu)先權(quán)日2013年4月2日
發(fā)明者丁書耕, 邢宏偉, 張建輝, 陳雷動(dòng), 王衡, 陳飛龍 申請(qǐng)人:山東魯能軟件技術(shù)有限公司