本發(fā)明實(shí)施例涉及通信領(lǐng)域,尤其涉及一種遠(yuǎn)程數(shù)據(jù)同步的方法和裝置。
背景技術(shù):
隨著社會(huì)的發(fā)展和科技的進(jìn)步,用戶越來(lái)越依賴網(wǎng)絡(luò)系統(tǒng)來(lái)處理各種事務(wù)。網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行依賴于數(shù)據(jù)中心系統(tǒng)的穩(wěn)定運(yùn)行,一旦數(shù)據(jù)由于某種原因丟失,將會(huì)使得某些功能陷入癱瘓,對(duì)用戶造成不可估量的損失。為了保證源數(shù)據(jù)庫(kù)中數(shù)據(jù)安全,通常采用備份數(shù)據(jù)的方式保證數(shù)據(jù)的連續(xù)性,將服務(wù)器上的源數(shù)據(jù)庫(kù)的數(shù)據(jù)遠(yuǎn)程同步至目標(biāo)數(shù)據(jù)庫(kù),以便于在服務(wù)器出現(xiàn)故障時(shí),能使用目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
現(xiàn)有技術(shù)中,數(shù)據(jù)庫(kù)之間的遠(yuǎn)程同步主要采用數(shù)據(jù)庫(kù)本身數(shù)據(jù)的復(fù)制技術(shù),數(shù)據(jù)庫(kù)本身數(shù)據(jù)的數(shù)據(jù)量大,在遠(yuǎn)距離傳輸時(shí),傳輸帶寬需求大而且傳輸速度很慢,容易出現(xiàn)傳輸中斷的問(wèn)題??梢?jiàn),現(xiàn)有技術(shù)中,無(wú)法快速、高效率的遠(yuǎn)距離傳輸數(shù)據(jù);因此,亟需一種遠(yuǎn)程數(shù)據(jù)同步方法,快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種遠(yuǎn)程數(shù)據(jù)同步的方法和裝置,用以快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。
本發(fā)明實(shí)施例提供一種遠(yuǎn)程數(shù)據(jù)同步的方法,包括:服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄;其中,所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;其中,所述M為大于等于2的整數(shù);所述服務(wù)器根據(jù)所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;所述服務(wù)器針對(duì)所述M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從所述M條數(shù)據(jù)記錄中刪除所述N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,所述N為大于等于2、且小于等于M的整數(shù);所述服務(wù)器將所述M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;其中,所述K為大于等于1、且小于等于M的整數(shù)。
可選地,所述從所述M條數(shù)據(jù)記錄中刪除所述N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄,包括:從所述M條數(shù)據(jù)記錄中,將所述N條數(shù)據(jù)記錄中除日期最近的一條數(shù)據(jù)記錄之外的N-1條數(shù)據(jù)記錄刪除。
可選地,所述服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄,包括:所述服務(wù)器獲取事件流格式的日志文件;所述服務(wù)器解析所述事件流格式的日志文件,得到所述日志文件中包括的行變換對(duì)象流格式的所述M條數(shù)據(jù)記錄。
可選地,所述服務(wù)器將所述M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端,包括:通過(guò)L個(gè)調(diào)度進(jìn)程將所述K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;其中,所述L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述L為大于等于1的整數(shù);所述服務(wù)器將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給所述終端。
可選地,所述服務(wù)器將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給所述終端,包括:所述服務(wù)器對(duì)得到的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流進(jìn)行序列化;所述服務(wù)器對(duì)序列化后的每個(gè)工作對(duì)象流進(jìn)行壓縮和加密,將得到的壓縮和加密之后的每個(gè)工作對(duì)象流發(fā)送給所述終端。
本發(fā)明實(shí)施例提供另一種遠(yuǎn)程數(shù)據(jù)同步的方法,包括:終端接收服務(wù)器發(fā)送的所述M條數(shù)據(jù)記錄中的K條數(shù)據(jù)記錄;其中,所述K為大于等于1、且小于等于M的整數(shù);所述M為大于等于2的整數(shù);所述終端將所述K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù);其中,所述K條數(shù)據(jù)記錄是所述服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄;根據(jù)所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;針對(duì)所述M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從所述M條數(shù)據(jù)記錄中刪除所述N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄之后得到的;其中,所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;所述N為大于等于2、且小于等于M的整數(shù)。
可選地,所述終端接收服務(wù)器發(fā)送的所述M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄,包括:所述終端接收所述服務(wù)器發(fā)送的序列化、且進(jìn)行壓縮和加密后的所述L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流;其中,所述L個(gè)工作對(duì)象流為所述K條數(shù)據(jù)記錄通過(guò)L個(gè)調(diào)度進(jìn)程轉(zhuǎn)換得到的;所述L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述L為大于等于1的整數(shù);所述終端接收服務(wù)器發(fā)送的所述M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄之后,將所述K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù)之前,還包括:所述終端將所述每個(gè)工作對(duì)象流進(jìn)行解密和解壓縮,并對(duì)所述解密和解壓縮后的每個(gè)工作對(duì)象流進(jìn)行反序列化,得到K條數(shù)據(jù)記錄。
可選地,所述終端將所述K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù),包括:所述終端通過(guò)N個(gè)線程將所述K條數(shù)據(jù)記錄中并行發(fā)送至所述數(shù)據(jù)庫(kù);其中,所述N個(gè)線程中的每個(gè)線程對(duì)應(yīng)發(fā)送所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述N為大于等于1的整數(shù)。
本發(fā)明實(shí)施例提供一種用于遠(yuǎn)程數(shù)據(jù)同步的服務(wù)器,包括:
獲取單元,用于獲取日志文件中的M條數(shù)據(jù)記錄;其中,所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;其中,所述M為大于等于2的整數(shù);
處理單元,用于根據(jù)所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;針對(duì)所述M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從所述M條數(shù)據(jù)記錄中刪除所述N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,所述N為大于等于2、且小于等于M的整數(shù);
發(fā)送單元,用于所述服務(wù)器將所述M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;其中,所述K為大于等于1、且小于等于M的整數(shù)。
可選地,所述處理單元,用于:從所述M條數(shù)據(jù)記錄中,將所述N條數(shù)據(jù)記錄中除日期最近的一條數(shù)據(jù)記錄之外的N-1條數(shù)據(jù)記錄刪除。
可選地,所述獲取單元,用于:獲取事件流格式的日志文件;所述處理單元,用于:解析所述事件流格式的日志文件,得到所述日志文件中包括的行變換對(duì)象流格式的所述M條數(shù)據(jù)記錄。
可選地,所述處理單元,用于:通過(guò)L個(gè)調(diào)度進(jìn)程將所述K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;其中,所述L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述L為大于等于1的整數(shù);發(fā)送單元,用于:將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給所述終端。
可選地,所述處理單元,用于:為得到的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流分配序列號(hào);將分配序列號(hào)后的每個(gè)工作對(duì)象流進(jìn)行壓縮和加密;所述發(fā)送單元,用于:將得到的壓縮和加密之后的每個(gè)工作對(duì)象流發(fā)送給所述終端。
本發(fā)明實(shí)施例提供一種用于遠(yuǎn)程數(shù)據(jù)同步的終端,包括:接收單元,用于接收服務(wù)器發(fā)送的所述M條數(shù)據(jù)記錄中的K條數(shù)據(jù)記錄;其中,所述K為大于等于1、且小于等于M的整數(shù);所述M為大于等于2的整數(shù);發(fā)送單元,用于將所述K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù);其中,所述K條數(shù)據(jù)記錄是所述服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄;根據(jù)所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;針對(duì)所述M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從所述M條數(shù)據(jù)記錄中刪除所述N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄之后得到的;其中,所述M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;所述N為大于等于2、且小于等于M的整數(shù)。
可選地,所述接收單元,用于:接收所述服務(wù)器發(fā)送的分配了序列號(hào)的、且進(jìn)行壓縮和加密后的所述L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流;其中,所述L個(gè)工作對(duì)象流為所述K條數(shù)據(jù)記錄通過(guò)L個(gè)調(diào)度進(jìn)程轉(zhuǎn)換得到的;所述L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述L為大于等于1的整數(shù);所述終端還包括處理單元,用于:將所述每個(gè)工作對(duì)象流進(jìn)行解密和解壓縮,并對(duì)所述解密和解壓縮后的每個(gè)工作對(duì)象流進(jìn)行反序列化,得到K條數(shù)據(jù)記錄。
可選地,所述終端將所述K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù),包括:所述發(fā)送單元,用于通過(guò)N個(gè)線程將所述K條數(shù)據(jù)記錄中并行發(fā)送至所述數(shù)據(jù)庫(kù);其中,所述N個(gè)線程中的每個(gè)線程對(duì)應(yīng)發(fā)送所述K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,所述N為大于等于1的整數(shù)。
本發(fā)明實(shí)施例中,由于服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵,并針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;如此,一方面,服務(wù)器對(duì)M條數(shù)據(jù)記錄中主鍵相同的數(shù)據(jù)記錄只保留一條,最后得到K條主鍵不相同的數(shù)據(jù)記錄,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高;另一方面,服務(wù)器向終端發(fā)送的數(shù)據(jù)記錄數(shù)量K條,小于從日志文件中獲取的數(shù)據(jù)記錄數(shù)量M條,減小了傳輸?shù)臄?shù)據(jù)量,從而更快速的完成數(shù)據(jù)傳輸;從而實(shí)現(xiàn)了快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹。
圖1為本發(fā)明實(shí)施例提供了一種遠(yuǎn)程數(shù)據(jù)同步的系統(tǒng)架構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例提供的一種遠(yuǎn)程數(shù)據(jù)同步的方法流程示意圖;
圖3為本發(fā)明實(shí)施例提供的另一種遠(yuǎn)程數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例提供的另一種遠(yuǎn)程數(shù)據(jù)同步的方法流程示意圖;
圖5為本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的服務(wù)器的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的終端的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1示例性示出了本發(fā)明實(shí)施例適用的一種遠(yuǎn)程數(shù)據(jù)同步的系統(tǒng)架構(gòu)示意圖,如圖1所示,本發(fā)明實(shí)施例適用的系統(tǒng)架構(gòu)包括服務(wù)器101,以及終端102和終端103,通過(guò)無(wú)線連接或有線連接或其他方式連接。
服務(wù)器101可以是用于與終端進(jìn)行通信的設(shè)備,例如,可以是GSM系統(tǒng)或CDMA中的基站(Base Transceiver Station,簡(jiǎn)稱BTS),也可以是WCDMA系統(tǒng)中的基站(NodeB,簡(jiǎn)稱NB),還可以是LTE系統(tǒng)中的演進(jìn)型基站(Evolutional Node B,簡(jiǎn)稱eNB或eNodeB),或者該服務(wù)器可以為中繼站、接入點(diǎn)、車載設(shè)備、可穿戴設(shè)備以及未來(lái)5G網(wǎng)絡(luò)中的服務(wù)器側(cè)設(shè)備或未來(lái)演進(jìn)的PLMN網(wǎng)絡(luò)中的服務(wù)器等。
終端102和終端103中的任一個(gè)終端可以經(jīng)無(wú)線接入網(wǎng)(Radio Access Network,簡(jiǎn)稱RAN)與一個(gè)或多個(gè)核心網(wǎng)進(jìn)行通信,終端可以指用戶設(shè)備(User Equipment,簡(jiǎn)稱UE)、接入終端、用戶單元、用戶站、移動(dòng)站、移動(dòng)臺(tái)、遠(yuǎn)方站、遠(yuǎn)程終端、無(wú)線通信設(shè)備、用戶代理或用戶裝置。
本發(fā)明實(shí)施例中,服務(wù)器上的數(shù)據(jù)庫(kù)向終端上的數(shù)據(jù)庫(kù)傳輸數(shù)據(jù);服務(wù)器
通過(guò)authentication和binlog dump協(xié)議進(jìn)行數(shù)據(jù)庫(kù)二進(jìn)制日志數(shù)據(jù)獲取,并解析得到DML語(yǔ)句的數(shù)據(jù)記錄,對(duì)數(shù)據(jù)記錄進(jìn)行過(guò)濾、序列化、壓縮和加密之后,向終端上進(jìn)行網(wǎng)絡(luò)傳輸。終端接收服務(wù)器發(fā)送壓縮包,并進(jìn)行解壓縮、反序列化和解密,將得到的解壓縮、反序列化和解密后的數(shù)據(jù)記錄載入工作池,再將工作池中的數(shù)據(jù)記錄并行發(fā)送至終端上的數(shù)據(jù)庫(kù)。
圖2示例性示出了本發(fā)明實(shí)施例提供的一種遠(yuǎn)程數(shù)據(jù)同步的方法流程示意圖。
基于圖1所示的系統(tǒng)架構(gòu),如圖2所示,本發(fā)明實(shí)施例提供的一種遠(yuǎn)程數(shù)據(jù)同步方法的方法,包括以下步驟:
步驟S201:服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄;
其中,M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;其中,M為大于等于2的整數(shù);
步驟S202:服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;
步驟S203:服務(wù)器針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;
其中,N為大于等于2、且小于等于M的整數(shù);
步驟S204:服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;其中,K為大于等于1、且小于等于M的整數(shù);
步驟S205:終端接收服務(wù)器發(fā)送的M條數(shù)據(jù)記錄中的K條數(shù)據(jù)記錄;
其中,K為大于等于1、且小于等于M的整數(shù);M為大于等于2的整數(shù);
步驟S206:終端將K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù)。
上述實(shí)施例步驟S201中,服務(wù)器上的本地?cái)?shù)據(jù)中心從的源數(shù)據(jù)庫(kù)獲取日志文件,該日志文件為二進(jìn)制日志文件。具體實(shí)施中,服務(wù)器上的本地?cái)?shù)據(jù)中心獲取該日志文件之后,得到M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息;可選地,每條數(shù)據(jù)記錄中包括的預(yù)設(shè)字段對(duì)應(yīng)的信息有多種,根據(jù)實(shí)際應(yīng)用過(guò)程中的需求進(jìn)行設(shè)置,也可針對(duì)不同類型的數(shù)據(jù)記錄進(jìn)行設(shè)置,例如交易數(shù)據(jù)記錄、聊天數(shù)據(jù)記錄等等;舉個(gè)例子,以一條交易數(shù)據(jù)記錄為例,預(yù)設(shè)字段對(duì)應(yīng)的信息可以為訂單號(hào)、流水號(hào)、交易內(nèi)容、交易金額、交易時(shí)間、交易狀態(tài)中的至少一種。
上述實(shí)施例步驟S202中,主鍵可以根據(jù)實(shí)際應(yīng)用過(guò)程中的需求進(jìn)行設(shè)置,一條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息包括多種信息,以其中一種信息為主鍵;舉個(gè)例子,以交易數(shù)據(jù)記錄為例,主鍵可以設(shè)置為訂單號(hào)、或流水號(hào);
上述實(shí)施例步驟S203中,N為大于等于2、且小于等于M的整數(shù);例如,M條數(shù)據(jù)記錄中:記錄一、記錄二、記錄三、記錄四為交易記錄,交易記錄主鍵設(shè)置為訂單號(hào),其中,記錄一的主鍵為201610001,記錄二、記錄三、記錄四的主鍵為201610002,此時(shí),就刪除記錄二、記錄三、記錄四中的兩條數(shù)據(jù)記錄,保留其中一條數(shù)據(jù)記錄,可以任選其中一條保留,也可以設(shè)置為時(shí)間最近的一條保留,此處不限定保留的具體方式。
上述實(shí)施例步驟S204中,服務(wù)器K條數(shù)據(jù)記錄發(fā)送給終端的具體方式不限定,可以為壓縮之后發(fā)送、也可以為加密之后發(fā)送。
上述實(shí)施例步驟S205中,終端上的本地?cái)?shù)據(jù)中心接收服務(wù)器發(fā)送的K條數(shù)據(jù)記錄。
上述實(shí)施例步驟S206中,終端將K條數(shù)據(jù)記錄發(fā)送至終端上的目標(biāo)數(shù)據(jù)庫(kù),發(fā)送方式有多種,可以采用一個(gè)線程發(fā)送,例如一條一條數(shù)據(jù)記錄發(fā)送,也可以多條數(shù)據(jù)記錄一起發(fā)送;也可以采用多個(gè)線程發(fā)送:例如五個(gè)線程,每個(gè)線程發(fā)送20條數(shù)據(jù)記錄;具體采用的線程數(shù)量可根據(jù)實(shí)際需求進(jìn)行設(shè)置。
本發(fā)明實(shí)施例中,由于服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵,并針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;如此,一方面,服務(wù)器對(duì)M條數(shù)據(jù)記錄中主鍵相同的數(shù)據(jù)記錄只保留一條,最后得到K條主鍵不相同的數(shù)據(jù)記錄,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高;另一方面,服務(wù)器向終端發(fā)送的數(shù)據(jù)記錄數(shù)量K條,小于從日志文件中獲取的數(shù)據(jù)記錄數(shù)量M條,減小了傳輸?shù)臄?shù)據(jù)量,從而更快速的完成數(shù)據(jù)傳輸;如此,可以實(shí)現(xiàn)快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。
本發(fā)明實(shí)施例中,服務(wù)器在監(jiān)測(cè)到源數(shù)據(jù)庫(kù)中更新或生成日志文件的情況下,通過(guò)二進(jìn)制日志接口獲取日志文件;也就是說(shuō),一方面,在獲取日志文件時(shí)并不直接對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行訪問(wèn),因此對(duì)源數(shù)據(jù)庫(kù)本身的運(yùn)行影響非常??;另一方面,在檢測(cè)到日志文件更新或生成新的日志文件時(shí),就獲取日志文件,因此本發(fā)明實(shí)施例提供的方案是實(shí)時(shí)獲取數(shù)據(jù)記錄的,進(jìn)而實(shí)現(xiàn)實(shí)時(shí)同步數(shù)據(jù)的效果。
可選地,服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄,包括:服務(wù)器獲取事件流格式的日志文件;服務(wù)器解析事件流格式的日志文件,得到日志文件中包括的行變換對(duì)象流格式的M條數(shù)據(jù)記錄。
本發(fā)明實(shí)施例中,可選地,事件流格式可以為binlog格式,行變換對(duì)象流格式可以為Row Change對(duì)象流格式;將事件流格式的日志文件轉(zhuǎn)換為行變換對(duì)象流格式的M條數(shù)據(jù)記錄,例如,DML或者DDL語(yǔ)句,如此,便于服務(wù)器對(duì)行變換對(duì)象流格式的M條數(shù)據(jù)流進(jìn)行同主鍵的數(shù)據(jù)記錄進(jìn)行處理,進(jìn)而降低對(duì)傳輸帶寬的容量需求。
可選地,服務(wù)器針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,服務(wù)器從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄,包括:從M條數(shù)據(jù)記錄中,將N條數(shù)據(jù)記錄中除日期最近的一條數(shù)據(jù)記錄之外的N-1條數(shù)據(jù)記錄刪除。
本發(fā)明實(shí)施例中,服務(wù)器通過(guò)DML合成器對(duì)M條數(shù)據(jù)記錄進(jìn)行處理,將M條數(shù)據(jù)記錄中的主鍵相同的數(shù)據(jù)記錄進(jìn)行處理,只保留日期最近的一條數(shù)據(jù)記錄,刪除不需要的數(shù)據(jù)記錄。舉個(gè)例子,例如M等于10,N等于3,也就是說(shuō),10條數(shù)據(jù)記錄中有3條數(shù)據(jù)記錄的主鍵相同,這3條數(shù)據(jù)記錄的日期為分別為同一天的8點(diǎn)、9點(diǎn)、10點(diǎn),那么將10點(diǎn)對(duì)應(yīng)的數(shù)據(jù)記錄保留,刪除8點(diǎn)和9點(diǎn)對(duì)應(yīng)的2條數(shù)據(jù)記錄。如此,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高。
可選地,服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端,包括:通過(guò)L個(gè)調(diào)度進(jìn)程將K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;其中,L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);服務(wù)器將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給終端。
本發(fā)明實(shí)施例中,服務(wù)器通過(guò)Work調(diào)度器對(duì)行變換對(duì)象流格式的K條數(shù)據(jù)記錄進(jìn)行處理;可選地,L的具體數(shù)值可根據(jù)實(shí)際需求進(jìn)行設(shè)置;例如,K等于20,L等于5,也就是說(shuō),將20條數(shù)據(jù)記錄通過(guò)Work調(diào)度器轉(zhuǎn)換成5個(gè)工作對(duì)象流。如此,便于服務(wù)器對(duì)數(shù)據(jù)記錄進(jìn)行壓縮、加密處理,進(jìn)而更快傳輸數(shù)據(jù)。
可選地,服務(wù)器將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給終端,包括:服務(wù)器對(duì)得到的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流進(jìn)行序列化;服務(wù)器對(duì)序列化后的每個(gè)工作對(duì)象流進(jìn)行壓縮和加密,將得到的壓縮和加密之后的每個(gè)工作對(duì)象流發(fā)送給終端。如此,一方面,對(duì)數(shù)據(jù)進(jìn)行壓縮,降低了對(duì)數(shù)據(jù)傳輸帶寬的需求量,保證了數(shù)據(jù)傳輸?shù)恼!⒏咝У倪M(jìn)行傳輸;另一方面,對(duì)數(shù)據(jù)記錄進(jìn)行加密,可以保證在進(jìn)行數(shù)據(jù)同步的過(guò)程中的數(shù)據(jù)安全,提高數(shù)據(jù)安全性。
相應(yīng)的,終端接收服務(wù)器發(fā)送的M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄,包括:終端接收服務(wù)器發(fā)送的序列化、且進(jìn)行壓縮和加密后的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流;其中,L個(gè)工作對(duì)象流為K條數(shù)據(jù)記錄通過(guò)L個(gè)調(diào)度進(jìn)程轉(zhuǎn)換得到的;L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);終端接收服務(wù)器發(fā)送的M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄之后,將K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù)之前,還包括:終端將每個(gè)工作對(duì)象流進(jìn)行解密和解壓縮,并對(duì)解密和解壓縮后的每個(gè)工作對(duì)象流進(jìn)行反序列化,得到K條數(shù)據(jù)記錄??蛇x地,終端對(duì)接收到的K條數(shù)據(jù)記錄進(jìn)行解壓縮、解密、反序列化,將解壓縮、解密、反序列化的K條數(shù)據(jù)記錄放入工作(Work)池,以便于對(duì)K條數(shù)據(jù)記錄進(jìn)行緩存。
可選地,終端接收服務(wù)器發(fā)送的數(shù)據(jù)記錄之后,若終端接收到壓縮的數(shù)據(jù)包,則向服務(wù)器發(fā)送響應(yīng);若終端未接收到壓縮的數(shù)據(jù)包,則不會(huì)向服務(wù)器發(fā)送響應(yīng);相應(yīng)的,終端在預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未接收到響應(yīng),則再次向終端發(fā)送壓縮的數(shù)據(jù)包,以確保數(shù)據(jù)包完整發(fā)送成功。
可選地,終端將K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù),包括:終端通過(guò)N個(gè)線程將K條數(shù)據(jù)記錄中并行發(fā)送至數(shù)據(jù)庫(kù);其中,N個(gè)線程中的每個(gè)線程對(duì)應(yīng)發(fā)送K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,N為大于等于1的整數(shù)。
本發(fā)明實(shí)施例中,通過(guò)回放器調(diào)用N個(gè)線程并行將K條數(shù)據(jù)記錄發(fā)送至目標(biāo)數(shù)據(jù)庫(kù)中;例如,K等于20,N等于4,也就是說(shuō),通過(guò)4個(gè)線程發(fā)送20條數(shù)據(jù)記錄,一個(gè)線程發(fā)送5條數(shù)據(jù)記錄。由于終端接收到的數(shù)據(jù)記錄之前,已經(jīng)對(duì)數(shù)據(jù)記錄中的相同主鍵的數(shù)據(jù)記錄進(jìn)行了處理,此時(shí)不存在相同主鍵的數(shù)據(jù)記錄,因此,回放器可以對(duì)K條數(shù)據(jù)記錄進(jìn)行多并行發(fā)送,不會(huì)出現(xiàn)存在相同主鍵時(shí),并行發(fā)送數(shù)據(jù)記錄導(dǎo)致的相同主鍵的數(shù)據(jù)記錄在不同的線程進(jìn)行發(fā)送的情況。如此,并行發(fā)送大大提高了終端側(cè)將數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù)的速度,進(jìn)而提高了數(shù)據(jù)傳輸?shù)乃俣龋姨岣吡藬?shù)據(jù)傳輸?shù)男省?/p>
為了更清楚的介紹服務(wù)器向終端遠(yuǎn)距離數(shù)據(jù)同步的過(guò)程,本發(fā)明實(shí)施提供如下實(shí)施例。
圖3示例性示出了本發(fā)明實(shí)施例提供的另一種遠(yuǎn)程數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)示意圖。
如圖3所示,本發(fā)明實(shí)施例適用的另一種遠(yuǎn)程數(shù)據(jù)同步系統(tǒng)包括服務(wù)器310和終端320;服務(wù)器310上包括本地?cái)?shù)據(jù)中心311、數(shù)據(jù)庫(kù)316;本地?cái)?shù)據(jù)中心311包括解析器321、DML合成器313、Work調(diào)度器314、網(wǎng)絡(luò)傳輸服務(wù)315;終端320上包括本地?cái)?shù)據(jù)中心321、數(shù)據(jù)庫(kù)325;本地?cái)?shù)據(jù)中心321包括網(wǎng)絡(luò)傳輸服務(wù)322、Work池323、回放器324;
本發(fā)明實(shí)施例中,數(shù)據(jù)傳輸過(guò)程如下:服務(wù)器310中的本地?cái)?shù)據(jù)中心311從數(shù)據(jù)庫(kù)316獲取日志文件;服務(wù)器311上的解析器312對(duì)獲取的日志文件進(jìn)行解析,獲取日志文件中的M條數(shù)據(jù)記錄,將數(shù)據(jù)記錄的格式從事件流格式轉(zhuǎn)換為對(duì)象流格式,以便于DML合成器313對(duì)數(shù)據(jù)記錄進(jìn)行處理;DML合成器313用于將事件流格式的數(shù)據(jù)記錄中的主鍵相同的數(shù)據(jù)記錄進(jìn)行篩選,保留日期最近的一條數(shù)據(jù)記錄,剩余的K條數(shù)據(jù)記錄均為主鍵不同的數(shù)據(jù)記錄;Work調(diào)度器314用于調(diào)度L個(gè)調(diào)度進(jìn)程,將DML合成器313中得到的K條數(shù)據(jù)記錄轉(zhuǎn)換成L個(gè)工作對(duì)象流;網(wǎng)絡(luò)傳輸服務(wù)315將L個(gè)工作對(duì)象進(jìn)行序列化、壓縮、加密之后,得到序列化、壓縮、加密后的K條數(shù)據(jù)記錄,并將K條數(shù)據(jù)記錄發(fā)送至終端320。終端320接收K條數(shù)據(jù)記錄之后,通過(guò)網(wǎng)絡(luò)傳輸服務(wù)322將L個(gè)工作對(duì)象流進(jìn)行解壓縮、反序列化、解密,得到解壓縮、反序列化、解密后的K條數(shù)據(jù)記錄,并放入Work池323中;Work池323對(duì)K條數(shù)據(jù)記錄進(jìn)行持久化緩存;回放器324將K條數(shù)據(jù)記錄調(diào)用N個(gè)線程并行發(fā)送數(shù)據(jù)庫(kù)325;本發(fā)明實(shí)施例中,將服務(wù)器310上的數(shù)據(jù)庫(kù)316中的數(shù)據(jù)同步傳輸至終端320上的數(shù)據(jù)庫(kù)325;如此,保證了服務(wù)器上的數(shù)據(jù)庫(kù)的數(shù)據(jù)備份的完整性,避免了服務(wù)器中的數(shù)據(jù)庫(kù)數(shù)據(jù)記錄丟失的情況下,導(dǎo)致的數(shù)據(jù)難以恢復(fù)的情況。
為了更清楚的介紹上述方法流程,本發(fā)明實(shí)施例提供以下示例。
圖4示例性示出了本發(fā)明實(shí)施例提供的另一種遠(yuǎn)程數(shù)據(jù)同步方法的方法流程示意圖,如圖4所示,該方法包括:
步驟S401:服務(wù)器獲取事件流格式的日志文件;
步驟S402:服務(wù)器解析事件流格式的日志文件,得到日志文件中包括的行變換對(duì)象流格式的M條數(shù)據(jù)記錄;其中,M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;其中,M為大于等于2的整數(shù);
步驟S403:服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;
步驟S404:服務(wù)器針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵:在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中,將N條數(shù)據(jù)記錄中除日期最近的一條數(shù)據(jù)記錄之外的N-1條數(shù)據(jù)記錄刪除;其中,N為大于等于2、且小于等于M的整數(shù);
步驟S405:服務(wù)器得到M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄;其中,K為大于等于1、且小于等于M的整數(shù);
步驟S406:通過(guò)L個(gè)調(diào)度進(jìn)程將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;
其中,L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);
步驟S407:服務(wù)器通過(guò)L個(gè)調(diào)度進(jìn)程將K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;
步驟S408:服務(wù)器將L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流進(jìn)行序列化、壓縮和加密,得到序列化、壓縮和加密后的L個(gè)工作對(duì)象流;
步驟S409:服務(wù)器向終端發(fā)送序列化、壓縮和加密后的L個(gè)工作對(duì)象流;
步驟S410:終端接收服務(wù)器發(fā)送的序列化、壓縮和加密后的L個(gè)工作對(duì)象流;其中,L個(gè)工作對(duì)象流為K條數(shù)據(jù)記錄通過(guò)L個(gè)調(diào)度進(jìn)程轉(zhuǎn)換得到的;L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);
步驟S411:終端將序列化、壓縮和加密后的每個(gè)工作對(duì)象流進(jìn)行解壓縮、反序列化和解密,得到K條數(shù)據(jù)記錄。
步驟S412:終端通過(guò)N個(gè)線程將K條數(shù)據(jù)記錄中并行發(fā)送至數(shù)據(jù)庫(kù);其中,N個(gè)線程中的每個(gè)線程對(duì)應(yīng)發(fā)送K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,N為大于等于1的整數(shù)。
從上述內(nèi)容可看出:由于服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵,并針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;如此,一方面,服務(wù)器對(duì)M條數(shù)據(jù)記錄中主鍵相同的數(shù)據(jù)記錄只保留一條,最后得到K條主鍵不相同的數(shù)據(jù)記錄,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高;另一方面,服務(wù)器向終端發(fā)送的數(shù)據(jù)記錄數(shù)量K條,小于從日志文件中獲取的數(shù)據(jù)記錄數(shù)量M條,減小了傳輸?shù)臄?shù)據(jù)量,從而更快速的完成數(shù)據(jù)傳輸;如此,可以實(shí)現(xiàn)快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。進(jìn)一步,本發(fā)明實(shí)施例提供的方法在數(shù)據(jù)傳輸之前進(jìn)行壓縮和加密,解決了遠(yuǎn)距離的數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步過(guò)程中數(shù)據(jù)時(shí)效性、一致性、安全性等關(guān)鍵問(wèn)題,對(duì)數(shù)據(jù)庫(kù)的影響較低,具有高效、低帶寬、低延時(shí)、高安全性等效果。
圖5示例性示出了本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的服務(wù)器的結(jié)構(gòu)示意圖。
基于相同構(gòu)思,本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的服務(wù)器,如圖5所示,該服務(wù)器500包括獲取單元501、處理單元502和發(fā)送單元503;其中:
獲取單元501,用于獲取日志文件中的M條數(shù)據(jù)記錄;其中,M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;其中,M為大于等于2的整數(shù);
處理單元502,用于根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);
發(fā)送單元503,用于服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;其中,K為大于等于1、且小于等于M的整數(shù)。
可選地,處理單元502,用于:從M條數(shù)據(jù)記錄中,將N條數(shù)據(jù)記錄中除日期最近的一條數(shù)據(jù)記錄之外的N-1條數(shù)據(jù)記錄刪除。
可選地,獲取單元501,用于:獲取事件流格式的日志文件;處理單元502,用于:解析事件流格式的日志文件,得到日志文件中包括的行變換對(duì)象流格式的M條數(shù)據(jù)記錄。
可選地,處理單元502,用于:通過(guò)L個(gè)調(diào)度進(jìn)程將K條數(shù)據(jù)記錄中轉(zhuǎn)換成L個(gè)工作對(duì)象流;其中,L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);發(fā)送單元503,用于:將轉(zhuǎn)換得到的L個(gè)工作對(duì)象流發(fā)送給終端。
可選地,處理單元502,用于:為得到的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流分配序列號(hào);將分配序列號(hào)后的每個(gè)工作對(duì)象流進(jìn)行壓縮和加密;發(fā)送單元503,用于:將得到的壓縮和加密之后的每個(gè)工作對(duì)象流發(fā)送給終端。
從上述內(nèi)容可看出:由于服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵,并針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;如此,一方面,服務(wù)器對(duì)M條數(shù)據(jù)記錄中主鍵相同的數(shù)據(jù)記錄只保留一條,最后得到K條主鍵不相同的數(shù)據(jù)記錄,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高;另一方面,服務(wù)器向終端發(fā)送的數(shù)據(jù)記錄數(shù)量K條,小于從日志文件中獲取的數(shù)據(jù)記錄數(shù)量M條,減小了傳輸?shù)臄?shù)據(jù)量,從而更快速的完成數(shù)據(jù)傳輸;如此,可以實(shí)現(xiàn)快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。進(jìn)一步,本發(fā)明實(shí)施例提供的方法在數(shù)據(jù)傳輸之前進(jìn)行壓縮和加密,解決了遠(yuǎn)距離的數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步過(guò)程中數(shù)據(jù)時(shí)效性、一致性、安全性等關(guān)鍵問(wèn)題,對(duì)數(shù)據(jù)庫(kù)的影響較低,具有高效、低帶寬、低延時(shí)、高安全性等效果。
圖6示例性示出了本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的終端的結(jié)構(gòu)示意圖。
基于相同構(gòu)思,本發(fā)明實(shí)施例提供的一種用于遠(yuǎn)程數(shù)據(jù)同步的終端,如圖6所示,該終端600包括接收單元601和發(fā)送單元602,其中:
接收單元601,用于接收服務(wù)器發(fā)送的M條數(shù)據(jù)記錄中的K條數(shù)據(jù)記錄;其中,K為大于等于1、且小于等于M的整數(shù);M為大于等于2的整數(shù);
發(fā)送單元602,用于將K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù);其中,K條數(shù)據(jù)記錄是服務(wù)器獲取日志文件中的M條數(shù)據(jù)記錄;根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵;針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄之后得到的;其中,M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中包括預(yù)設(shè)字段對(duì)應(yīng)的信息;N為大于等于2、且小于等于M的整數(shù)。
可選地,接收單元601,用于:接收服務(wù)器發(fā)送的分配了序列號(hào)的、且進(jìn)行壓縮和加密后的L個(gè)工作對(duì)象流中的每個(gè)工作對(duì)象流;其中,L個(gè)工作對(duì)象流為K條數(shù)據(jù)記錄通過(guò)L個(gè)調(diào)度進(jìn)程轉(zhuǎn)換得到的;L個(gè)調(diào)度進(jìn)程中的每個(gè)調(diào)度進(jìn)程對(duì)應(yīng)轉(zhuǎn)換K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,L為大于等于1的整數(shù);終端還包括處理單元,用于:將每個(gè)工作對(duì)象流進(jìn)行解密和解壓縮,并對(duì)解密和解壓縮后的每個(gè)工作對(duì)象流進(jìn)行反序列化,得到K條數(shù)據(jù)記錄。
可選地,終端將K條數(shù)據(jù)記錄發(fā)送至數(shù)據(jù)庫(kù),包括:發(fā)送單元602,用于通過(guò)N個(gè)線程將K條數(shù)據(jù)記錄中并行發(fā)送至數(shù)據(jù)庫(kù);其中,N個(gè)線程中的每個(gè)線程對(duì)應(yīng)發(fā)送K條數(shù)據(jù)記錄中的至少一條數(shù)據(jù)記錄;其中,N為大于等于1的整數(shù)。
從上述內(nèi)容可看出:由于服務(wù)器根據(jù)M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄中的預(yù)設(shè)字段對(duì)應(yīng)的信息,確定出M條數(shù)據(jù)記錄中每條數(shù)據(jù)記錄的主鍵,并針對(duì)M條數(shù)據(jù)記錄對(duì)應(yīng)的所有主鍵中的每個(gè)主鍵,在確定存在N條數(shù)據(jù)記錄的主鍵為該主鍵的情況下,從M條數(shù)據(jù)記錄中刪除N條數(shù)據(jù)記錄中的N-1條數(shù)據(jù)記錄;其中,N為大于等于2、且小于等于M的整數(shù);服務(wù)器將M條數(shù)據(jù)記錄中剩余的K條數(shù)據(jù)記錄發(fā)送給終端;如此,一方面,服務(wù)器對(duì)M條數(shù)據(jù)記錄中主鍵相同的數(shù)據(jù)記錄只保留一條,最后得到K條主鍵不相同的數(shù)據(jù)記錄,消除了數(shù)據(jù)冗余,大大降低數(shù)據(jù)同步過(guò)程中對(duì)傳輸帶寬的容量需求,從而降低了遠(yuǎn)距離傳輸數(shù)據(jù)時(shí)出現(xiàn)中斷的可能性,而且傳輸效率更高;另一方面,服務(wù)器向終端發(fā)送的數(shù)據(jù)記錄數(shù)量K條,小于從日志文件中獲取的數(shù)據(jù)記錄數(shù)量M條,減小了傳輸?shù)臄?shù)據(jù)量,從而更快速的完成數(shù)據(jù)傳輸;如此,可以實(shí)現(xiàn)快速、高效率的實(shí)現(xiàn)遠(yuǎn)距離傳輸數(shù)據(jù)。進(jìn)一步,本發(fā)明實(shí)施例提供的方法在數(shù)據(jù)傳輸之前進(jìn)行壓縮和加密,解決了遠(yuǎn)距離的數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步過(guò)程中數(shù)據(jù)時(shí)效性、一致性、安全性等關(guān)鍵問(wèn)題,對(duì)數(shù)據(jù)庫(kù)的影響較低,具有高效、低帶寬、低延時(shí)、高安全性等效果。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。