本公開內(nèi)容涉及一種雙工ems服務器,且更具體地涉及一種管理雙工服務器之間的數(shù)據(jù)庫(db)的方法,可以通過該方法通過使用名稱鍵來同步服務器之間的db。
背景技術:
能量管理系統(tǒng)(ems)監(jiān)視且管理較大電力公司電網(wǎng)且為預測許多區(qū)域的電力需求且控制發(fā)電的重要系統(tǒng)。這種ems是工業(yè)控制系統(tǒng)且可以具有用于安全操作的雙工服務器,即主服務器和備用服務器或者活動服務器和備份服務器。
圖1是概念性地示出典型雙工ems服務器的示意圖。
圖1示出雙工ems服務器的活動服務器和備份服務器之間的db傳遞。
圖1示出其中db從活動服務器被備份到備份服務器的示例。在該示例中,db的內(nèi)容即存儲器結構(例如活動服務器的存儲器的尺寸、順序、位置等)等于備份服務器的那些,使得活動服務器的db可以通過直接存儲它在備份服務器中而被備份。在此,該條件是說db在活動服務器和備份服務器之間被同步。
如圖1所示,當活動服務器的版本與備份服務器的那些(在該示例中,v1.0)相同時,活動服務器的db內(nèi)容可以與備份服務器的那些相同。
另一方面,在圖2中示出的示例中,活動服務器的db版本與備份服務器的那個不相同,例如活動服務器的db版本為v1.0而備份服務器的db版本為v1.1,使得存儲器的內(nèi)容即尺寸、順序、位置等被改變。在該示例中,如果活動服務器中的db被直接存儲在備份服務器,則db可能彼此沖突或者某些數(shù)據(jù)可能丟失。
因此,db不能在活動服務器和備份服務器之間被同步。
換言之,當版本相同時,雙工服務器之間的db同步是可能的,而當服務器具有不同db版本時,雙工服務器之間的db同步是不可能的。
可以存在其中活動服務器和備份服務器具有不同db版本的許多情況。例如,當備份服務器中的db在活動服務器中的db之前按照db更新指令被更新時,活動服務器的db版本從那個時間點變得與備份服務器的那個不同。
然而,如果意外錯誤發(fā)生在驅(qū)動能量管理系統(tǒng)的過程中,則該系統(tǒng)可以被切換。當這發(fā)生時,為了提供與在該系統(tǒng)被切換之前相同的數(shù)據(jù)和操作環(huán)境,在雙工服務器之間同步db是必要的。
因此,在該系統(tǒng)被切換之前甚至在db更新期間僅當針對必要數(shù)據(jù)同步db時可以開始且穩(wěn)定操作該系統(tǒng)。
技術實現(xiàn)要素:
本公開內(nèi)容的一個方面在于提供一種管理雙工服務器之間的db的方法使得在該系統(tǒng)被切換之前同步db。
本公開內(nèi)容的另一個方面在于提供一種管理雙工服務器之間的db的方法,通過該方法,具有不同版本的db可以基于名稱鍵而在服務器之間被同步。
本公開內(nèi)容的又一個方面在于提供一種管理雙工服務器之間的db的方法,通過該方法,可以更有效管理db且可以更穩(wěn)定操作該系統(tǒng)。
本公開內(nèi)容的目的不限于上述目標,并且其他目標和優(yōu)點可以由本領域技術人員從下面的描述中認識到。另外,將容易認識到,本公開內(nèi)容的目標和優(yōu)點可以由在隨附權利要求和其組合中記載的裝置來實踐。
根據(jù)本公開內(nèi)容的一個方面,一種管理雙工服務器中的數(shù)據(jù)庫(db)的方法包括:將備份服務器中的db更新到第一版本;將備份服務器中的名稱鍵列表發(fā)送到活動服務器;將在活動服務器和備份服務器之間相同的名稱鍵發(fā)送到備份服務器;且通過使用相同的名稱鍵來同步活動服務器和備份服務器之間的db。
活動服務器中的db的版本可以為第二版本。
將名稱鍵列表發(fā)送到活動服務器可以包括:識別備份服務器中的db的版本與活動服務器中的db的版本不同。
將名稱鍵發(fā)送到備份服務器可以包括:基于通過將活動服務器中的名稱鍵列表與備份服務器的名稱鍵列表進行比較而獲得的結果來提取相同的名稱鍵。
在活動服務器和備份服務器之間同步db可以包括復制且存儲與從活動服務器接收到的名稱鍵對應的數(shù)據(jù)。
名稱鍵中的每個可以被定義為指派訪問db中的數(shù)據(jù)對象id。
同步活動服務器和備份服務器之間的db可以包括確定是否復制且存儲與從活動服務器接收到的名稱鍵對應的數(shù)據(jù)。
同步活動服務器和備份服務器之間的db可以包括從活動服務器根據(jù)在備份服務器處接收到的名稱鍵列表而請求同步。
根據(jù)本公開內(nèi)容的示例性實施例,db可以在雙工服務器之間被同步。
根據(jù)本公開內(nèi)容的另一個示例性實施例,具有不同版本的db可以基于名稱鍵來同步。
根據(jù)本公開內(nèi)容的又一個示例性實施例,可以更有效管理db且因此可以更穩(wěn)定操作該系統(tǒng)。
附圖說明
圖1是概念性地示出典型雙工ems服務器中的db同步的示意圖;
圖2是圖形地示出在典型雙工ems服務器中未同步db的示意圖;
圖3示出根據(jù)本公開內(nèi)容的示例性實施例的ems系統(tǒng)中的db同步過程;
圖4示出根據(jù)本公開內(nèi)容的示例性實施例的ems系統(tǒng)中的db同步過程。
圖5是用于示出在圖3和圖4中示出的ems系統(tǒng)中的db同步過程的流程圖。
具體實施方式
將省略對本文并入的公知功能和結構的詳細描述以避免使本公開內(nèi)容的主題模糊不清。另外,在本說明書和權利要求書中使用的術語或詞語不應僅僅在常規(guī)的且詞典的定義上來理解,而是應當基于允許發(fā)明人恰當?shù)囟x術語的概念以便以最好的方式描述他的或她的發(fā)明的原理在與本發(fā)明的技術構思相對應的意義和概念上來理解。因此,諸如在常用詞典中定義的術語的術語應當被解釋為具有與它們在相關領域和/或本申請的背景下的意義一致的意義。
附圖中的框的組合和流程圖中的步驟可以根據(jù)計算機程序指令來執(zhí)行。這些計算機程序指令可以被安裝在通用計算機、專用計算機或可編程數(shù)據(jù)處理設備的其它處理器中。因此,由計算機或者可編程數(shù)據(jù)處理設備的其它處理器執(zhí)行的指令創(chuàng)建用于執(zhí)行在附圖中的框或流程圖中的步驟中描述的功能的裝置。
這些計算機程序指令可以被存儲在計算機可用的或者計算機可讀的存儲器中,其可以輔助計算機或者可編程數(shù)據(jù)處理設備的其它處理器以特定方式實現(xiàn)特定功能。因此,在計算機可用的或者計算機可讀的存儲器中存儲的指令可以用于制造包括用于執(zhí)行在附圖中的框或者流程圖中的步驟中描述的功能的指令裝置的產(chǎn)品。
計算機程序指令也可以被安裝在計算機或者可編程數(shù)據(jù)處理設備的其它處理器中。因此,操作步驟的序列可以在計算機或者可編程數(shù)據(jù)處理設備的其它處理器上執(zhí)行以產(chǎn)生計算機可執(zhí)行過程。此外,操作計算機或者可編程數(shù)據(jù)處理設備的其它處理器的指令可以提供用于執(zhí)行在附圖中的框或流程圖中的步驟中描述的功能的步驟。
此外,框或步驟可以表示模塊的一部分、包括用于執(zhí)行特定邏輯功能的一個或多個可執(zhí)行指令的片段或代碼。此外,在一些可替換實施例中,應當注意的是框或步驟中描述的功能可以缺乏特定序列而執(zhí)行。例如,兩個連續(xù)框或步驟可以基本上立即執(zhí)行或者可以有時取決于對應功能而以倒序執(zhí)行。
圖3和圖4示出根據(jù)本公開內(nèi)容的示例性實施例的ems系統(tǒng)中的db同步過程。
根據(jù)本公開內(nèi)容的示例性實施例,具有活動服務器和備份服務器的雙工ems服務器可以通過使用名稱鍵列表而執(zhí)行活動服務器和備份服務器之間的db同步。
以前,當發(fā)布db更新指令時,首先更新備份服務器,且活動服務器繼續(xù)用當前db操作,因為該系統(tǒng)必須被操作。然后,在更新了備份服務器之后,活動服務器被更新以具有與備份服務器的那個相同的db。
然而,如果在更新了備份服務器之后但還未更新活動服務器錯誤出現(xiàn)在該系統(tǒng)中使得該系統(tǒng)被切換,則備份服務器的db的版本變得與活動服務器的那個不同。因此,db同步失敗。因此,在該系統(tǒng)被切換之后,備份服務器不能與活動服務器同步且被初始化。
相比之下,根據(jù)本公開內(nèi)容的示例性實施例,即使活動服務器中的db的版本與備份服務器的那個不同,則通過使用名稱鍵列表,可以同步db中的具有相同名稱鍵的一些。
每個服務器包括處理器,且處理器提供名稱鍵列表。當數(shù)據(jù)被存儲在db中時,創(chuàng)建名稱鍵列表。當操作ems時,處理器創(chuàng)建名稱鍵列表。名稱鍵可以被視作指派訪問數(shù)據(jù)對象的id。每當添加數(shù)據(jù)對象,就添加名稱鍵。當數(shù)據(jù)的位置和順序改變時,列出的名稱鍵也改變。
當操作員從外部經(jīng)由操作員終端發(fā)行db更新指令時,執(zhí)行db更新指令且更新備份服務器。
例如,讓我們假設更新的備份服務器的db版本為v1.1。
讓我們假設當前正在工作的活動服務器的db版本是v1.0。
因此,可以看出備份服務器的db版本與活動服務器的db版本不同。當這發(fā)生時,在現(xiàn)有技術中,服務器不能被同步直到更新活動服務器為止。
當備份服務器中的處理器識別備份服務器的db與活動服務器的db不同時,將名稱鍵列表從備份服務器發(fā)送到活動服務器。
因此,如圖3所示,在更新了備份服務器之后,它將更新的名稱鍵列表發(fā)送到活動服務器。
隨后,如圖4所示,活動服務器接收來自備份服務器的名稱鍵列表且僅將與當前db版本的名稱鍵列表一致的名稱鍵發(fā)送到備份服務器。
這些操作可以由活動服務器的處理器執(zhí)行。
具體地,當備份服務器發(fā)送名稱鍵列表時,活動服務器的處理器確定活動服務器中的db的當前版本的名稱鍵列表與更新的備份服務器的名稱鍵列表是否相同,且從列表中提取相同的名稱鍵。然后,活動服務器的處理器將相同名稱鍵的列表發(fā)送到備份服務器,且備份服務器根據(jù)該列表請求同步,由此將活動服務器中的db與備份服務器中的db同步。
另一方面,不相同的名稱鍵即存在于備份服務器中的db中而不存在于活動服務器中的db中的數(shù)據(jù)不被同步。
當該系統(tǒng)被切換且稍后重新啟動時,與備份服務器中的db同步的活動服務器中的db的一些數(shù)據(jù)被備份,且因此可以防止備份服務器中的所有數(shù)據(jù)被初始化。
圖5是用于示出在圖3和圖4中示出的ems系統(tǒng)中的db同步過程的流程圖。
按照用戶的意圖執(zhí)行db更新指令。
因此,首先更新備份服務器中的db(步驟s110)。
雖然在該示例性實施例中首先按照更新指令來更新備份服務器中的db,但是在一些實現(xiàn)方式中可以首先更新活動服務器中的db。更新的備份服務器中的db的名稱鍵列表被發(fā)送到活動服務器(步驟s120)。
當備份服務器中的處理器識別備份服務器的db與活動服務器的db不同時,將名稱鍵列表從備份服務器發(fā)送到活動服務器。
例如,如果按照更新指令在備份服務器中執(zhí)行更新操作,則將名稱鍵列表發(fā)送到活動服務器,且然后活動服務器可以識別備份服務器可以被更新。
通過這樣來做,活動服務器接收來自備份服務器的名稱鍵列表且提取在活動服務器和備份服務器之間的列表之間的相同的名稱鍵,以將僅相同名稱鍵發(fā)送到備份服務器(步驟s130)。
活動服務器的db與備份服務器的那個同步(步驟s140)。
這可以在當備份服務器中的處理器復制且存儲與從活動服務器接收到的名稱鍵對應的數(shù)據(jù)時完成。
后來,當該系統(tǒng)被切換時,與由備份服務器的處理器未從活動服務器接收到的名稱鍵對應的所有數(shù)據(jù)被初始化,且與活動服務器同步的數(shù)據(jù)被存儲且可以在重新啟動該系統(tǒng)時再次使用。因此,可以在備份服務器的db更新期間甚至針對具有不同db版本的活動服務器同步數(shù)據(jù)。
因此,如果db的版本彼此不同時,操作員可以根據(jù)需要在雙工服務器之間同步db。
而且,根據(jù)本公開內(nèi)容的示例性實施例,具有不同版本的db可以基于名稱鍵來同步,使得活動服務器和備份服務器之間的db的一致和同步可以被實現(xiàn),這是重要要素。因此,可以更有效管理db且可以更穩(wěn)定操作該系統(tǒng)。
以上描述的本公開內(nèi)容可以由本發(fā)明屬于的本領域技術人員在不脫離本公開內(nèi)容的范圍和精神的情況下來不同地替代、更改和修改。因此,本公開內(nèi)容不限于上述示例性實施例和附圖。