專利名稱:數(shù)據(jù)同步處理方法、設(shè)備及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)同步處理方法、設(shè)備及系統(tǒng)。
背景技術(shù):
伴隨著客戶關(guān)系管理(Customer Relationship Management,簡稱CRM)系統(tǒng)與業(yè)務(wù)運(yùn)營支撐系統(tǒng)(Business&Operation Support System,簡稱BOSS)解耦進(jìn)程的勢在必行, 這兩個(gè)系統(tǒng)之間共有的數(shù)據(jù)部分,需要通過特定的同步進(jìn)程進(jìn)行數(shù)據(jù)的同步處理。例如在 CRM系統(tǒng)中記錄和維護(hù)的用戶數(shù)據(jù)的變更,必須通過后臺的數(shù)據(jù)同步進(jìn)程同步到BOSS系統(tǒng)中?,F(xiàn)有的CRM-BOSS用戶數(shù)據(jù)同步接口中,將CRM系統(tǒng)中記錄的用戶數(shù)據(jù)變更日志同步到BOSS系統(tǒng)數(shù)據(jù)庫通常采用下述方案實(shí)現(xiàn)CRM系統(tǒng)通過觸發(fā)器等技術(shù)手段將用戶數(shù)據(jù)變更軌跡記錄到變更日志表中后,同步處理系統(tǒng)從CRM系統(tǒng)的變更日志表中提取出變更日志,并按照日志產(chǎn)生時(shí)間對提取出的變更日志進(jìn)行排序,數(shù)據(jù)同步系統(tǒng)根據(jù)排列順序依序地對提取出的變更日志進(jìn)行分析處理,為每條日志生成一條對應(yīng)的結(jié)構(gòu)化查詢語言 (StructuredQuery Language,簡稱SQL)語句,并依序?qū)⑸傻腟QL語句寫入至BOSS系統(tǒng)的數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行SQL語句,從而同步實(shí)現(xiàn)BOSS數(shù)據(jù)庫中用戶數(shù)據(jù)的變更,且保持同樣的數(shù)據(jù)變更順序以保證同步后數(shù)據(jù)的正確性。但是發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)現(xiàn)有技術(shù)的這種數(shù)據(jù)處理方法,雖然通過串行地對CRM數(shù)據(jù)庫中的各條變更日志進(jìn)行分析處理,以依序生成對應(yīng)的SQL語句的方式,來保證BOSS系統(tǒng)能夠依序執(zhí)行各SQL語句,從而維持與CRM數(shù)據(jù)庫中同樣的用戶數(shù)據(jù)變更順序,但是這種處理方式的速度極其緩慢,尤其當(dāng)CRM系統(tǒng)中用戶數(shù)據(jù)變更頻繁,CRM 數(shù)據(jù)庫中積壓了大量數(shù)據(jù)時(shí),同步處理系統(tǒng)處理速度過于緩慢將會給CRM數(shù)據(jù)庫造成很大的壓力。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種數(shù)據(jù)同步處理方法、設(shè)備及系統(tǒng),用以解決現(xiàn)有技術(shù)中CRM 系統(tǒng)和BOSS系統(tǒng)間的數(shù)據(jù)同步處理方法處理速度慢、效率低的問題,以實(shí)現(xiàn)一種速度較快的CRM-BOSS數(shù)據(jù)同步處理方法。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種數(shù)據(jù)同步處理方法,包括依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條 SQL語句;按照所述數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的所述多條SQL語句輸出至BOSS 數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條所述SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)同步處理設(shè)備,包括數(shù)據(jù)讀取模塊,用于依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;
分析處理模塊,用于同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL語句;數(shù)據(jù)輸出模塊,用于按照所述數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的所述多條 SQL語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條所述SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)同步處理系統(tǒng),包括上述的數(shù)據(jù)同步處理設(shè)備,以及分別與所述數(shù)據(jù)同步處理設(shè)備連接的CRM數(shù)據(jù)庫和BOSS數(shù)據(jù)庫。本發(fā)明實(shí)施例提供的數(shù)據(jù)同步處理方法、設(shè)備及系統(tǒng),通過在從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各SQL語句按照對應(yīng)的數(shù)據(jù)變更日志的讀取順序,輸出至BOSS系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理方法的流程圖;圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)同步處理方法的流程圖;圖3為本發(fā)明實(shí)施例中緩存列表對存儲的各SQL語句的輸出進(jìn)行控制的示意圖;圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理設(shè)備的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)同步處理設(shè)備的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理方法的流程圖,如圖1所示,本實(shí)施例的方法包括如下步驟步驟100,依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;隨著CRM系統(tǒng)與BOSS系統(tǒng)的解耦的勢在必行,CRM系統(tǒng)中存儲的用戶數(shù)據(jù)的變更軌跡,必須嚴(yán)格按照原變更順序及變更方式同步到BOSS系統(tǒng)中。在CRM系統(tǒng)管理了大量的用戶資料數(shù)據(jù),而對于每個(gè)用戶資料的每次變更,例如數(shù)據(jù)的插入、修改、刪除及變更字段等,CRM系統(tǒng)均會采用觸發(fā)器或其他技術(shù)手段將該變更軌跡以數(shù)據(jù)變更日志的方式記錄到 CRM數(shù)據(jù)庫中。本實(shí)施例中,為了實(shí)現(xiàn)CRM系統(tǒng)與BOSS系統(tǒng)間的用戶數(shù)據(jù)變更軌跡的同步,設(shè)置在CRM-BOSS同步接口的數(shù)據(jù)同步設(shè)備中的數(shù)據(jù)讀取模塊將從CRM數(shù)據(jù)庫中順序讀取出各數(shù)據(jù)變更日志,并將讀取出的多條數(shù)據(jù)變更日志依序存儲至輸入隊(duì)列中。該輸入隊(duì)列具有預(yù)設(shè)大小的存儲容量,能夠存儲一定長度的數(shù)據(jù)變更日志。步驟101,同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條 SQL語句;數(shù)據(jù)讀取模塊依序?qū)腃RM數(shù)據(jù)庫中讀取出的多條數(shù)據(jù)變更日志輸入至輸入隊(duì)列之后,數(shù)據(jù)同步設(shè)備中的分析處理模塊將對輸入隊(duì)列中的各數(shù)據(jù)變更日志進(jìn)行分析處理,以根據(jù)數(shù)據(jù)變更日志中的數(shù)據(jù)變更信息生成對應(yīng)的SQL語句。在本實(shí)施例中,數(shù)據(jù)同步設(shè)備對各數(shù)據(jù)變更日志進(jìn)行的分析處理采取并行處理的方式,即在本實(shí)施例中,分析處理模塊采用多個(gè)分析處理子進(jìn)程,同時(shí)對輸入隊(duì)列中的各數(shù)據(jù)變更日志進(jìn)行分析處理,以同時(shí)生成對應(yīng)的SQL語句,從而提高系統(tǒng)的整體處理速度。步驟102,按照數(shù)據(jù)變更日志的讀取順序,依序?qū)⑸傻亩鄺lSQL語句輸出至BOSS 數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。在根據(jù)各數(shù)據(jù)變更日志生成了對應(yīng)的SQL語句之后,數(shù)據(jù)同步設(shè)備并不立即將生成的SQL語句輸出至BOSS系統(tǒng)中。由于在CRM系統(tǒng)中,各個(gè)用戶數(shù)據(jù)的變更都是存在一定的時(shí)間順序的,該時(shí)間順序決定了 CRM系統(tǒng)中存儲的所有數(shù)據(jù)變更日志都是按照其生成順序排列在CRM數(shù)據(jù)庫中的,因此為了保證BOSS系統(tǒng)中存儲的用戶的數(shù)據(jù)資料與CRM系統(tǒng)中保存的數(shù)據(jù)資料保持同步,不發(fā)生任何錯(cuò)誤,對于數(shù)據(jù)同步設(shè)備而言,必須嚴(yán)格按照數(shù)據(jù)變更日志在CRM數(shù)據(jù)庫中的排列順序,將對應(yīng)的SQL語句輸出至BOSS系統(tǒng)的數(shù)據(jù)庫中,以使 BOSS系統(tǒng)按照SQL語句的入庫順序,依序執(zhí)行每條SQL語句,從而依序執(zhí)行與CRM系統(tǒng)中同樣的數(shù)據(jù)變更操作。因此在本步驟中,數(shù)據(jù)同步設(shè)備在依據(jù)各數(shù)據(jù)變更日志生成了對應(yīng)的SQL語句之后,將按照上述步驟100中對數(shù)據(jù)變更日志的讀取順序,依序?qū)⑸傻膶?yīng)的多條SQL語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)能夠依序地執(zhí)行每條SQL語句。由于在上述步驟100 中,數(shù)據(jù)讀取模塊從CRM數(shù)據(jù)庫中對各數(shù)據(jù)變更日志的讀取是依序進(jìn)行的,即是按照CRM數(shù)據(jù)庫的排列順序依次讀取的,因此在本步驟中,依照數(shù)據(jù)變更日志的讀取順序?qū)?yīng)的SQL 語句輸出至BOSS系統(tǒng)中,能夠保證BOSS系統(tǒng)與CRM系統(tǒng)之間的數(shù)據(jù)同步。本實(shí)施例的數(shù)據(jù)同步處理方法,通過在從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各SQL語句按照對應(yīng)的數(shù)據(jù)變更日志的讀取順序,輸出至BOSS 系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)同步處理方法的流程圖,如圖2所示,本實(shí)施例的方法包括如下步驟步驟200,依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;步驟201,按照數(shù)據(jù)變更日志的讀取順序,為輸入隊(duì)列中的每條數(shù)據(jù)變更日志對應(yīng)設(shè)置連續(xù)的序號標(biāo)識;在本實(shí)施例中,當(dāng)設(shè)置在CRM系統(tǒng)和BOSS系統(tǒng)同步接口之間的數(shù)據(jù)同步設(shè)備依序從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志,并將其緩存至輸入隊(duì)列中之后,還將按照數(shù)據(jù)變更日志的讀取順序,即按照數(shù)據(jù)變更日志在CRM數(shù)據(jù)庫中的生成順序,為輸入隊(duì)列中每條數(shù)據(jù)變更日志對應(yīng)設(shè)置一連續(xù)的序號標(biāo)識。具體地,該序號標(biāo)識可以從0開始,依次加 1,各序號標(biāo)識標(biāo)記了各條數(shù)據(jù)變更日志在CRM系統(tǒng)產(chǎn)生的先后順序,而為每一條數(shù)據(jù)變更日志對應(yīng)設(shè)置序號標(biāo)識的目的在于使數(shù)據(jù)同步設(shè)備在之后對各數(shù)據(jù)變更日志進(jìn)行分析處理,以及進(jìn)行將分析處理后的SQL語句輸出至BOSS數(shù)據(jù)庫中,能夠根據(jù)該序號標(biāo)識控制對應(yīng)的每條SQL語句的入庫先后順序。步驟202,同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的攜帶有序號標(biāo)識的多條SQL語句;在將各數(shù)據(jù)變更日志寫入至輸入隊(duì)列中,以及為輸入隊(duì)列中的各數(shù)據(jù)變更日志對應(yīng)設(shè)置了連續(xù)的序號標(biāo)識后,數(shù)據(jù)同步設(shè)備中的分析處理模塊將對輸入隊(duì)列中的各數(shù)據(jù)變更日志進(jìn)行分析處理,以生成對應(yīng)的SQL語句。在本實(shí)施例中,分析處理模塊中加載了多個(gè)并行的分析處理子進(jìn)程,在對各數(shù)據(jù)變更日志進(jìn)行分析處理的過程中,各分析處理子進(jìn)程將同時(shí)從輸入隊(duì)列中依序提取出對應(yīng)數(shù)目的數(shù)據(jù)變更日志,并同時(shí)對各數(shù)據(jù)變更日志進(jìn)行分析處理操作,以同時(shí)生成對應(yīng)數(shù)目的多條SQL語句。具體地,由于在本實(shí)施例的上述步驟201中,數(shù)據(jù)同步設(shè)備為讀取至輸入隊(duì)列中的各數(shù)據(jù)變更日志對應(yīng)設(shè)置了連續(xù)的序號標(biāo)識,而在本步驟的分析處理過程,對各數(shù)據(jù)變更日志中的序號標(biāo)識并沒有進(jìn)行實(shí)質(zhì)的分析處理,因此,生成的SQL語句中將同樣攜帶對應(yīng)的該序號標(biāo)識,用于標(biāo)識每條SQL語句對應(yīng)的數(shù)據(jù)變更在CRM系統(tǒng)中的產(chǎn)生順序。此外需要說明的是,在本步驟中,分析處理模塊中加載的分析處理子進(jìn)程的數(shù)目并不需要與輸入隊(duì)列的預(yù)設(shè)存儲容量能夠存儲的數(shù)據(jù)變更日志的數(shù)目一致,而且在實(shí)際應(yīng)用中,將輸入隊(duì)列能夠存儲的最大數(shù)據(jù)變更日志的數(shù)目設(shè)置為大于分析處理子進(jìn)程的總數(shù)目為較優(yōu)的實(shí)現(xiàn)方式。而這樣設(shè)置的目的在于分析處理模塊的各分析處理子進(jìn)程在每次從輸入隊(duì)列提取數(shù)據(jù)變更日志以進(jìn)行分析處理時(shí),都可以使每個(gè)分析處理子進(jìn)程得到充分的利用,而且在每次分析處理模塊根據(jù)提取出的各數(shù)據(jù)變更日志生成了對應(yīng)的SQL語句之后,數(shù)據(jù)讀取模塊無需等待下次分析處理過程的進(jìn)行,而是可以再一次從CRM數(shù)據(jù)庫中依序讀取相應(yīng)數(shù)目的數(shù)據(jù)變更日志至輸入隊(duì)列中,即數(shù)據(jù)提取和分析處理是兩個(gè)異步的過程。這樣,在本實(shí)施例的數(shù)據(jù)同步處理方法中,對數(shù)據(jù)變更日志的分析處理和對數(shù)據(jù)變更日志從CRM數(shù)據(jù)庫中的讀取可以同時(shí)進(jìn)行,而且對于每個(gè)分析處理子進(jìn)程而言,其分析處理完一條數(shù)據(jù)變更日志后,可以接著從輸入隊(duì)列中提取下一條數(shù)據(jù)變更日志進(jìn)行分析處理,同樣無需其余并列的分析處理子進(jìn)程的處理完成。由于實(shí)際應(yīng)用中,通常數(shù)據(jù)變更日志讀取的速度遠(yuǎn)快于對數(shù)據(jù)變更日志的分析處理速度,因此在每個(gè)分析處理子進(jìn)程處理完一條數(shù)據(jù)變更日志后,無需等待輸入隊(duì)列對數(shù)據(jù)變更日志的讀取時(shí)間,而是可以直接地再次依序從輸入隊(duì)列中進(jìn)行日志的提取和分析處理,從而節(jié)省了數(shù)據(jù)讀取的等待時(shí)間,從整體上加快了處理速度。步驟203,按照SQL語句的序號標(biāo)識,將生成的每條SQL語句對應(yīng)寫入至緩存列表的對應(yīng)序號的每個(gè)存儲單元中,以使緩存列表中存儲SQL語句的順序與SQL語句的序號標(biāo)識的排列順序一致;
當(dāng)分析處理模塊對多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成了對應(yīng)的多條SQL語句后,由于在本實(shí)施例中,各分析處理子進(jìn)程對各數(shù)據(jù)變更日志的分析處理速度并不一致,即各SQL語句的生成存在先后順序,而若直接按照SQL語句的產(chǎn)生順序?qū)⒏鱏QL語句輸出至 BOSS數(shù)據(jù)庫中,將導(dǎo)致BOSS系統(tǒng)中的用戶數(shù)據(jù)與CRM系統(tǒng)中的數(shù)據(jù)存在偏差。因此,在本實(shí)施例中,為了保證能夠?qū)QL語句能夠按照各對應(yīng)的數(shù)據(jù)變更日志在CRM系統(tǒng)中產(chǎn)生時(shí)間的先后順序,依序輸出至BOSS數(shù)據(jù)庫中,數(shù)據(jù)同步設(shè)備還將進(jìn)行一系列特殊的排序處理,以保證BOSS系統(tǒng)與CRM系統(tǒng)之間的數(shù)據(jù)同步。具體地,在本實(shí)施例中,設(shè)置了一個(gè)用于對分析處理模塊生成的SQL語句進(jìn)行緩存管理的緩存列表,該緩存列表具有一定的存儲容量,且設(shè)置有一定數(shù)目的存儲單元,每個(gè)存儲單元用于存儲一條SQL語句。對于每個(gè)分析處理子進(jìn)程而言,當(dāng)該分析處理子進(jìn)程生成了一條SQL語句后,將按照生成的該SQL語句中攜帶的序號標(biāo)識,將該SQL語句寫入至緩存列表的對應(yīng)序號的每個(gè)存儲單元中,且SQL語句寫入至緩存列表中之后,各SQL語句在緩存列表中的排列順序應(yīng)當(dāng)滿足與SQL語句的序號標(biāo)識的排列順序保持一致。優(yōu)化地,在本實(shí)施例中,本步驟對SQL語句在緩存列表的各存儲單元的寫入還可以包括如下子步驟步驟2030,計(jì)算各SQL語句的序號標(biāo)識與已輸出至BOSS數(shù)據(jù)庫的SQL語句的數(shù)目的差值;步驟2031,判斷上述差值是否小于等于緩存列表的預(yù)設(shè)長度L,若是則執(zhí)行步驟 2032,若否則執(zhí)行步驟2034 ;在本實(shí)施例中,對于分析處理模塊輸出的每一條SQL語句在緩存列表中的緩存位置,可以通過計(jì)算每條SQL語句在緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針?biāo)赶虻漠?dāng)前存儲單元的偏移量而得到。具體地,在本實(shí)施例中,用于緩存SQL語句的緩存列表具體為一環(huán)形隊(duì)列,每次將SQL語句寫入至緩存列表的位置均可以根據(jù)當(dāng)前指針指向的當(dāng)前存儲單元的序號、以及該SQL語句對應(yīng)的存儲單元相對當(dāng)前存儲單元的偏移量決定。但是由于緩存列表中預(yù)設(shè)的存儲單元的個(gè)數(shù)有限,即緩存列表能夠容置SQL語句的條數(shù)有限,因此, 若直接將分析處理后生成的所有SQL語句均寫入至緩存列表中,有可能造成前一 SQL語句還未輸出至BOSS數(shù)據(jù)庫中,便被后一 SQL語句覆蓋,而導(dǎo)致最終BOSS數(shù)據(jù)庫的數(shù)據(jù)發(fā)生錯(cuò)誤。于是,為了避免發(fā)生上述錯(cuò)誤,本實(shí)施例中,在計(jì)算各SQL語句在緩存列表中對應(yīng)存儲單元的序號,并將SQL語句寫入至緩存列表之前,數(shù)據(jù)同步處理裝置將計(jì)算生成的各 SQL語句的序號標(biāo)識與當(dāng)前已輸出至BOSS數(shù)據(jù)庫中的SQL語句總數(shù)目之間的差值。計(jì)算該差值的目的在于,將該差值與緩存列表的預(yù)設(shè)長度進(jìn)行比較,以判別是否應(yīng)當(dāng)將生成的SQL 語句寫入至緩存列表中,還是應(yīng)當(dāng)?shù)却彺媪斜碇袑?yīng)存儲單元中的SQL語句輸出至BOSS 數(shù)據(jù)庫中后,再將生成的該SQL語句寫入至緩存列表中。步驟2032,按照公式Mi = MOD (i_Mall,L),計(jì)算每條SQL語句在緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針的偏移量;具體地,設(shè)Ni為第i條SQL語句的序號標(biāo)識,Mall為當(dāng)前已輸出至BOSS數(shù)據(jù)庫的 SQL語句的總數(shù)目,若SQL語句的序號標(biāo)識與當(dāng)前已輸出至BOSS數(shù)據(jù)庫中的SQL語句總數(shù)目之間的差值Ni-Mall小于緩存列表的預(yù)設(shè)長度L,代表該SQL語句在緩存列表中對應(yīng)存儲單元中存儲的前一條SQL語句已經(jīng)被輸出至BOSS數(shù)據(jù)庫中,即代表數(shù)據(jù)同步設(shè)備可以將該 SQL語句寫入至緩存列表中。于是,數(shù)據(jù)同步設(shè)備根據(jù)該SQL語句的序號標(biāo)識Ni與Mall之間的差值,計(jì)算該SQL語句在緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針的偏移量。具體地,每個(gè)SQL語句在緩存列表中對應(yīng)的存儲單元序號與當(dāng)前指針指向的當(dāng)前存儲單元的序號之間的偏移量可以根據(jù)公式Mi =M0D(Ni-Mall,L)計(jì)算得到。該公式中,Mi 為第i條SQL語句對應(yīng)的存儲單元相對當(dāng)前指針的偏移量,Ni為第i條SQL語句的序號標(biāo)識,L為緩存列表的總長度,Mall為則當(dāng)前已輸出至BOSS數(shù)據(jù)庫的SQL語句的總數(shù)目。舉例說明,圖3為本發(fā)明實(shí)施例中緩存列表對存儲的各SQL語句的輸出進(jìn)行控制的示意圖。如圖3所示,假設(shè)在本實(shí)施例中緩存列表的長度L為16,對應(yīng)設(shè)置有16個(gè)存儲單元,在初始狀態(tài),已輸出至BOSS數(shù)據(jù)庫的SQL語句的總數(shù)目Mall為0,若需要往緩存列表中寫入序號標(biāo)識為4的SQL語句,則根據(jù)上述公式可以計(jì)算得到M4 = MOD (4-0,16) = 4,即序號標(biāo)識為4的SQL語句應(yīng)當(dāng)寫入至相對當(dāng)前指針的偏移量為4的存儲單元中。步驟2033,將SQL語句寫入至緩存列表中從當(dāng)前指針指向的存儲單元開始,向后偏移對應(yīng)的偏移量個(gè)數(shù)目的存儲單元中,并執(zhí)行步驟204 ;計(jì)算了每個(gè)分析處理子進(jìn)程生成的SQL語句后,數(shù)據(jù)同步設(shè)備將根據(jù)當(dāng)前指針, 以及根據(jù)計(jì)算得到的每個(gè)SQL語句對應(yīng)的偏移量,將每個(gè)SQL語句寫入至緩存列表的從當(dāng)前指針指向的當(dāng)前存儲單元開始,向后偏移對應(yīng)的偏移量個(gè)數(shù)目的存儲單元的存儲單元中,并繼續(xù)執(zhí)行步驟204。步驟2034,進(jìn)入等待狀態(tài),以等待緩存列表中新的SQL語句的輸出;而若在上述步驟2031中,SQL語句的序號標(biāo)識與當(dāng)前已輸出至BOSS數(shù)據(jù)庫中的 SQL語句總數(shù)目之間的差值Ni-Mall大于緩存列表的預(yù)設(shè)長度L,代表該SQL語句在緩存列表中對應(yīng)存儲單元中存儲的前一條SQL語句還未被輸出至BOSS數(shù)據(jù)庫中,即代表數(shù)據(jù)同步設(shè)備此時(shí)暫不能將該SQL語句寫入至緩存列表中。于是,數(shù)據(jù)同步設(shè)備將該SQL語句寫入進(jìn)程則將進(jìn)入等待的狀態(tài),等待緩存列表中空間足夠時(shí)再將新的SQL語句寫入。步驟204,當(dāng)緩存列表中存在序號標(biāo)識連續(xù)SQL語句時(shí),依序?qū)⑿蛱枠?biāo)識連續(xù)的至少一條SQL語句依序輸出至BOSS數(shù)據(jù)庫中;而由于分析處理模塊中,各分析處理子進(jìn)程的處理速度并不一致,因此可能出現(xiàn)序號標(biāo)識在前的數(shù)據(jù)變更日志還未對應(yīng)生成SQL語句時(shí),序號標(biāo)識在后的數(shù)據(jù)變更日志便已經(jīng)分析處理完成,生成了序號標(biāo)識在后的SQL語句,因此此時(shí)緩存列表中寫入的SQL語句將出現(xiàn)如圖3B所示的情形。如圖3B所示,序號標(biāo)識為1、3、4的SQL語句預(yù)先生成,被寫入緩存列表中,但此時(shí)序號標(biāo)識為0、2的SQL語句還未生成,對于此種情形,數(shù)據(jù)同步設(shè)備并不將序號標(biāo)識為1、3、4的SQL語句輸出,而是等待序號標(biāo)識為0和2的SQL語句的寫入,再依序?qū)⑿蛱枠?biāo)識為0-5的SQL語句,從而可以保證輸出至BOSS數(shù)據(jù)庫中的SQL語句的順序。因此在本實(shí)施例中,緩存列表在輸出SQL語句至BOSS數(shù)據(jù)庫中之前,將對其緩存的所有SQL語句進(jìn)行檢測,只有在檢測到其中存在了序號標(biāo)識連續(xù)SQL語句時(shí),才依序?qū)⒃撔蛱枠?biāo)識連續(xù)的各SQL語句輸出。如此一來,可以保證了輸出至BOSS數(shù)據(jù)庫中的SQL語句都是按照其對應(yīng)的數(shù)據(jù)變更日志在CRM系統(tǒng)的變更順序執(zhí)行的,從而保證了 BOSS數(shù)據(jù)庫中的用戶數(shù)據(jù)與CRM數(shù)據(jù)庫中的用戶數(shù)據(jù)是同步的,不會出現(xiàn)任何差錯(cuò)。步驟205,根據(jù)輸出至BOSS數(shù)據(jù)庫的SQL語句的當(dāng)前數(shù)目M,將當(dāng)前指針向后偏移M個(gè)存儲單元,并將輸出至BOSS數(shù)據(jù)庫的SQL語句的總數(shù)目Mall更新為Mall+M,并返回至步驟2030中。而在輸出了一組SQL語句至BOSS數(shù)據(jù)庫之后,為了使保證寫入至緩存列表中的 SQL語句的有序性及準(zhǔn)確性,數(shù)據(jù)同步設(shè)備將根據(jù)輸出至BOSS數(shù)據(jù)庫的SQL語句的數(shù)目, 對緩存列表的當(dāng)前指針?biāo)赶虻漠?dāng)前存儲單元進(jìn)行更新,并返回至上述步驟203中的按照各SQL語句的序號標(biāo)識,將生成的各SQL語句對應(yīng)寫入至緩存列表的對應(yīng)序號的每個(gè)存儲單元中的步驟。具體地,由于緩存列表為一環(huán)形的存儲隊(duì)列,因此數(shù)據(jù)同步設(shè)備將當(dāng)前指針循環(huán)向后跳轉(zhuǎn)數(shù)目為M個(gè)的存儲單元,M為此次輸出至BOSS數(shù)據(jù)庫的SQL語句。此時(shí),輸出至 BOSS數(shù)據(jù)庫的SQL語句的總數(shù)目Mall被更新為Mall+M,其中,M為輸出至BOSS數(shù)據(jù)庫的SQL 語句的當(dāng)前數(shù)目。如圖3D所示,若將序號標(biāo)識為0-4的SQL語句輸出至BOSS數(shù)據(jù)庫之后, 當(dāng)前指針向后偏移了 5個(gè)存儲單元的位置,指向了緩存列表的第5個(gè)存儲單元,而其此時(shí)輸出至BOSS數(shù)據(jù)庫的SQL語句的總數(shù)目Mall更新為5。從而數(shù)據(jù)同步設(shè)備可以根據(jù)新的Mall 值,對上次生成的還未寫入至緩存列表中的SQL語句,以及新生成的SQL語句的序號標(biāo)識進(jìn)行判斷,以根據(jù)判斷結(jié)果,再次向緩存列表中寫入新的SQL語句。此外還需要說明的是,在本實(shí)施例中,當(dāng)緩存列表依序?qū)⒋鎯Φ倪B續(xù)序號標(biāo)識的 SQL語句輸出至BOSS數(shù)據(jù)庫時(shí),可以先將各SQL語句輸出至一輸出列表中,例如如圖3所示,可以將0-4的SQL語句寫入至輸出列表進(jìn)行暫時(shí)存儲,然后再依序?qū)⑤敵隽斜碇械腟QL 語句輸出至BOSS數(shù)據(jù)庫中,從而進(jìn)一步地提高了處理的速度。本實(shí)施例的數(shù)據(jù)同步處理方法,通過在從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,為各數(shù)據(jù)變更日志設(shè)置對應(yīng)的序號標(biāo)識,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各SQL語句按照對應(yīng)的序號標(biāo)識,有序地輸出至BOSS系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理設(shè)備的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例的數(shù)據(jù)同步處理設(shè)備包括數(shù)據(jù)讀取模塊11、分析處理模塊12和數(shù)據(jù)輸出模塊13。其中數(shù)據(jù)讀取模塊11用于依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;分析處理模塊12用于同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL 語句;數(shù)據(jù)輸出模塊13用于按照數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的多條SQL語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條述SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。其中,本實(shí)施例所涉及的所有功能模塊、以及其所涉及的具體工作過程,可以參考上述數(shù)據(jù)同步處理方法所涉及的實(shí)施例揭露的相關(guān)內(nèi)容,在此不再贅述。本實(shí)施例的數(shù)據(jù)同步處理設(shè)備,通過在從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各SQL語句按照對應(yīng)的數(shù)據(jù)變更日志的讀取順序,輸出至BOSS 系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。圖5為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)同步處理設(shè)備的結(jié)構(gòu)示意圖,如圖5所示, 在上一實(shí)施例的技術(shù)方案的基礎(chǔ)上,本實(shí)施例的數(shù)據(jù)同步處理設(shè)備還包括序號標(biāo)識設(shè)置模塊14,用于在數(shù)據(jù)讀取模塊11依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中之后,按照數(shù)據(jù)變更日志的讀取順序,為輸入隊(duì)列中的每條數(shù)據(jù)變更日志對應(yīng)設(shè)置連續(xù)的序號標(biāo)識。而分析處理模塊12具體用于同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的攜帶有序號標(biāo)識的多條SQL語句。進(jìn)一步地,本實(shí)施例中的數(shù)據(jù)輸出模塊13還可以包括語句寫入模塊131和輸出模塊132。其中,語句寫入模塊131用于按照SQL語句的序號標(biāo)識,將生成的每條SQL語句對應(yīng)寫入至緩存列表的對應(yīng)序號的每個(gè)存儲單元中,以使緩存列表中存儲SQL語句的順序與 SQL語句的序號標(biāo)識的排列順序一致;而輸出模塊132則用于當(dāng)緩存列表中存在序號標(biāo)識連續(xù)SQL語句時(shí),將序號標(biāo)識連續(xù)的至少一條SQL語句依序輸出至BOSS數(shù)據(jù)庫中。更進(jìn)一步地,本實(shí)施例中的語句寫入模塊131還可以包括計(jì)算子模塊1311和寫入子模塊1312。其中計(jì)算子模塊1311用于若SQL語句的序號標(biāo)識與當(dāng)前已輸出至BOSS數(shù)據(jù)庫的SQL語句的數(shù)目的差值小于緩存列表的預(yù)設(shè)長度時(shí),按照公式Mi = MOD (Ni-Mall,L),計(jì)算SQL語句在緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針指向的當(dāng)前存儲單元的偏移量, 其中,Ni為第i條SQL語句的序號標(biāo)識,Mi為序號標(biāo)識為i的SQL語句在緩存列表中對應(yīng)的存儲單元相對于當(dāng)前存儲單元的偏移量,L為緩存列表的預(yù)設(shè)長度,Mall為當(dāng)前已輸出至 BOSS數(shù)據(jù)庫的SQL語句的數(shù)目。寫入子模塊1312用于將SQL語句寫入至緩存列表中從當(dāng)前指針指向的存儲單元開始,向后偏移對應(yīng)的偏移量個(gè)數(shù)目的存儲單元的存儲單元中。此外,本實(shí)施例的數(shù)據(jù)同步設(shè)備還包括更新模塊15,用于在輸出模塊132將序號標(biāo)識連續(xù)的至少一條SQL語句依序輸出至BOSS數(shù)據(jù)庫中之后,據(jù)輸出至BOSS數(shù)據(jù)庫中的 SQL語句的當(dāng)前數(shù)目M,將當(dāng)前指針向后偏移M個(gè)存儲單元,并將當(dāng)前輸出至BOSS數(shù)據(jù)庫的 SQL語句的數(shù)目更新為Mall+M,并返回至語句寫入模塊131執(zhí)行按照SQL語句的序號標(biāo)識, 將生成的每條SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中的步驟。更進(jìn)一步地,本實(shí)施例中的數(shù)據(jù)讀取模塊11還可以用于,在分析處理模塊12同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL語句之后,重復(fù)執(zhí)行依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中的步驟,以覆蓋輸入隊(duì)列中已完成分析處理的數(shù)據(jù)變更日志。其中,本實(shí)施例所涉及的所有功能模塊、以及其所涉及的具體工作過程,同樣可以參考上述數(shù)據(jù)同步處理方法所涉及的實(shí)施例揭露的相關(guān)內(nèi)容,在此不再贅述。本實(shí)施例的數(shù)據(jù)同步處理設(shè)備,通過在從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,為各數(shù)據(jù)變更日志設(shè)置對應(yīng)的序號標(biāo)識,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各SQL語句按照對應(yīng)的序號標(biāo)識,有序地輸出至BOSS系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。圖6為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)同步處理系統(tǒng)的結(jié)構(gòu)示意圖。如圖6所示, 本實(shí)施例的數(shù)據(jù)同步處理系統(tǒng)包括上述的數(shù)據(jù)同步處理設(shè)備1,以及分別與數(shù)據(jù)同步處理設(shè)備1連接的CRM數(shù)據(jù)庫2和BOSS數(shù)據(jù)庫3。具體地,本實(shí)施例所涉及的所有功能模塊、以及其所涉及的具體工作過程,可以參考上述數(shù)據(jù)同步處理方法以及數(shù)據(jù)同步處理設(shè)備所涉及的實(shí)施例揭露的相關(guān)內(nèi)容,在此不再贅述。本實(shí)施例的數(shù)據(jù)同步處理系統(tǒng),通過在數(shù)據(jù)同步處理設(shè)備從CRM數(shù)據(jù)庫中讀取出多條數(shù)據(jù)變更日志之后,為各數(shù)據(jù)變更日志設(shè)置對應(yīng)的序號標(biāo)識,對讀取出的數(shù)據(jù)變更日志進(jìn)行并行處理,同時(shí)生成對應(yīng)的多條SQL語句,而在生成了多條SQL語句后,將生成的各 SQL語句按照對應(yīng)的序號標(biāo)識,有序地輸出至BOSS系統(tǒng)數(shù)據(jù)庫中,從而在保證了 CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了 CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了 CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)同步處理方法,其特征在于,包括依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL 語句;按照所述數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的所述多條SQL語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條所述SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)同步處理方法,其特征在于所述依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中之后,所述方法還包括按照所述數(shù)據(jù)變更日志的讀取順序,為所述輸入隊(duì)列中的每條所述數(shù)據(jù)變更日志對應(yīng)設(shè)置連續(xù)的序號標(biāo)識;所述同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條 SQL語句包括同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的攜帶有所述序號標(biāo)識的多條SQL語句。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)同步處理方法,其特征在于,所述按照所述數(shù)據(jù)變更日志的讀取順序,依序?qū)⑸傻亩鄺l所述SQL語句輸出至BOSS數(shù)據(jù)庫中包括按照所述SQL語句的所述序號標(biāo)識,將生成的每條所述SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中,以使所述緩存列表中存儲所述SQL語句的順序與所述SQL語句的序號標(biāo)識的排列順序一致,所述緩存列表為一環(huán)形存儲隊(duì)列;當(dāng)所述緩存列表中存在所述序號標(biāo)識連續(xù)SQL語句時(shí),將所述序號標(biāo)識連續(xù)的至少一條SQL語句依序輸出至所述BOSS數(shù)據(jù)庫中。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)同步處理方法,其特征在于所述按照所述SQL語句的所述序號標(biāo)識,將生成的每條所述SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中包括若所述SQL語句的序號標(biāo)識與當(dāng)前已輸出至所述BOSS數(shù)據(jù)庫的SQL語句的數(shù)目的差值小于所述緩存列表的預(yù)設(shè)長度,按照公式Mi = MOD (Ni-Mall,L),計(jì)算所述SQL語句在所述緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針指向的當(dāng)前存儲單元的偏移量,其中,Ni為第i 條SQL語句的序號標(biāo)識,Mi為序號標(biāo)識為i的SQL語句在所述緩存列表中對應(yīng)的存儲單元相對于所述當(dāng)前存儲單元的偏移量,L為所述緩存列表的預(yù)設(shè)長度,Mall為所述當(dāng)前已輸出至所述BOSS數(shù)據(jù)庫的SQL語句的數(shù)目;將生成的所述SQL語句寫入至所述緩存列表中從所述當(dāng)前存儲單元開始,向后偏移對應(yīng)的偏移量個(gè)數(shù)目的存儲單元的存儲單元中;所述將所述序號標(biāo)識連續(xù)的至少一條SQL語句依序輸出至所述BOSS數(shù)據(jù)庫中之后,所述方法還包括根據(jù)輸出至所述BOSS數(shù)據(jù)庫中的SQL語句的當(dāng)前數(shù)目M,將所述當(dāng)前指針向后偏移M 個(gè)存儲單元,并將所述當(dāng)前輸出至所述BOSS數(shù)據(jù)庫的SQL語句的數(shù)目更新為M。ff+M,并返回至所述按照所述SQL語句的所述序號標(biāo)識,將生成的每條所述SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中的步驟。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)同步處理方法,其特征在于,所述同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL語句之后,所述方法還包括返回至依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中的步驟,以覆蓋所述輸入隊(duì)列中已完成分析處理的所述數(shù)據(jù)變更日志。
6.一種數(shù)據(jù)同步處理設(shè)備,其特征在于,包括數(shù)據(jù)讀取模塊,用于依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中; 分析處理模塊,用于同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理, 生成對應(yīng)的多條SQL語句;數(shù)據(jù)輸出模塊,用于按照所述數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的所述多條SQL 語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條所述SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)同步處理設(shè)備,其特征在于所述設(shè)備還包括序號標(biāo)識設(shè)置模塊,用于在所述數(shù)據(jù)讀取模塊依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中之后,按照所述數(shù)據(jù)變更日志的讀取順序,為所述輸入隊(duì)列中的每條所述數(shù)據(jù)變更日志對應(yīng)設(shè)置連續(xù)的序號標(biāo)識;所述分析處理模塊具體用于同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的攜帶有所述序號標(biāo)識的多條SQL語句。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)同步處理設(shè)備,其特征在于,所述數(shù)據(jù)輸出模塊包括 語句寫入模塊,用于按照所述SQL語句的所述序號標(biāo)識,將生成的每條所述SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中,以使所述緩存列表中存儲所述SQL語句的順序與所述SQL語句的序號標(biāo)識的排列順序一致,所述緩存列表為一環(huán)形存儲隊(duì)列;輸出模塊,用于當(dāng)所述緩存列表中存在所述序號標(biāo)識連續(xù)SQL語句時(shí),將所述序號標(biāo)識連續(xù)的至少一條SQL語句依序輸出至BOSS數(shù)據(jù)庫中。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)同步處理設(shè)備,其特征在于 所述語句寫入模塊還包括計(jì)算子模塊和寫入子模塊;所述計(jì)算子模塊用于若所述SQL語句的序號標(biāo)識與當(dāng)前已輸出至所述BOSS數(shù)據(jù)庫的 SQL語句的數(shù)目的差值小于所述緩存列表的預(yù)設(shè)長度,按照公式Mi = MOD (Ni-Mall,L),計(jì)算所述SQL語句在所述緩存列表中對應(yīng)的存儲單元相對于當(dāng)前指針指向的當(dāng)前存儲單元的偏移量,其中,Ni為第i條SQL語句的序號標(biāo)識,Mi為序號標(biāo)識為i的SQL語句在所述緩存列表中對應(yīng)的存儲單元相對于所述當(dāng)前存儲單元的偏移量,L為所述緩存列表的預(yù)設(shè)長度, Mall為所述當(dāng)前已輸出至所述BOSS數(shù)據(jù)庫的SQL語句的數(shù)目;所述寫入子模塊用于將生成的所述SQL語句寫入至所述緩存列表中從所述當(dāng)前存儲單元開始,向后偏移對應(yīng)的偏移量個(gè)數(shù)目的存儲單元的存儲單元中;所述設(shè)備還包括更新模塊,用于在所述輸出模塊將所述序號標(biāo)識連續(xù)的至少一條SQL 語句依序輸出至所述BOSS數(shù)據(jù)庫中之后,根據(jù)輸出至所述BOSS數(shù)據(jù)庫中的SQL語句的當(dāng)前數(shù)目M,將所述當(dāng)前指針向后偏移M個(gè)存儲單元,并將所述當(dāng)前輸出至所述BOSS數(shù)據(jù)庫的SQL語句的數(shù)目更新為M。ff+M,并返回至所述語句寫入模塊執(zhí)行所述按照所述SQL語句的所述序號標(biāo)識,將生成的每條所述SQL語句寫入至緩存列表的對應(yīng)的每個(gè)存儲單元中的步馬聚ο
10.根據(jù)權(quán)利要求6所述的數(shù)據(jù)同步處理設(shè)備,其特征在于,所述數(shù)據(jù)讀取模塊還用于,在所述分析處理模塊同時(shí)對所述輸入隊(duì)列中的多條所述數(shù)據(jù)變更日志進(jìn)行分析處理, 生成對應(yīng)的多條SQL語句之后,重復(fù)執(zhí)行依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中的步驟,以覆蓋所述輸入隊(duì)列中已完成分析處理的所述數(shù)據(jù)變更日志。
11. 一種數(shù)據(jù)同步處理系統(tǒng),其特征在于,包括如權(quán)利要求6-10任一所述的數(shù)據(jù)同步處理設(shè)備,以及分別與所述數(shù)據(jù)同步處理設(shè)備連接的CRM數(shù)據(jù)庫和BOSS數(shù)據(jù)庫。
全文摘要
本發(fā)明提供一種數(shù)據(jù)同步處理方法、設(shè)備及系統(tǒng),方法包括依序從CRM數(shù)據(jù)庫中讀取多條數(shù)據(jù)變更日志至輸入隊(duì)列中;同時(shí)對輸入隊(duì)列中的多條數(shù)據(jù)變更日志進(jìn)行分析處理,生成對應(yīng)的多條SQL語句;按照數(shù)據(jù)變更日志的讀取順序,依序?qū)?yīng)的多條SQL語句輸出至BOSS數(shù)據(jù)庫中,以使BOSS系統(tǒng)依序執(zhí)行每條SQL語句,實(shí)現(xiàn)與CRM系統(tǒng)的數(shù)據(jù)同步。本發(fā)明實(shí)施例在保證了CRM系統(tǒng)與BOSS系統(tǒng)的數(shù)據(jù)更改順序一致的前提下,大大縮短了CRM-BOSS系統(tǒng)間數(shù)據(jù)同步處理的時(shí)間,提高了數(shù)據(jù)同步處理的速度,降低了CRM數(shù)據(jù)庫的緩存負(fù)擔(dān)。
文檔編號G06F17/30GK102222071SQ20101015010
公開日2011年10月19日 申請日期2010年4月16日 優(yōu)先權(quán)日2010年4月16日
發(fā)明者李玉華 申請人:華為技術(shù)有限公司