亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        使用SymmetricDS軟件同步CIMISS核心庫數(shù)據(jù)

        2020-03-18 07:55:30李從英金石聲
        中低緯山地氣象 2020年1期
        關(guān)鍵詞:觸發(fā)器部署啟動

        李從英,金石聲,王 彪,郭 茜,李 波

        (貴州省氣象信息中心,貴州 貴陽 550002)

        0 引言

        目前我們?yōu)闅庀蟛块T內(nèi)部業(yè)務(wù)提供數(shù)據(jù)服務(wù)的全國綜合氣象信息共享平臺(簡稱CIMISS)一直是穩(wěn)定運行的,滿足了各個單位實際業(yè)務(wù)和科研[2]需求。但是其他行業(yè)的用戶以及公眾用戶對氣象數(shù)據(jù)的檢索需求目前仍然沒有滿足。很多行業(yè)都與氣象息息相關(guān)[3],都需要定制氣象數(shù)據(jù)服務(wù)。但是由于網(wǎng)絡(luò)等原因限制,他們不能訪問我們內(nèi)部數(shù)據(jù)服務(wù)接口,只能通過特定數(shù)據(jù)庫服務(wù)接口獲取數(shù)據(jù)。雖然我們設(shè)計了專門為其他行業(yè)用戶提供數(shù)據(jù)服務(wù)的行業(yè)區(qū)數(shù)據(jù)庫UDB和對公眾用戶提供氣象數(shù)據(jù)服務(wù)的INT區(qū)數(shù)據(jù)庫IDB(以下分別簡稱行業(yè)庫和INT庫),但是由于CIMISS的數(shù)據(jù)加工處理系統(tǒng)并沒有寫入到行業(yè)庫和INT庫,CIMISS系統(tǒng)運行以來,行業(yè)庫和INT庫一直處于加電空轉(zhuǎn)狀態(tài),造成了極大的浪費,沒有滿足其他行業(yè)用戶和公眾用戶對氣象數(shù)據(jù)的需求,沒有發(fā)揮其應(yīng)有的社會效益,所以充分利用這兩個數(shù)據(jù)庫,并對行業(yè)及公眾用戶提供實時數(shù)據(jù)、滿足用戶對氣象數(shù)據(jù)的需求尤為迫切。

        本文通過SymmetricDS軟件將CIMISS核心庫中的氣象數(shù)據(jù)實時同步到行業(yè)庫和INT庫,然后通過接口為用戶提供數(shù)據(jù),以滿足客戶需求。

        1 軟件部署

        在盡量不增加數(shù)據(jù)加工處理系統(tǒng)負擔的前提下,考慮使用數(shù)據(jù)庫同步技術(shù)解決上述問題??紤]到數(shù)據(jù)庫系統(tǒng)處于7×24 h運行,對軟件的穩(wěn)定性要求很高,并權(quán)衡了商業(yè)軟件的巨額費用需求和實現(xiàn)的具體業(yè)務(wù)場景(一對多的數(shù)據(jù)同步),我們決定采用開源的數(shù)據(jù)庫同步軟件SymmetricDS。具體業(yè)務(wù)邏輯如圖1。整個系統(tǒng)部署兩套SymmetricDS軟件,一套位于APP01服務(wù)器上負責監(jiān)視核心區(qū)數(shù)據(jù)庫(begy_bdb)上指定數(shù)據(jù)表的變化。一套位于APP02服務(wù)器上負責接收數(shù)據(jù)。

        圖1 數(shù)據(jù)同步邏輯Fig.1 The logic of data synchronization

        SymmetriDS軟件可以在網(wǎng)上下載symmetric-server-3.8.7.zip[4],然后直接解壓縮即可。由于該軟件是基于JAVA環(huán)境開發(fā)的,可以部署在任意平臺上,目前在windows和linux上都測試正常。SymmetricDS的部署極為簡單,將壓縮包解壓到指定文件夾下即可。

        我們選擇分別在兩臺接口服務(wù)器APP01和APP02的api用戶環(huán)境下部署兩套SymmetricDS。服務(wù)器APP01上的SymmetricDS為服務(wù)節(jié)點,負責抓取核心庫指定表的數(shù)據(jù)變化,這些變化主要包括插入、刪除、更新,然后將變化的數(shù)據(jù)批量推送到服務(wù)器APP02上,APP02作為子節(jié)點接收推送的批量數(shù)據(jù),并負責將這些數(shù)據(jù)同步到行業(yè)區(qū)以及INT區(qū)數(shù)據(jù)庫上。

        1.1 部署服務(wù)節(jié)點

        服務(wù)器APP01上部署一套SymmetricDS作為服務(wù)節(jié)點,負責管理核心區(qū)數(shù)據(jù)庫。因為SymmetricDS啟動時會讀取部署的engines文件夾下的配置文件,并將若干個參數(shù)讀取并寫入數(shù)據(jù)庫。部署后的samples文件夾下存放了若干個配置樣例以提供參考,我們需要拷貝樣例文件夾samples下的corp-000.properties配置文件到engines目錄下并修改文件名為:bdb.properties,并根據(jù)實際情況對bdb.properties的配置進行修改。

        1.2 部署子節(jié)點

        服務(wù)器APP02上部署一套SymmetricDS軟件[5],負責接收APP01推送的批量數(shù)據(jù),并負責將這些數(shù)據(jù)同步到INT區(qū)數(shù)據(jù)庫IDB和行業(yè)區(qū)數(shù)據(jù)庫UDB。需要到文件夾samples目錄下拷貝2份樣例corp-000.properties 到engines目錄下并修改文件名為:xdb-001.properties(負責INT區(qū)數(shù)據(jù)庫)和xdb-002.properties(負責行業(yè)區(qū)數(shù)據(jù)庫),并根據(jù)實際情況修改配置(這里取名叫xdb是因為它同時負責INT區(qū)和行業(yè)區(qū)兩個數(shù)據(jù)庫的同步)。

        1.3 數(shù)據(jù)庫配置

        在服務(wù)器上配置完必要的信息后,需要在核心區(qū)數(shù)據(jù)庫中幾張?zhí)囟ǖ臄?shù)據(jù)表里對具體的業(yè)務(wù)邏輯進行配置。這個步驟只需要在服務(wù)節(jié)點配置即可,系統(tǒng)運行后子節(jié)點注冊到服務(wù)節(jié)點,之后也會相互同步這些信息。

        1.3.1 系統(tǒng)表的安裝 系統(tǒng)在服務(wù)節(jié)點運行時需要一些表。這些表的安裝只需在/bin目錄下執(zhí)行以下命令即可:./symadmin --engine bdb-000 create-sym-table。子節(jié)點不需要安裝,待子節(jié)點啟動并注冊到服務(wù)節(jié)點后會自動安裝。

        這樣就在核心區(qū)數(shù)據(jù)庫下安裝了46張以“sym_”開頭的表。其中一些是進行業(yè)務(wù)邏輯配置使用的,需要后續(xù)進行配置;一些是系統(tǒng)運行時需要的,在系統(tǒng)啟動后從配置文件中讀取的,例如sym_node數(shù)據(jù)表記錄了系統(tǒng)的節(jié)點信息。具體可以查看user-guide文檔的Appendix A: Data Model部分。另外,系統(tǒng)在/bin目錄下有很多可執(zhí)行的命令,相關(guān)的幫助可以參看user-guide文檔,同時也可以使用以下命令查看幫助信息:./symadmin-help。

        1.3.2 具體業(yè)務(wù)的數(shù)據(jù)庫配置 建立分組:(這一步在啟動系統(tǒng)時讀取配置文件自動完成)服務(wù)節(jié)點啟動后讀取配置文件中的信息,將配置文件中關(guān)于組名和擴展名等信息寫入數(shù)據(jù)庫中,子節(jié)點啟動后會注冊到服務(wù)節(jié)點上,然后節(jié)點間會交換、同步信息。

        下面以同步核心庫的“中國地面逐小時要素資料”、“中國地面分鐘降水資料”這兩類數(shù)據(jù)為例,介紹實時同步數(shù)據(jù)的具體數(shù)據(jù)庫配置。以下定義都是在核心庫數(shù)據(jù)表中進行。

        ①定義channel

        insert into sym_channel (channel_id, processing_order, max_batch_size, enabled, description)values(′SURF_WEA_CHN_MUL_HOR′,1,100000,1,′SURF_HOUR_DATA FROM BDB TO XDB′);

        insert into sym_channel (channel_id, processing_order, max_batch_size, enabled, description)values(′SURF_WEA_CHN_PRE_MIN′,10,100000,1,′SURF_PRE_MIN_DATA FROM BDB TO XDB′);

        考慮到分鐘表的數(shù)據(jù)量很大,所以這里定義了兩個channel,分別用來同步小時表和分鐘表數(shù)據(jù)。channel_id是定義的通道名稱,max_batch_size指定此channel中的一個batch中可以處理的數(shù)據(jù)變化事件的最大值。

        ②定義trigger

        insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) values (′SURF_WEA_CHN_MUL_HOR_TRIGGER′,′SURF_WEA_CHN_MUL_HOR_TAB′,′SURF_WEA_CHN_MUL_HOR′,current_timestamp,current_timestamp);

        insert into sym_trigger (trigger_id,source_table_name,channel_id,last_update_time,create_time) values (′SURF_WEA_CHN_PRE_MIN_TRIGGER′,′SURF_WEA_CHN_PRE_MIN_TAB′,′SURF_WEA_CHN_PIN′,current_timestamp,current_timestamp);

        這里定義了2個觸發(fā)器分別用來捕獲小時表和分鐘表的數(shù)據(jù)變化,觸發(fā)器關(guān)聯(lián)了上面定義的channel。若考慮按照經(jīng)緯度范圍對分鐘表的數(shù)據(jù)變化進行過濾,需要修改觸發(fā)器定義,為觸發(fā)器添加限制條件??梢杂萌缦旅罘謩e為分鐘表的INSERT、UPDATE、DELETE 3個觸發(fā)器添加限制條件,例如UPDATE限制條件:UPDATE SYM_TRIGGER SET SYNC_ON_INSERT_CONDITION=′:new."V05001">=24.37 and:new."V05001"<=29.13) and:new."V06001">=103.36and:new."V06001">=109.37)′ WHERE TRIGGER_ID=′SURF_WEA_CHN_PRE_MIN_TRIGGER′。其中trigger_id表示觸發(fā)器名稱,source_table_name表示要同步的數(shù)據(jù)表的表名。在添加限制條件后,分鐘表每小時同步的數(shù)據(jù)量由近90萬條下降到20萬條。

        ③定義node_group_link

        insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values (′bdb′, ′xdb′, ′P′);

        該語句指定數(shù)據(jù)同步的源和目的,即從bdb同步到xdb,以及數(shù)據(jù)同步方式‘P’,即通過推送的方式進行傳輸,P表明數(shù)據(jù)源節(jié)點將通過HTTP PUT請求初始化通信。

        ④定義router

        insert into sym_router (router_id,source_node_group_id,target_node_group_id,router_type,create_time,last_update_time)values(′BDB_2_XDB′, ′bdb′, ′xdb′, ′default′,current_timestamp, current_timestamp);

        router指定了組間的數(shù)據(jù)傳遞關(guān)系,其中source_node_group_id和target_node_group_id的值必須和第3步node_group_link中的進行對應(yīng)。Trigger和Router是多對多的關(guān)系。這意味著,一個觸發(fā)器可以捕獲數(shù)據(jù)變化,然后路由這些變化到多個位置,也意味著一個Router可以與多個不同的觸發(fā)器相聯(lián)系。

        ⑤定義trigger_router

        Insert into sym_trigger_router (trigger_id,router_id,initial_load_order,last_update_time,create_time)values(′SURF_WEA_CHN_MUL_HOR_TRIGGER′,′BDB_2_XDB′, -1, current_timestamp, current_timestamp);

        這里同樣需要定義了2個trigger_router分別用來處理小時表和分鐘表,分鐘表的trigger_rouer和小時表的類似。trigger_router是將trigger和router進行關(guān)聯(lián),它們之間是多對多的關(guān)系。

        2 同步數(shù)據(jù)及清理數(shù)據(jù)

        在做好以上數(shù)據(jù)庫配置工作后,即可依次啟動SymmetricDS服務(wù)節(jié)點和SymmetricDS子節(jié)點。

        2.1 啟動SymmetricDS服務(wù)節(jié)點

        2.1.1 在bdb-000上啟動SymmetricDS 在bin目錄下運行啟動命令以啟動SymmetricDS:./sym --engine bdb-000 --port 31415。若要在后臺啟動則運行以下命令:nohup ./sym --engine bdb-000 --port 31415 &。

        2.1.2 開啟注冊(該步驟啟動一次即可,以后重啟服務(wù)不需要再次運行):

        ./ symadmin --engine bdb-000 open-registration xdb 001

        ./ symadmin --engine bdb-000 open-registration xdb 002

        如果服務(wù)需要重啟,則刪掉sym進程再次運行啟動命令即可。

        2.2 啟動SymmetricDS子節(jié)點

        在bin目錄下執(zhí)行以下命令:./sym--port 31415,即可將該組的兩個節(jié)點同時啟動。重啟命令類似于服務(wù)節(jié)點。如果需要在后臺啟動,則使用如下命令:nohup ./sym--port 31415 &。

        2.3 啟動觸發(fā)器

        做了以上配置之后,還需要在數(shù)據(jù)庫中將觸發(fā)器啟動,注意是在源數(shù)據(jù)庫中啟動。以小時表的同步為例。用以下語句查看表的觸發(fā)器:SELECT TRIGGER_NAME,STATUS from all_triggers where table_name=‘SURF_WEA_CHN_MUL_HOR_TAB’,可以看到小時表的觸發(fā)器:SYM_ON_I_FOR_SRF_W_CHN_ML_HR_;SYM_ON_U_FOR_SRF_W_CHN_ML_HR_;SYM_ON_D_FOR_SRF_W_CHN_ML_HR_。讓觸發(fā)器生效可以用以下示例語句:ALTER TABLE SURF_WEA_CHN_MUL_HOR_TAB ENABLE ALL TRIGGERS;啟動觸發(fā)器后,數(shù)據(jù)就可以從源數(shù)據(jù)庫(核心庫)同步到目標數(shù)據(jù)庫了(行業(yè)庫和INT庫)。如果只需要在目標數(shù)據(jù)庫中存幾天數(shù)據(jù),那么就需要創(chuàng)建存儲過程來刪除幾天之前的數(shù)據(jù)。例如刪除7 d以前的小時數(shù)據(jù)的存儲過程可以通過以下語句創(chuàng)建:

        CREATE OR REPLACE PROCEDURE PROC_DROP_PATITION_HOR_TAB AS

        BEGIN

        DELETE FROM SURF_WEA_CHN_MUL_HOR_TAB WHERE

        D_DATETIME

        END PROC_DROP_PATITION_HOR_TAB;

        在實際應(yīng)用中需要創(chuàng)建一個定時任務(wù)來定時啟動該存儲過程。但是創(chuàng)建定時任務(wù)的時候可能會提示沒有權(quán)限:insufficient privileges??梢栽跀?shù)據(jù)庫工具pl/sql中手動建。然后用SELECT*FORM USER_JOBS查看,其中JOB_ID 是系統(tǒng)分配的,如圖2所示。

        圖2 創(chuàng)建定時任務(wù)Fig.2 Create timed task

        然后用以下語句手動啟動定時任務(wù)。

        BEGIN

        DBMS_JOB.RUN(24);

        END;

        這樣即可使定時任務(wù)生效,等到約定的時間,即可執(zhí)行定時任務(wù)。如果需要立刻啟動定時清理任務(wù),則用如下語句手動運行定時任務(wù)??梢詮娜罩局锌吹绞欠襁\行成功,如圖3。

        BEGIN

        DBMS_SCHEDULER.RUN_JOB(′DROP_SEVP_K_PARTITION′,TRUE);

        END;

        3 總結(jié)

        本文以同步CIMISS核心區(qū)小時氣象觀測數(shù)據(jù)到行業(yè)庫和INT庫為例,詳細介紹了SymmetricDS軟件的安裝部署及具體業(yè)務(wù)配置。目前SymmetricDS可以穩(wěn)定運行,可以穩(wěn)定高效將數(shù)據(jù)同步到目標數(shù)據(jù)庫。并為公司及公眾用戶、行業(yè)用戶等專線用戶提供實況和預(yù)報數(shù)據(jù),從而充分利用資源,滿足了不同用戶對氣象數(shù)據(jù)的需求,也發(fā)揮了行業(yè)庫和INT庫的社會效益。

        圖3 查看定時任務(wù)運行狀態(tài)Fig.3 Check the running status of timed tasks

        猜你喜歡
        觸發(fā)器部署啟動
        一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
        晉城:安排部署 統(tǒng)防統(tǒng)治
        部署
        霧霾來襲 限產(chǎn)再次啟動
        主從JK觸發(fā)器邏輯功能分析
        電子世界(2017年22期)2017-12-02 03:03:45
        安發(fā)生物啟動2017
        使用觸發(fā)器,強化安全性
        部署“薩德”意欲何為?
        太空探索(2016年9期)2016-07-12 10:00:02
        西部最大規(guī)模云計算中心啟動
        俄媒:上合組織或9月啟動擴員
        久久伊人精品只有这里有| 国产精品国产三级国产av品爱| 无码国产精品一区二区av| 日本熟妇色xxxxx欧美老妇| 亚洲AV无码精品色欲av| 一本色道久久综合亚州精品| 亚洲最新国产av网站| 日韩欧美亚洲综合久久影院ds| 国产精品无码精品久久久| 精品日产一区2区三区 | 中文字幕在线乱码一区| 特级毛片爽www免费版| 一区一级三级在线观看| 极品少妇在线观看视频| 极品嫩模大尺度av在线播放| 久久99久久99精品中文字幕| 国产精品亚洲专区无码web| 日韩中文字幕乱码在线| 日本边添边摸边做边爱| 国产精品美女久久久久| 欧美成人高清手机在线视频| 自拍偷区亚洲综合第一页| 亚洲人成欧美中文字幕| 久久久久久成人毛片免费看 | 久久久无码一区二区三区| 236宅宅理论片免费| 国产v精品成人免费视频400条 | 色窝窝手在线视频| 91久久国产香蕉熟女线看| 午夜无遮挡男女啪啪免费软件| 久久久窝窝午夜精品| 风韵丰满妇啪啪区老老熟女杏吧| 国产一区国产二区亚洲精品| 亚洲av无码之国产精品网址蜜芽| 538任你爽精品视频国产| 亚洲国语对白在线观看| 男女猛烈拍拍拍无挡视频| 猫咪www免费人成网最新网站| 亚洲中文字幕永久网站| 综合图区亚洲另类偷窥| 亚洲av伊人久久综合密臀性色|