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

基于文件探測的SQLite數據實時遠程增量同步的實現

2021-04-13 13:42:52陳汝鵬張潔心
通信電源技術 2021年20期
關鍵詞:解決方案程序數據庫

陳汝鵬,焦 楓,張潔心

(1.中通服咨詢設計研究院有限公司,江蘇 南京 210019;2.江蘇基久網絡科技有限公司南京分公司,江蘇 南京 210019)

0 引 言

隨著移動互聯網、物聯網的發展,基于SQLite數據庫的應用越來越多。SQLite為獨立應用和設備提供本地化存儲,強調資源節約、高性能、可靠性、獨立性以及易用性。SQLite數據庫具有簡單、自包含、零配置等特點,方便應用的開發,用戶只需要在設備或應用所在的服務器進行單配置就能使用一個功能豐富的關系型數據庫,尤其適用于嵌入式應用。隨著業務的擴大,每套設備或應用自帶一個SQLite數據庫,運營人員很難擁有一個集所有設備數據于一體的全集數據庫,這就產生了SQLite數據庫實時同步到遠程數據庫的需求[1-3]。本文針對SQLite的特點與需求,討論了基于文件探測的SQLite多源遠程實時數據同步的實現方法。

1 SQLite的特性

SQLite是一個本地數據庫,它可以將數據庫的所有表、索引、視圖等存儲到一個單獨的文件里。它具有以下特性:①滿足數據庫事務的原則性、一致性、隔離性以及持久性的特點,即使在系統崩潰和電源故障后,數據庫也能保持與故障前的事務一致性;②零配置,無需設置或管理;③SQLite數據庫輕量,但是包含了標準SQL的全部功能實現,例如索引、公共表達式和窗口函數等;④單文件,單個跨平臺磁盤文件即可存儲完整的數據庫;⑤支持Blob,數據庫的存儲支持千兆字節大小的字符串和Blob類型的字段;⑥應用程序接口(Application Program Interface,API)簡單易用;⑦良好的擴展性,使用ANSI-C編寫,支持多種其他語言的對接使用;⑧自包含,無外部依賴關系;⑨跨平臺,支持Android、iOS、Linux,Mac、Solaris、VxWorks以及Windows,易于移植到其他系統[4]。

2 SQLite使用場景

關系型數據庫引擎實現企業級數據共享,強調數據的可伸縮性、并發性、中心性以及控制性。SQLite為獨立應用和設備提供本地化存儲,強調資源節約、高性能、可靠性、獨立性以及易用性[5]。關系型數據庫主要用于高并發、數據量相對較大、通過網絡與應用程序分離的場景;而SQLite數據庫由于其簡單、靈活、高效的特點,能夠適用于許多其他的場景[6]。

(1)嵌入式設備和物聯網。基于SQLite數據庫零配置的特點,該數據庫的應用不需要數據庫管理員的運營維護,因此在嵌入式應用中廣泛流行,包括移動電話、機頂盒、電視機、游戲控制器、攝像機、智能手表、廚房電器、恒溫控制器、汽車、機床、飛機、遙控器、遙控飛機、醫療器械以及機器人等[7]。

(2)應用程序文件。SQLite經常被用來存放一些應用程序的過程數據,例如版本控制系統、金融分析工具、剪輯套件的媒體目錄以及CAD文件包等。當應用程序修改內容時,數據庫會自動更新。

(3)網站。由于SQLite輕量、方便,因此在小、中型流量的網站(絕大部分網站)中很流行。

(4)數據分析。SQLite可以用于網站訪問日志分析、體育統計分析、實驗結果分析等。

(5)企業數據緩存。由于大部分查詢在本地進行,因此可以從關系型數據庫中緩存一部分數據到本地(存儲到SQLite中),從而減少延遲,避免網絡的雙向損耗,減少網絡的負載[8]。

(6)服務器端數據庫。SQLite可以給客戶端提供數據,類似于C/S架構,此應用場景與關系型數據庫類似。

(7)數據傳送。由于SQLite是單文件數據庫,而且文件格式兼容各個操作系統平臺,因此經常被用來作為數據傳輸的媒介。發送者只需要將數據導出到一個SQLite文件并將此文件傳送給接收者,接收者用SQL提取需要的數據即可。

(8)文件歸檔/數據容器。將文件內容打包進SQLite數據庫,類似于通過ZIP壓縮文件,其優點是能實時更新。

3 SQLite多源遠程實時數據同步的難點

3.1 應用多且分散

生產經營活動中,SQLite數據庫經常被用于嵌入式設備中。嵌入式設備作為單體應用,其實現的業務和功能是自包含的,一般不需要遠程或云上的服務支持,甚至不需要接入局域網,因此很容易推廣與應用。隨著生產經營活動的不斷開展,如果管理人員需要采集嵌入式設備的運行信息,如此多且分散的SQLite數據庫與遠程中心數據庫進行數據同步將會非常復雜。如果每個單體應用直接與中心數據庫進行連接,則對中心數據庫的承載能力要求非常高,且這樣的連接數是在不斷增長的[9]。SQLite單體應用與中心數據庫拓撲如圖1所示。

圖1 SQLite單體應用與中心數據庫拓撲

3.2 應用改造麻煩

嵌入式設備等單體應用在生產經營環境中往往是獨立的存在,部署調試之后運行了很長時間,對其進行改造的難度比較大,因此需要在不影響原有程序正常運行的情況下,將運行數據發送至中心數據庫。實際上,修改生產環境的應用本身難度很大,且會造成不可知的風險[10]。

3.3 SQLite實時增量同步解決方案較少

基于SQLite數據庫的應用場景一般都是小型項目,實時增量同步解決方案較少。實時同步的實現方式一般都是縮短定時同步任務的時間間隔來達到偽實時,這種方式通過定時任務去查詢數據并進行比對查看是否有增量數據,然后取出增量數據并發送給服務器。通過定時任務進行數據同步是一種低效的試錯同步模式,當一輪定時任務執行時查不到增量數據,就會造成程序的無效執行,給應用所在服務器帶來了很多不必要的開銷。

4 SQLite多源遠程實時數據同步的解決方案

通過對SQLite的特性、使用場景以及SQLite多源遠程實時數據同步的難點的闡述可知,SQLite遠程增量數據實時同步需要實現無侵入式的數據采集、存儲。數據采集程序監聽SQLite數據庫單文件,通過消息隊列實現SQLite單體應用服務端程序的解耦,數據的采集、發送等不會影響原有應用的運行,在原有程序幾乎無感知的情況下實現數據同步。本解決方案的網絡拓撲如圖2所示。

圖2 網絡拓撲

本解決方案的原理主要是通過監聽SQLite數據庫單文件的改變,從而監測到SQLite數據庫發生了修改操作,包括數據的新增、修改和刪除,以此獲得數據發生改變的實時時間點。在這個時間點去查詢增量數據,并將增量數據發送到消息隊列,服務端程序從消息隊列取出數據并解析入庫,實現了SQLite遠程數據實時增量同步。整個過程通過SQLite數據庫文件發生改變這一事件進行驅動,并通過消息隊列進行解耦,解決了數據的實時性以及操作無侵入的問題。整個過程的流程如圖3所示。

圖3 功能流程

本解決方案由采集程序、消息傳輸通道以及服務端程序組成。采集程序通常與基于SQLite數據庫的應用程序部署在同一臺設備上,是本解決方案的核心部分。采集程序通過監聽SQLite數據庫的文件,捕獲數據庫文件發生改變的時間點,然后通過觸發器方式或時間戳方式查詢得到增量數據,按照約定的統一數據格式進行打包,并發送到消息傳輸通道。消息傳輸通道部署了消息隊列,接收采集程序發送過來的增量數據,并提供給服務端程序。消息傳輸通道本身不設置持久化功能,避免數據被泄露。服務端程序訂閱消息傳輸通道中的消息隊列,當消息傳輸通道中有新的數據時會將其推送到服務端程序的數據解析模塊,數據解析模塊按照約定的數據格式進行解析入庫。

下面針對SQLite數據庫文件監聽、增量數據的獲取、數據格式約定等介紹本解決方案。

4.1 SQLite數據庫文件監聽

本方案通過 Apache Commons IO 實現文件的監聽,原理是通過另起一個線程按照固定頻率掃描目錄。通過FileAlterationMoniter啟動監聽線程、FileAlterationObserver選擇需要監聽的目錄、重寫FileAlterationListenerAdaptor的方法可以實現增量數據查詢、發送的業務,下面是其中的部分代碼:

File configFile = new File(filePath);

// 因為監聽是以目錄為單位進行的,所以這里直接獲取文件的根目錄

File dir = configFile.getParentFile();

4.2 增量數據的獲取

本方案采用兩種比較成熟的增量數據獲取方法,即觸發器與時間戳,實際使用中根據條件二選一即可。觸發器方式適用于源表沒有維護時間戳字段,程序無法直接獲取到增量數據,且采集程序有權限為源數據庫創建觸發器。時間戳方式適用于應用程序本身維護了時間戳字段,應用本身對源表的新增、修改以及邏輯刪除的同時會更新時間戳字段,采集程序通過比較時間戳字段的值即可獲取增量數據。下面舉例說明SQLite數據庫觸發器的創建。

新增操作的觸發器:

4.3 數據格式約定

為確保采集端與服務端對數據的一致理解,數據格式約定如下:

服務端根據此數據格式,確定數據同步的目的表、表中主鍵以及各個字段的名稱和值等信息。

5 結 論

SQLite數據庫基于其本身簡單易用等特點已經在各個領域得到了廣泛的應用,但目前絕大部分基于SQLite數據庫的應用都是單機版,數據遠程實時增量同步非常困難。本文通過引入采集程序、消息傳輸通道、服務端程序的集成解決方案,實現了基于文件探測的SQLite數據庫遠程實時增量同步。此方案通過采集程序、消息傳輸通道以及服務端程序這3層的劃分,采集程序與服務端程序都只依賴于公網的消息傳輸通道,采集程序與服務端程序本身相互獨立,通過約定的數據格式實現數據的打包與解析。本解決方案不限定服務端程序所用的數據庫,可以是SQLite數據庫、關系型數據庫或者大數據類型的數據庫。基于文件探測的方式是本解決方案實現數據實時同步的基礎,此方法避免了通過傳統的定時任務周期性查詢數據庫帶來的資源開銷,不過對于非采集目標的數據的改動也會觸發后續的增量數據查詢,造成程序無效執行。因此,本方案適用于同步源數據庫中的熱點數據。

猜你喜歡
解決方案程序數據庫
解決方案和折中方案
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
4G LTE室內覆蓋解決方案探討
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 国产午夜精品一区二区三区软件| 国产91av在线| 亚洲精品无码久久毛片波多野吉| 精品亚洲麻豆1区2区3区| 国产一级做美女做受视频| 视频二区中文无码| 另类欧美日韩| 国产va在线| 波多野结衣国产精品| 精品国产91爱| 男女男精品视频| 国产精品自在在线午夜| 久久国产精品电影| 黄色一及毛片| 国产欧美中文字幕| 美女啪啪无遮挡| 亚洲精品无码高潮喷水A| 999精品色在线观看| 精品久久蜜桃| 91精品综合| 亚洲高清在线天堂精品| 色欲色欲久久综合网| 亚洲精品大秀视频| 国产成人精品视频一区视频二区| 色综合久久88| 亚洲第一国产综合| 国产一区二区丝袜高跟鞋| 一区二区偷拍美女撒尿视频| 强乱中文字幕在线播放不卡| 好久久免费视频高清| 国产免费人成视频网| 婷婷午夜影院| 91无码网站| 99精品热视频这里只有精品7| 国产麻豆精品在线观看| 97国产成人无码精品久久久| 国产精品久久久久久搜索 | 国产a在视频线精品视频下载| 亚洲精品无码成人片在线观看| 精品中文字幕一区在线| 亚洲综合亚洲国产尤物| 欧美日韩中文字幕二区三区| 亚洲中文精品人人永久免费| 日韩无码精品人妻| 福利在线免费视频| a级毛片一区二区免费视频| 久久久精品久久久久三级| 风韵丰满熟妇啪啪区老熟熟女| 亚洲性网站| 一本综合久久| 在线免费观看AV| 又猛又黄又爽无遮挡的视频网站| 青青操国产| 亚洲天堂在线视频| 国产人人干| 久久香蕉国产线看观看亚洲片| 超清无码熟妇人妻AV在线绿巨人| 国产特一级毛片| 国产97色在线| 好吊色妇女免费视频免费| 亚洲国产精品日韩av专区| 国产亚洲视频免费播放| 亚洲天堂网站在线| 亚洲精品中文字幕无乱码| 亚洲精选无码久久久| 国产一二三区视频| 亚洲男人天堂2020| 亚洲三级视频在线观看| a毛片基地免费大全| 国产真实乱了在线播放| 无码免费的亚洲视频| 精品国产免费观看一区| 国产永久免费视频m3u8| 亚洲swag精品自拍一区| 高清无码手机在线观看| 在线色国产| 999精品视频在线| 免费激情网址| 香蕉eeww99国产在线观看| 久久亚洲美女精品国产精品| 毛片视频网址| 欧美精品高清|