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

一種通過數據庫微改造提升對接移動互聯網能力的方法

2018-03-02 00:22:07畢凱峰
軟件 2017年9期
關鍵詞:數據庫系統

畢凱峰

摘要:隨著我國“互聯網+”戰略的不斷推進,公共服務對接移動互聯網需求不斷凸顯的同時,也為服務單位帶來了內部系統升級改造的成本壓力,本文通過對接業務系統和移動互聯網的實踐經驗,介紹了一套對系統改動小、成本低的對接方法,并通過數據對比體現了該方法的優勢。

關鍵詞:互聯網+;公共服務;數據庫;Change Notification;微信服務號

1 理論及背景

當前我國“互聯網+”戰略不斷推進,互聯網正與傳統產業及服務進行著更加深度的融合。目前,我國公共服務單位已經普遍建成滿足業務需要的信息系統,根據諾蘭( Richard.L.Nolan)的信息系統進化的階段模型[11( Nolan stage model),處于由控制階段( Stage III Control)向集成階段(StageIV Integration)發展時期,即由多個系統分別處理數據向多系統集成、數據集中過渡,系統在滿足內部使用方面都較為完善。

然而,完善的內部系統在對接以微信服務號、支付寶生活號為典型代表的“互聯網+”服務后也體現出了短板,主要體現在傳統軟件開發思路下建設的系統中,很少考慮對移動互聯網等外部平臺主動進行數據推送的功能,而類似“業務辦理進度在微信端通過模板消息進行推送”的服務恰恰要求業務系統能主動對外發起數據對接和交互,這項關鍵功能的缺失給很多單位帶來了系統升級的負擔,如何使這些系統適應移動互聯網趨勢,成為了“互聯網+公共服務”發展過程中的一個必須解決的問題。

2 方案設計

業務系統根據數據對外部系統進行主動推送的能力可支撐多種移動互聯網服務,能夠給用戶帶來很多便利,比如燃氣開戶業務辦理的實時進度就可以對用戶進行推送,及時提醒用戶提交材料是否需要補充、審核是否已經完成、上門安裝人員是否已經接單、更改上門時間的方法等,但對外推送這些信息的功能在之前建立的業務系統中都是沒有的,像舊版的燃氣客戶服務系統中對數據的使用就主要局限在“增、刪、查、改”四種操作中,如要增加對外推送信息功能,傳統的解決方式有兩種:

(1)對業務系統進行改造,增加消息推送系統接口。這種方法需要一定的改造費用,且需要原開發廠商配合,這實際增加了整個服務平臺的建設成本。

(2)讓移動互聯網平臺去適應業務系統,比如在業務系統數據庫中記錄數據變更時間或錄入時間,通過移動互聯網平臺定期對業務系統數據變更時間進行查詢,發現最新時間段內業務數據更新,則將這些信息推送給用戶。這種方法如果檢查間隔時間太短,則會給移動互聯網平臺和業務系統帶來巨大的性能壓力,掃描時間間隔太大則會使信息通知和實際業務狀態之間出現一定的差異。

兩種解決方式都有明顯的缺點,而經過實驗和測試,數據庫本身的“變更通知”功能也是解決該問題的一種值得推薦的方法。

“變更通知”的作用就是當數據庫中的數據發生變化的時候,自動發出一個通知給應用系統。Oracle lOg Release2及以上的Change Notification和部分版本的SQL Server Notification Services服務都可以實現該功能。以Oracle中的變更通知Change Notification為例,該功能可以在你指定的表數據發生變化時給出-個通知,變更通知支持監控的數據庫變化包括:

(1)數據庫狀態變化:啟動和關閉數據庫;

(2)數據庫對象變化(包括表結構變化和表刪除、表數據變更如插入、刪除、更新等)。

監控中發現數據出現變化后,數據庫推送的通知可以包含以下內容:

(1)發生變化的數據庫名;

(2)發生變化的數據庫表;

(3)發生變更的時間;

(4)發生了哪種類型的變更;

(5)發生變更的數據RowID。

通過以上數據,系統就能夠準確定位發生變更的數據,并進行相應的操作,由于整個監控過程采用數據庫本身的機制進行,不會給系統增加額外的負擔。

3 方案實現與效果對比

下面以通過Oracle的Change Notification功能將客戶服務系統中的業務辦理進度變化推送到微信服務號為例,為實現該需求,我們設計并搭建了一套用于微信服務號的接口與客戶服務系統進行數據對接(如圖1):

(1)微信服務接口首先通過Oracle數據庫的ODP.NET( Oracle Data Provider for .NET是Oracle專門為基于.NET的應用程序設計的一套接口)向數據庫注冊所需監控的查詢,見圖1①;

(2 )Oracle數據庫根據注冊查詢對存儲工單進度的表格進行監控,見圖1②;

(3)工單表發生變化時數據庫通過ChangeNotification功能由ODP.NET向微信服務號接口發送通知,通知中包含了變更類型和變更數據的RowID,見圖1③;

(4)微信服務號接口接到通知后,可以根據RowID對變更后的數據進行查詢,根據查詢到的數據便可以通知用戶發生的變化,見圖1④。

實現該方案的核心代碼如下,實現的具體功能為點擊按鈕后開始監控數據庫表tb cns的變更,出現變更時顯示變更信息,點擊另一按鈕后結束監控;其中程序開頭需對ODP.NET中的三個命名空間:

Orac,le.DataAccess、Oracle.DataAccess.Client幣口

Oracle.DataAccess.Types進行引用。

OracleDependencydep;

OracleConnection conn;

OracleDependency.Port= 49500;endprint

//用于設置接收Change Notification的端口號。

stringcs=”User Id =****;Password=****;Data

Source=********”:

conn= newOracleConnection(cs),

conn.Open();

OracleComman{icmd=newOracleCommand(select術from

th_cns”,conn);

//綁定OracleCommand實例。

dep= newOracleDependency(cmd);

//綁定OracleDependency實例。

dep.QueryBasedNotification= false;

//設置指定通知是“基于對象”類型, “基于對象”

表示表中任意數據變化時都會發出通知。

dep.Rowidlnfo= OracleRowidlnfo.lnclude;

//該設置使Notification中包含變化數據對應的Rowld。

dep.OnChange+=

newOnC hangeEventHandler(OnNotificaton);

//指定收到通知后的事件處理方法。

cmd.Notification.IsNotifiedOnce= false;

//表示是否一次性的通知,如果設置為True,使用后會立即移除此次注冊。

cmd.Notification.Timeout=0:

//注冊的超時時間(秒),超時后注冊將被自動移除,0表示不超時。

cmd.Notification.IsPersistent= true;

//True表示通知存于數據庫中,False表示存于內存中,

存在數據庫中可以保證即便數據庫重啟之后,通知仍然不會丟失。

OracleDataReaderodr= cmd.ExecuteReader0;

this.richTextBoxI.AppendText(“Registration completed.”

+ DateTime.Now.ToLongTimeString()+

Environment.NewLine);

}

privatevoid OnNotific aton(ohj ectsrc,

Oracle Notific ationEventArgsarg)

{//變更事件處理方法,在此方法中對

OracleNotificationEventArgs進行解析并顯示

DataTabledt= arg.Details;

//從arg.Details中獲得通知細節數據,包括變化數據的

Rowld,變化類型等

this.richTextBox I.Dispatcher.Beginlnvoke(

DispatcherPriority.Normal,

newAction(0=>

{this.richTextBoxl.AppendText("Notification Received.”

+ DateTime.Now.ToLongTimeString()+” Changed

data(rowid):“+arg.Details.Rows[O]["rowid"].ToString()+"

Change Type:"+arg.Info.ToString0+

Environment.NewLine);)));//展示變化數據,其中包括接受到變化通知的時間、變化數據的RowID、變化類型;

}

運行程序后開始監聽,在數據庫中更新一條數據并在數據的Change Time字段記錄變更發生時的系統時間,更新提交后,程序會接收到數據庫通知,顯示變更類型為數據更新,變更時間為9:25:13,變更的數據Rowld為AAAM/GAAFAAAAHYAAE,根據該Rowld查詢到對應數據的變更時間為9:25:08。

通過以上例程可以看到,Change Notiflcation方案外部系統可以在極短的時間內獲取到Oracle數據庫中的變更數據;為將Change Notification方案與傳統方案在不同數據量條件下獲取變更數據的時間進行比較,我們假設數據庫某條數據變更時記錄的變更時間為tl,變更通知中記錄的通知接收時間為t2,則ChangeNotifcation方案中外部系統獲取數據變更通知耗時為t“,其中t“= t2-tl,外部系統獲取通知后,根據RowID查詢變更數據的耗時為tp,則ChangeNotification方案下獲取變更數據的整體耗時為(tα+tβ);另設通過檢查數據變更時間查詢到變更數據的耗時為tY,則在同一數據庫中,不同數據量情況下的tα、tβ、tγ記錄見表一,tα、tβ和tγ隨數據量變化趨勢見圖2:

從圖2可以看出,采用Change Notiflcation方案(變更通知方案)在數據量增加時的耗時相對穩定,而數據變更時間檢查的方式耗時隨著數據量增加而不斷上漲,在數據量越來越大的背景下,采用Change Notiflcation方案在系統運行耗時上無疑更有優勢。

4 結語

經分析和測試,通過使用Change Notification方案可以解決較早建立的業務系統沒有信息推送接口的問題,業務系統本身不需要進行大改造就能提供根據業務變化進行數據主動推送的功能,實現了互聯網服務水平關鍵能力的升級,特別適合系統迭代周期相對較長的政府部門和公共服務單位。因此,進行業務系統升級改造對接移動互聯網服務時不妨考慮采用此方法。endprint

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 日韩在线成年视频人网站观看| 亚洲日韩AV无码一区二区三区人 | 久久婷婷综合色一区二区| 国产国模一区二区三区四区| 成年人免费国产视频| 97国内精品久久久久不卡| 国产精品第5页| 国产00高中生在线播放| 日韩国产黄色网站| 亚洲欧州色色免费AV| 欧美一级黄片一区2区| 国产成人综合亚洲网址| 亚洲av成人无码网站在线观看| 亚洲欧美日韩精品专区| 最新精品国偷自产在线| 91视频首页| 国产黄在线免费观看| YW尤物AV无码国产在线观看| 亚洲成人播放| 欧美一级在线播放| 国产成人免费| 亚洲区一区| 第九色区aⅴ天堂久久香| 嫩草影院在线观看精品视频| 国产综合日韩另类一区二区| 欧美一级爱操视频| 免费在线色| 91青青草视频在线观看的| 青青青国产视频| 久久96热在精品国产高清| 国产区人妖精品人妖精品视频| 欧美色丁香| 中文字幕日韩丝袜一区| 全部毛片免费看| 国产午夜小视频| 欧美日韩在线国产| 国产在线精彩视频论坛| 成人精品视频一区二区在线| 久久综合色视频| 另类专区亚洲| 99视频在线观看免费| 亚洲国产91人成在线| 国产精品女同一区三区五区| 色综合手机在线| 国产内射一区亚洲| 五月丁香伊人啪啪手机免费观看| 国产精品伦视频观看免费| 国产精品55夜色66夜色| 午夜不卡视频| 岛国精品一区免费视频在线观看| 永久成人无码激情视频免费| 亚洲高清中文字幕| 国产高潮流白浆视频| 美女被操黄色视频网站| 久久久精品久久久久三级| 狠狠色成人综合首页| 天天色天天操综合网| 成人欧美在线观看| 久久精品国产999大香线焦| 色天堂无毒不卡| 国产一区二区三区在线观看免费| 91在线无码精品秘九色APP| 欧美在线视频不卡第一页| 国产91丝袜在线观看| 国产福利一区视频| 欧美一级黄色影院| 亚洲免费毛片| 免费看黄片一区二区三区| 色综合色国产热无码一| 婷婷色狠狠干| www.99在线观看| 92午夜福利影院一区二区三区| 亚洲中文制服丝袜欧美精品| 国产精品人人做人人爽人人添| 成人精品午夜福利在线播放| 热九九精品| 狠狠久久综合伊人不卡| 久久久久人妻一区精品| 澳门av无码| 亚洲日韩精品欧美中文字幕| 激情無極限的亚洲一区免费| 亚洲精品中文字幕午夜|