專利名稱:一種數據庫遠程同步的實現方法
技術領域:
本發(fā)明涉及信息處理領域,尤其涉及一種數據庫遠程同步的實現方法。
背景技術:
在日常生活中,人們需要在不同的終端設備上創(chuàng)建相同的信息,上述終端設備一般為電腦,現在普遍采用的方法是通過網絡來實現不同終端上信息的遠程同步。但是,網絡遠程同步數據的過程中存在數據被惡意篡改的風險,數據的安全性受到影響很可能會給用戶帶來重大損失,例如,兩臺服務器的數據庫遠程同步數據過程中出現數據被惡意篡改的現象,則容易導致兩臺服務器對應的工作流程出現不對應,直接造成經濟損失。為了解決數據遠程同步的安全性問題,發(fā)明人提出了一種實現方法來保障數據遠程同步的安全性
發(fā)明內容
為解決現有技術中數據同步過程中所存在的風險問題,本發(fā)明提出了一種數據庫遠程同步的實現方法。本發(fā)明采用的技術方案是一種數據庫遠程同步的實現方法,包括當第一數據庫接收到訂單信息時執(zhí)行步驟SI至步驟S4 ;步驟SI :第一數據庫將接收到的訂單信息保存至訂單信息表,根據第一密鑰和所述訂單信息表中訂單信息中包含的用戶基本信息生成第一文摘,并向第二數據庫發(fā)送第一請求數據;步驟S2 :所述第二數據庫從接收到的所述第一請求數據中獲取訂單信息和第一文摘,并根據第二密鑰和獲取到的所述訂單信息中包含的用戶基本信息生成第二文摘;步驟S3 :所述第二數據庫比對所述第一文摘和所述第二文摘是否一致,是則執(zhí)行下一步,否則向所述第一數據庫返回包含錯誤碼的請求響應;步驟S4 :所述第二數據庫將獲取到的所述訂單信息保存至正式列表中,并向所述第一數據庫發(fā)送包含同步成功編碼的請求響應;所述步驟S4之后還包括步驟S5 :所述第二數據庫為正式列表中的訂單信息中包含的產品序列號字段保存產品序列號;當第二數據庫接收到物流號和訂單號時,執(zhí)行步驟S6至步驟Sll ;步驟S6 :所述第二數據庫將接收到的物流號和訂單號保存至臨時列表中,并根據所述訂單號從正式列表中查找到與之對應的訂單信息;步驟S7 :所述第二數據庫根據第二密鑰、查找到的所述訂單信息中包含的用戶基本信息和產品序列號、臨時列表中的所述物流號生成第三文摘,并向所述第一數據庫發(fā)送第二請求數據;步驟S8 :所述第一數據庫從接收到的所述第二請求數據中獲取訂單信息、物流號和第三文摘,并根據第一密鑰、所述物流號、所述訂單信息中包含的用戶基本信息和產品序列號生成第四文摘;
步驟S9 :所述第一數據庫比對所述第三文摘和所述第四文摘是否一致,是則執(zhí)行下一步,否則向所述第二數據庫發(fā)送包含錯誤碼的請求響應;步驟SlO :所述第一數據庫為所述訂單信息表中的訂單信息的物流號字段保存所述物流號,并向所述第二數據庫發(fā)送包含同步成功編碼的請求響應;步驟Sll :所述第二數據庫將所述物流號保存至正式列表中的所述訂單信息包含的物流號字段,并將臨時列表中的所述訂單信息刪除。上述訂單信息中包含有用戶基本信息、訂單號、產品型號字段、產品序列號字段和物流號字段,所述產品序列號字段和物流號字段初始為空。 上述第一密鑰和所述第二密鑰是第一數據庫和第二數據庫預先協商的會話密鑰?;蛘呤撬龅谝粩祿旌退龅诙祿熘蓄A存有根據時間命名的協商密鑰文件,所述步驟SI還包括,所述第一數據庫讀取當前系統時間,根據當前系統時間讀取相應的協商密鑰文件,從所述協商密鑰文件中獲取第一密鑰,所述步驟S2還包括,所述第二數據庫讀取當前系統時間,根據當前系統時間讀取相應的協商密鑰文件,從所述協商密鑰文件中獲取第二密鑰。步驟SI所述第一數據庫根據第一密鑰和訂單信息表中訂單信息中包含的用戶基本信息生成第一文摘具體為所述第一數據庫將所述訂單信息中的用戶基本信息和所述第一密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第一文摘;步驟S2所述根據第二密鑰和獲取到的所述訂單信息中包含的用戶基本信息生成第二文摘具體為將所述訂單信息中的用戶基本信息和第二密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第二文摘。所述步驟S2還包括,所述第二數據庫驗證從所述第一請求數據中獲取的所述訂單信息的有效性的過程,所述步驟S8還包括,所述第一數據庫驗證從所述第二請求數據中獲取的所述訂單信息的有效性的過程;驗證所述訂單信息的有效性的過程具體為驗證所述訂單信息的格式和內容是否有效。所述步驟S5具體為,所述第二數據庫根據所述訂單信息中包含的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品,將檢索到的產品記錄中的產品序列號字段值保存至所述訂單信息的產品序列號字段中。所述步驟S5包括,所述第二數據庫創(chuàng)建第一作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器參數,設置調度開始時間和調度間隔時間,當監(jiān)測到系統時間達到調度開始時間時,啟動任務調度器調度創(chuàng)建的作業(yè),并將調度開始時間增加所述調度間隔時間;所述創(chuàng)建的第一作業(yè)為自動遍歷正式列表中的所有訂單信息,根據訂單信息的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品記錄,將產品記錄中產品序列號字段值保存至所述訂單信息的產品序列號字段中。所述步驟S6包括,所述第二數據庫在正式列表中查找是否存在接收到的所述訂單號,是則將接收到的所述物流號和訂單號作為一條記錄保存至臨時列表中,否則不保存?;蛘呤撬霾襟ES6包括,所述第二數據庫創(chuàng)建第二作業(yè)和第三作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器參數,設置第二調度開始時間、第三調度開始時間和調度間隔時間,當監(jiān)測到系統時間達到第二調度開始時間時,啟動任務調度器調度創(chuàng)建的第二作業(yè),并將第二調度開始時間增加所述調度間隔時間,當監(jiān)測到系統時間達到第三調度開始時間時,啟動任務調度器調度創(chuàng)建的第三作業(yè),并將第二調度開始時間增加所述調度間隔時間;所述第二作業(yè)為,將存放訂單信息的正式列表下載到指定存儲空間,所述第三作業(yè)為,從所述指定存儲空間獲取保存訂單號和物流號的臨時列表。步驟S4所述向所述第一數據庫發(fā)送包含成功編碼的請求響應之后包括,所述第一數據庫接收到所述請求響應后,標記所述訂單信息生效。所述步驟Sll可以替換為所述第二數據庫將所述物流號保存至正式列表中的所述訂單信息包含的物流號字段,并將臨時列表中的所述訂單信息標記為已處理。本發(fā)明所述方法還包括,當系統時間達到預設時間時,啟動任務調度器調度第四作業(yè),所述第四作業(yè)為檢索臨時表中標記為已處理的訂單信息并將其刪除。所述步驟S4中當所述第二數據庫接收到要更新的訂單信息時包括,將所述要更 新的訂單信息保存到正式列表中,所述要更新的訂單信息中的產品序列號字段包括舊產品序列號字段和新產品序列號字段;所述步驟S5具體為,為正式列表中的所述要更新的訂單信息的產品序列號字段保存新產品序列號,將被更新的訂單信息中包含的產品序列號保存到所述要更新的訂單信息的舊產品序列號字段中。步驟S7所述第二數據庫根據第二密鑰、查找到的所述訂單信息中包含的用戶基本信息和產品序列號、臨時列表中的所述物流號生成第三文摘具體為,所述第二數據庫將所述訂單信息中的用戶基本信息和產品序列號、臨時列表中的所述物流號以及第二密鑰按照預先約定的順序拼接為一個數據串,并對所述數據串采用預先約定的算法產生第三文摘;步驟S8所述根據第一密鑰、所述物流號、所述訂單信息中包含的用戶基本信息和產品序列號生成第四文摘具體為,所述第一數據庫將所述訂單信息中的用戶基本信息和產品序列號、所述物流號以及所述第一密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第四文摘。本發(fā)明的有益效果是采用本發(fā)明提出的方法能夠有效避免遠程數據同步過程所帶來的風險,同時能保障數據同步不遺漏1)通過實時觸發(fā)接口來保證數據即時同步,通過定時掃描數據來觸發(fā)接口,保障數據同步無遺漏;2)能夠檢測出數據傳輸過程中是否被篡改;3)網絡傳輸中的文摘產生的數據來源不明確也是本方法安全保障的特色。
圖I是實施例I提供的一種數據庫遠程同步的實現方法流程圖;圖2是實施例2提供的一種數據庫其中一方的數據同步流程圖;圖3是實施例3提供的一種更新訂單信息的流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例中數據庫遠程同步的實現方法以遠程同步數據庫中的訂單信息為例進行詳細介紹。實施例I本實施例提供的一種數據庫遠程同步的實現方法,可以實現第一數據庫和第二數據庫的訂單信息的實時同步,如圖I所示,包括以下步驟步驟I :第一數據庫接收用戶申請的訂單信息;具體地,所述訂單信息中包含有用戶基本信息、訂單號、產品型號字段、產品序列號字段和物流號字段,所述產品序列號字段和物流號字段初始為空,第一數據庫將接收到的訂單信息保存至訂單信息表。本實施例中第一數據庫接收到用戶申請的訂單信息之前包括,第一數據庫與第二數據庫協商產生一對會話密鑰,即第一密鑰和第二密鑰,第一數據庫存儲所述第一密鑰,第·二數據庫存儲所述第二密鑰。步驟2 :第一數據庫根據第一密鑰和訂單信息中的用戶基本信息產生第一文摘;具體為將訂單信息中的用戶基本信息和第一密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對該數據串進行加密產生第一文摘。本實施例中,所述訂單信息中的用戶基本信息具體包括收貨人姓名、住址、電話等信息。優(yōu)選的,將訂單信息中的用戶基本信息和第一密鑰按先后順序拼接為一個數據串,用MD5算法對該數據串進行計算得到第一文摘。除此之外,還可以采用SHAl算法對該數據串進行加密產生第一文摘,從而達到對傳輸的同步數據進行保護的目的。步驟3 :第一數據庫將訂單信息與第一文摘封裝為第一請求數據并發(fā)送至第二數據庫。具體地,第一數據庫和第二數據庫之間的相互調用采用URL請求路徑的方式,本實施例中優(yōu)選的,將訂單信息與第一文摘封裝為URL第一請求數據發(fā)送至第二數據庫。步驟4 :第二數據庫接收第一請求數據從中獲取訂單信息和第一文摘,根據第二密鑰和訂單信息中的用戶基本信息產生第二文摘;具體地,第二數據庫接收到URL第一請求數據,從中讀取到訂單信息和第一文摘,將訂單信息中的用戶基本信息和第二密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對該數據串進行加密產生第二文摘。優(yōu)選的,將訂單信息和第二密鑰按先后順序拼接為一個數據串,用MD5算法對該數據串進行計算得到第二文摘。除此之外,還可以采用SHAl算法對該數據串進行加密產生第二文摘,從而達到對傳輸的同步數據進行保護的目的。優(yōu)選的,還可以設置第一數據庫和第二數據庫間隔一定時間重新協商一次密鑰,例如間隔時間為I個月,具體實現方式為在第一數據庫和第二數據庫中預存一些協商密鑰文件,協商密鑰文件的文件名用月份表示,步驟2還包括,第一數據庫讀取當前系統時間,根據當前系統時間讀取相應月份的協商密鑰文件,從該文件中獲取第一密鑰,相應的步驟4還包括,第二數據庫讀取當前系統時間,根據當前系統時間讀取相應月份的協商密鑰文件,從該文件中獲取第二密鑰。進一步的,本實施例中步驟4還可以具體為以下步驟
步驟4-1 :第二數據庫驗證URL第一請求數據中訂單信息的有效性,如有效則繼續(xù)步驟4-2,否則執(zhí)行步驟4-3;本實施例中具體地,驗證URL第一請求數據中訂單信息的有效性具體為驗證所述訂單信息的格式和內容是否有效,例如,驗證訂單信息中包含的用戶名是否符合預設格式,驗證訂單信息中包含的手機號長度是否有效。步驟4-2 :第二數據庫接收URL第一請求數據中的訂單 信息,按照預先約定的順序將訂單信息中的用戶基本信息與第二密鑰拼接為一個數據串,并用此數據串采用預先約定的算法產生第二文摘。步驟4-3 :第二數據庫向第一數據庫返回一個請求響應Response。Response封裝了數據有效性驗證失敗的錯誤碼,跳轉執(zhí)行步驟I。例如,錯誤碼2000017表示缺少產品型號參數。步驟5 :第二數據庫比對第二文摘與第一文摘是否一致,是則執(zhí)行步驟7,否則執(zhí)行步驟6 ;步驟6 :第二數據庫向第一數據庫返回一個包含錯誤碼的請求響應Response。Response封裝了數據同步驗證失敗的錯誤碼,然后返回執(zhí)行步驟I ;例如,錯誤碼2000000表示驗簽文摘失敗。步驟7 :第二數據庫保存URL請求數據中的訂單信息到正式列表中;步驟8 :第二數據庫向第一數據庫發(fā)送包含同步成功編碼的請求響應;本實施例中具體地,第二數據庫保存訂單信息完成后向第一數據庫返回一個請求響應Response, Response封裝了數據同步成功的編碼。至此,第一數據庫與第二數據庫完成訂單信息中用戶基本信息的數據同步。步驟9 :第一數據庫接收第二數據庫的成功Response消息后,標記訂單信息生效。步驟10 :第二數據庫為正式列表中的訂單信息的產品序列號字段保存產品序列號;具體地,第二數據庫遍歷正式列表中的所有訂單信息,根據訂單信息中的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品,若檢索到則將檢索到的產品記錄中的產品序列號字段值保存至此訂單信息的序列號字段中;若未檢索到則第二數據庫向外發(fā)送保存產品序列號失敗的提醒。優(yōu)選的,還可以使用quartz調度器實現任務調度,設定調度的開始時間及調度的間隔時間,比如間隔24小時,具體實現方式為創(chuàng)建quartz作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器的參數,設置調度開始時間和調度間隔時間,例如,設置調度開始時間為am8:00,設置調度間隔時間為12小時,當監(jiān)測到系統時間達到調度開始時間時,啟動quartz調度器調度創(chuàng)建的quartz作業(yè),并將調度開始時間增加所述間隔時間作為下一次調度開始時間。本實施例中創(chuàng)建的quartz作業(yè)具體為自動遍歷正式列表中的所有訂單信息,根據訂單信息的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品記錄,將產品記錄中產品序列號字段值保存至此訂單信息中的產品序列號字段中。配套的優(yōu)先方案還有針對產品庫未出售(匹配)的存量預警使用quartz任務調度,即創(chuàng)建多個quartz作業(yè),所述quartz作業(yè)還包括第二數據庫查詢庫存表中剩余的庫存量,當檢索出庫存量少于預設的數值時,向產品中心人員發(fā)送郵箱及手機短信提醒。
步驟11 :第二數據庫接收產品發(fā)貨人員輸入的物流號和訂單號并保存至臨時列表中;具體地,第二數據庫接收到產品發(fā)貨人員輸入的物流號和訂單號,通過訂單號檢索訂單信息正式列表中有無此訂單號,如果有則將產品發(fā)貨人員輸入的物流號與訂單號保存至臨時列表中;如果訂單信息正式列表中無此訂單號,則繼續(xù)接收產品發(fā)貨人員輸入的下一條訂單號和物流號。本實施例中具體地,所述產品發(fā)貨人員為登錄到當前系統即第二數據庫的訂單操作人員,因此系統獲取物流號是在訂單操作人員登錄的狀態(tài)下完成的。臨時列表中所存的每條記錄的訂單號也確保了在正式列表中有對應的訂單號。進一步的,還可以設定第二數據庫使用quartz任務調度,實現第二數據庫每天定 時將訂單信息下載到產品發(fā)貨人員的郵箱或其它存儲空間,具體實現方式同步驟10所述,不同的是本步驟中創(chuàng)建并調用的quartz作業(yè)為下載訂單信息到產品發(fā)貨人員的郵箱或其他存儲空間。更進一步的,產品發(fā)貨人員不用登錄系統,只把每個訂單的物流號與訂單號保存到郵箱或其它存儲空間,第二數據庫使用quartz任務調度,設定調度的開始時間及調度的間隔時間,比如間隔24小時,則第二數據庫每天定時從產品發(fā)貨人員的郵箱或其它存儲空間讀取所有物流號及對應訂單號,第二數據庫通過訂單號檢索訂單信息正式列表中有無此訂單號,如果有則將讀取到的物流號與訂單號保存至臨時列表中,若在訂單信息正式列表中未檢索到訂單號的則不作保存。quartz任務調度的創(chuàng)建過程同步驟10所述,通過quartz任務調度器實現定時調用所創(chuàng)建的作業(yè),例如,可以實現第二數據庫每天早上8點自動將訂單信息下載到產品發(fā)貨人員指定的郵箱或存儲空間,每天晚上8點自動從所述指定的郵箱或存儲空間獲取訂單號與對應物流號。采用這種方式,產品發(fā)貨人員不需要登錄系統也可以獲取到訂單列表,在為訂單信息綁定物流號后也不需要登錄系統導入物流號,系統可以自動獲取到物流號,節(jié)省了人工登錄操作的步驟。步驟12 :第二數據庫根據臨時列表中的訂單號從正式列表中查詢出與之對應的
訂單信息。具體地,第二數據庫根據臨時列表中的訂單號在正式列表中檢索相同的訂單號,并將該訂單號所對應的訂單信息作為查找到的訂單信息。本步驟還可以是第二數據庫定時獲取臨時列表記錄,從中提取物流號和訂單號,并根據訂單號從正式列表中查詢出訂單信息。具體地,本步驟定時通過quartz任務調度實現,具體過程同步驟10所述,不同的是本步驟中,設置的間隔時間為24小時,創(chuàng)建并調用的quartz作業(yè)為獲取臨時列表記錄,從中提取物流號和訂單號,并根據訂單號從正式列表中查詢出訂單信息。本步驟包含即時與定時的二種方式,即時能夠保障第一時間獲取物流號后及時去同步至第一數據庫,定時能夠保障獲取物流號后能夠無遺漏的同步至第一數據庫。步驟13 :第二數據庫根據訂單信息中的用戶基本信息和產品序列號、臨時列表中的物流號以及第二密鑰產生第三文摘;具體地,將訂單信息中的用戶基本信息、產品序列號、物流號和第二密鑰按照預先約定的順序拼接為一個數據串,并對此數據串采用預先約定的算法產生第三文摘。
本實施例中優(yōu)選的,將訂單信息中的用戶基本信息、產品序列號、物流號和第二密鑰順序拼接成一個數據串,對該數據串采用MD5計算生成第三文摘,也可以與第一數據庫預先約定采用其他算法,如SHAl等算法。步驟14 :第二數據庫將訂單信息、物流號和第三文摘封裝成第二請求數據發(fā)送至第一數據庫;具體地,第二數據庫將訂單信息、物流號與第三文摘封裝為URL第二請求數據發(fā)送至第一數據庫。步驟15 :第一數據庫接收第二請求數據,從中獲取訂單信息、物流號和第三文摘,根據訂單信息中的用戶基本信息和產品序列號、接收到的物流號以及第一密鑰產生第四文摘;具體地,第一數據庫接收到URL第二請求數據,從中讀取到訂單信息、物流號和第三文摘,將訂單信息中的用戶基本信息和產品序列號、物流號和第一密鑰按預先約定的順·序拼接為一個數據串,采用預先約定的算法對該數據串進行加密產生第四文摘。優(yōu)選的,將訂單信息中的用戶基本信息和產品序列號、物流號和第一密鑰按先后順序拼接為一個數據串,用MD5算法對該數據串進行計算得到第四文摘。本實施例中具體地,步驟15中還包括驗證從URL第二請求數據中獲取的訂單信息的有效性,具體驗證過程同步驟4相同,在此不再贅述。步驟16 :第一數據庫比對第四文摘與第三文摘是否一致,是則執(zhí)行步驟18,否則執(zhí)行步驟17 ;步驟17 :第一數據庫向第二數據庫發(fā)送包含錯誤碼的請求響應;跳轉執(zhí)行步驟12 ;具體地第一數據庫向第二數據庫返回一個請求響應Response, Response封裝了數據同步失敗的錯誤碼;然后返回執(zhí)行步驟12 ;優(yōu)選的,還可以設置計數器記錄同步失敗的次數,當某個訂單連續(xù)3次同步數據失敗,向指定維護人員發(fā)送郵件或手機短信提醒。具體的計數器為同步失敗一次后保存I至此訂單的標識字段中,再次同步失敗后將2更新至此訂單的標識字段中,依次更新至3后發(fā)送郵件或手機短信提醒。步驟18 :第一數據庫將物流號保存到訂單信息的物流號字段,并將訂單信息更新至訂單信息表;步驟19 :第一數據庫向第二數據庫發(fā)送包含同步成功編碼的請求響應;具體地,第一數據庫向第二數據庫發(fā)送一個請求響應Response, Response封裝了數據同步成功的編碼;至此,第一數據庫和第二數據庫完成物流號的同步。用戶可以激活使用產品。步驟20 :第二數據庫將物流號保存到正式列表中訂單信息的物流號字段;優(yōu)選的,還可以設定第二數據庫使用quartz任務調度,設定調度的開始時間及調度的間隔時間,比如間隔24小時,實現第二數據庫每天檢索訂單信息正式列表是否有超過預定天數仍未綁定物流號的訂單信息,當監(jiān)測到滿足條件的訂單信息存在時,向指定的產品發(fā)貨人員郵箱或手機提醒發(fā)貨。步驟21 :第二數據庫將臨時列表中的該條訂單信息標記為已處理;
步驟22 :第二數據庫定時清除臨時列表中標記為已處理的訂單信息。具體地,本步驟通過quartz任務調度實現,具體過程同步驟10所述,不同的是本步驟中,設置的間隔時間為24小時,創(chuàng)建并調用的quartz作業(yè)為檢索訂單臨時表中標識為已處理的訂單信息記錄,將其刪除。實施例2如圖2所示,在實施例I的基礎上以數據同步過程中第二數據庫執(zhí)行的操作為例進行詳細描述,具體如下步驟201 :接收第一請求數據從中獲取訂單信息和第一文摘;例如,接收到的第一請求數據為URL請求數據,具體為http://IP:p ort/application/notify address=101103&amount=1024&area=lufu&buyer_alias=eb25cf0249971db8cf57c683efele5c2&city=sheng&country=china&input_charset=GBK&invoice_title=galenzhang&invoice_type=nornal&need_invoice=l&out_trade_no=20000005012011102498749808&partner=2000000501&phone=0755-12345667&product_mode1=1000l&prov=guang&recv_name=zhang&sign=E10ADC3949BA59ABBE56E057F20F883E&transaction_id=1212419701201112210078541998&zip_code=Tyi%23%2Bs%2B其中包含的第一文摘為E10ADC3949BA59ABBE56E057F20F883E,包含的訂單信息中的用戶基本信息有收件人所在國、收件人地址、收件人電話等。步驟202 :判斷訂單信息是否有效,是則執(zhí)行下一步,否則返回執(zhí)行步驟201 ;本實施例中,判斷訂單信息是否有效具體為驗證所述訂單信息的格式和/或內容是否有效,例如,驗證訂單信息中包含的用戶名是否符合預設格式,驗證訂單信息中包含的手機號長度是否有效。步驟203 :根據預存的第二密鑰和訂單信息中的用戶基本信息產生第二文摘;具體為將訂單信息中的用戶基本信息和第二密鑰順序拼接為一個數據串,并用MD5算法對此數據串進行加密產生第二文摘;所述第二密鑰是預先與同步數據庫協商的會話密鑰。本實施例中具體地,產生的第二文摘為E10ADC3949BA59ABBE56E057F20F883E。步驟204 :比對第二文摘和第一文摘是否一致,是則執(zhí)行下一步,否則返回執(zhí)行步驟 201 ;步驟205 :保存訂單信息到正式列表并向同步數據庫發(fā)送保存成功的提醒;例如,保存成功的提醒的數據包格式為ZrjXml version=" 1.0" encoding="gb2312" >
<root>
<retcode>0</retcode>
<retni sg> 成功 </retm 〈/root〉步驟206 :根據預先約定的規(guī)則為訂單信息匹配產品;本實施例中具體地,根據產品的分配標識及標號大小為訂單信息匹配產品,所述預先約定的規(guī)則為優(yōu)先選取分配標識為未分配且標號較小的產品為訂單信息分配。優(yōu)選的,還可以定時監(jiān)測是否有足夠的產品供匹配,實現方式為創(chuàng)建quartz作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器的參數,設置調度開始時間和調度間隔時間,例如,設置調度·開始時間為am7:00,設置調度間隔時間為24小時,當監(jiān)測到系統時間達到調度開始時間時,啟動quartz調度器調度創(chuàng)建的quartz作業(yè),并將調度開始時間增加所述間隔時間作為下一次調度開始時間。本實施例中創(chuàng)建的quartz作業(yè)具體為當監(jiān)測到可供匹配的產品個數少于預設個數時,向指定的員工郵箱發(fā)送提醒郵件或發(fā)送手機短信提醒。這樣可以保證數據的持續(xù)性。步驟207 :為正式列表中的訂單信息中的產品序列號字段保存產品序列號;具體地,第二數據庫庫遍歷正式列表中的所有訂單信息,根據訂單信息中包含的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品,若檢索到則將檢索到的產品對應的產品序列號保存至此訂單信息的序列號字段中,若未檢索到則向外發(fā)送保存產品序列號失敗的提醒。步驟208 :接收產品發(fā)貨人員輸入的為訂單信息綁定的物流號和訂單號,并將其保存在臨時列表中;步驟209 :獲取臨時列表,并從中提取物流號和訂單號,根據訂單號從正式列表中查詢出相應的訂單信息;步驟210 :根據訂單信息中的用戶基本信息和產品序列號,與物流號、第二密鑰產生第三文摘;本實施例中具體地,將訂單信息中的用戶基本信息和產品序列號、物流號和第二密鑰順序拼接為一個數據串,采用預先約定的MD5算法對該數據串進行加密生成第三文摘。步驟211 :將訂單信息、物流號和第三文摘封裝為第二請求數據并發(fā)送給同步數據庫;例如,向同步數據庫發(fā)送的第二請求數據為http://IP:port/application/not ify address=101103&amount = 1024&area=lufu&buyer_alias=eb25cf0249971db8cf57c683efele5c2&city=sheng&country=china&input_charset=GBK&invoice_title=galenzhang&invoice_type=nornal&need_invoice=l&out_trade_no=20000005012011102498749808&partner=2000000501&phone=0755-12345667&product_model=10001&prov=guang&recv_name=zhang&old_product_isn=1090123123&product_isn=1090123187&product_sn=FT010983&express_co=6168785922&sign=BC9ADBN7809W39A456ERE057F20MN89E&transaction_id=1212419701201112210078541998&zip_code=Tyi%23%2Bs%2B其中包含的第三文摘為BC9ADBN7809W39A456ERE057F20MN89E。包含的物流號為6168785922。步驟212 :等待接收同步數據庫返回的響應;步驟213 :判斷接收到的響應是否包含同步成功編碼,是則執(zhí)行下一步,否則返回執(zhí)行步驟209 ;接收到的包含同步成功編碼的響應為
、)xml version="I.O" encoding="gb2312" ><root><retcode>0</retcode><retm sg>ok </retin sg></root>步驟214 :將物流號保存在正式列表中訂單信息中的物流號字段;步驟215 :將訂單信息在臨時列表中標記為已處理;步驟216 :定時清除臨時列表中標記為已處理的訂單信息。實施例3在實施例I或2的基礎上,進一步的,訂單信息中的產品序列號字段具體包括舊產品序列號字段和新產品序列號字段。當有訂單需要更新時,在保證數據同步的情況下,如圖3所示,第二數據庫執(zhí)行的更新訂單操作具體如下步驟301 :收到要更新的訂單信息保存到正式列表中;本實施例中具體地,所述更新的訂單信息是有需要更新的訂單時,由用戶導入到正式列表中的。步驟302 :為正式列表中的要更新的訂單信息的產品序列號字段保存新產品序列號;具體地,在正式列表中根據更新訂單信息中包含的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品,將產品對應的序列號保存至此訂單信息的新產品序列號字段中。步驟303 :在正式列表中將原訂單信息中包含的產品序列號保存到要更新的訂單信息的舊產品序列號字段中;步驟304 :接收用戶為要更新的訂單信息輸入的物流號和訂單號并保存在臨時列表中。本實施例中,具體地,當有訂單需要更新時,是第二數據庫先收到要更新的訂單信息,并發(fā)送給第一數據庫實現訂單信息中的用戶基本信息的同步,之后的訂單信息中的產品序列號和物流號的同步與實施例I或2相同,在此不再贅述。 以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以權利要求的保護范圍為準。
權利要求
1.一種數據庫遠程同步的實現方法,其特征是包括 當第一數據庫接收到訂單信息時執(zhí)行步驟SI至步驟S4 ; 步驟SI :第一數據庫將接收到的訂單信息保存至訂單信息表,根據第一密鑰和所述訂單信息表中訂單信息中包含的用戶基本信息生成第一文摘,并向第二數據庫發(fā)送第一請求數據; 步驟S2 :所述第二數據庫從接收到的所述第一請求數據中獲取訂單信息和第一文摘,并根據第二密鑰和獲取到的所述訂單信息中包含的用戶基本信息生成第二文摘; 步驟S3 :所述第二數據庫比對所述第一文摘和所述第二文摘是否一致,是則執(zhí)行下一步,否則向所述第一數據庫返回包含錯誤碼的請求響應; 步驟S4 :所述第二數據庫將獲取到的所述訂單信息保存至正式列表中,并向所述第一數據庫發(fā)送包含同步成功編碼的請求響應; 所述步驟S4之后還包括步驟S5 :所述第二數據庫為正式列表中的訂單信息中包含的產品序列號字段保存產品序列號; 當第二數據庫接收到物流號和訂單號時,執(zhí)行步驟S6至步驟Sll ; 步驟S6 :所述第二數據庫將接收到的物流號和訂單號保存至臨時列表中,并根據所述訂單號從正式列表中查找到與之對應的訂單信息; 步驟S7 :所述第二數據庫根據第二密鑰、查找到的所述訂單信息中包含的用戶基本信息和產品序列號、臨時列表中的所述物流號生成第三文摘,并向所述第一數據庫發(fā)送第二請求數據; 步驟S8 :所述第一數據庫從接收到的所述第二請求數據中獲取訂單信息、物流號和第三文摘,并根據第一密鑰、所述物流號、所述訂單信息中包含的用戶基本信息和產品序列號生成第四文摘; 步驟S9 :所述第一數據庫比對所述第三文摘和所述第四文摘是否一致,是則執(zhí)行下一步,否則向所述第二數據庫發(fā)送包含錯誤碼的請求響應; 步驟SlO :所述第一數據庫為所述訂單信息表中的訂單信息的物流號字段保存所述物流號,并向所述第二數據庫發(fā)送包含同步成功編碼的請求響應; 步驟Sll :所述第二數據庫將所述物流號保存至正式列表中的所述訂單信息包含的物流號字段,并將臨時列表中的所述訂單信息刪除。
2.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述訂單信息中包含有用戶基本信息、訂單號、產品型號字段、產品序列號字段和物流號字段,所述產品序列號字段和物流號字段初始為空。
3.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述第一密鑰和所述第二密鑰是第一數據庫和第二數據庫預先協商的會話密鑰。
4.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述第一數據庫和所述第二數據庫中預存有根據時間命名的協商密鑰文件,所述步驟SI還包括,所述第一數據庫讀取當前系統時間,根據當前系統時間讀取相應的協商密鑰文件,從所述協商密鑰文件中獲取第一密鑰,所述步驟S2還包括,所述第二數據庫讀取當前系統時間,根據當前系統時間讀取相應的協商密鑰文件,從所述協商密鑰文件中獲取第二密鑰。
5.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是步驟SI所述第一數據庫根據第一密鑰和訂單信息表中訂單信息中包含的用戶基本信息生成第一文摘具體為所述第一數據庫將所述訂單信息中的用戶基本信息和所述第一密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第一文摘; 步驟S2所述根據第二密鑰和獲取到的所述訂單信息中包含的用戶基本信息生成第二文摘具體為將所述訂單信息中的用戶基本信息和第二密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第二文摘。
6.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S2還包括,所述第二數據庫驗證從所述第一請求數據中獲取的所述訂單信息的有效性的過程,所述步驟S8還包括,所述第一數據庫驗證從所述第二請求數據中獲取的所述訂單信息的有效性的過程;驗證所述訂單信息的有效性的過程具體為驗證所述訂單信息的格式和內容是否有效。
7.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S5具體為,所述第二數據庫根據所述訂單信息中包含的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品,將檢索到的產品記錄中的產品序列號字段值保存至所述訂單信息的產品序列號字段中。
8.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S5包 括,所述第二數據庫創(chuàng)建第一作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器參數,設置調度開始時間和調度間隔時間,當監(jiān)測到系統時間達到調度開始時間時,啟動任務調度器調度創(chuàng)建的作業(yè),并將調度開始時間增加所述調度間隔時間;所述創(chuàng)建的第一作業(yè)為自動遍歷正式列表中的所有訂單信息,根據訂單信息的產品型號字段要求檢索產品庫中符合條件的最優(yōu)匹配產品記錄,將產品記錄中產品序列號字段值保存至所述訂單信息的產品序列號字段中。
9.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S6包括,所述第二數據庫在正式列表中查找是否存在接收到的所述訂單號,是則將接收到的所述物流號和訂單號作為一條記錄保存至臨時列表中,否則不保存。
10.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S6包括,所述第二數據庫創(chuàng)建第二作業(yè)和第三作業(yè),創(chuàng)建觸發(fā)器并設置觸發(fā)器參數,設置第二調度開始時間、第三調度開始時間和調度間隔時間,當監(jiān)測到系統時間達到第二調度開始時間時,啟動任務調度器調度創(chuàng)建的第二作業(yè),并將第二調度開始時間增加所述調度間隔時間,當監(jiān)測到系統時間達到第三調度開始時間時,啟動任務調度器調度創(chuàng)建的第三作業(yè),并將第二調度開始時間增加所述調度間隔時間;所述第二作業(yè)為,將存放訂單信息的正式列表下載到指定存儲空間,所述第三作業(yè)為,從所述指定存儲空間獲取保存訂單號和物流號的臨時列表。
11.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是步驟S4所述向所述第一數據庫發(fā)送包含成功編碼的請求響應之后包括,所述第一數據庫接收到所述請求響應后,標記所述訂單信息生效。
12.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟Sll替換為所述第二數據庫將所述物流號保存至正式列表中的所述訂單信息包含的物流號字段,并將臨時列表中的所述訂單信息標記為已處理。
13.根據權利要求12所述的一種數據庫遠程同步的實現方法,其特征是所述方法還包括,當系統時間達到預設時間時,啟動任務調度器調度第四作業(yè),所述第四作業(yè)為檢索臨時表中標記為已處理的訂單信息并將其刪除。
14.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是所述步驟S4中當所述第二數據庫接收到要更新的訂單信息時包括,將所述要更新的訂單信息保存到正式列表中,所述要更新的訂單信息中的產品序列號字段包括舊產品序列號字段和新產品序列號字段;所述步驟S5具體為,為正式列表中的所述要更新的訂單信息的產品序列號字段保存新產品序列號,將被更新的訂單信息中包含的產品序列號保存到所述要更新的訂單信息的舊產品序列號字段中。
15.根據權利要求I所述的一種數據庫遠程同步的實現方法,其特征是步驟S7所述第二數據庫根據第二密鑰、查找到的所述訂單信息中包含的用戶基本信息和產品序列號、臨時列表中的所述物流號生成第三文摘具體為,所述第二數據庫將所述訂單信息中的用戶基本信息和產品序列號、臨時列表中的所述物流號以及第二密鑰按照預先約定的順序拼接為一個數據串,并對所述數據串采用預先約定的算法產生第三文摘; 步驟S8所述根據第一密鑰、所述物流號、所述訂單信息中包含的用戶基本信息和產品序列號生成第四文摘具體為,所述第一數據庫將所述訂單信息中的用戶基本信息和產品序列號、所述物流號以及所述第一密鑰按預先約定的順序拼接為一個數據串,采用預先約定的算法對所述數據串進行加密產生第四文摘。
全文摘要
本發(fā)明公開了一種數據庫遠程同步的實現方法,屬于信息處理領域。所述方法包括第一數據庫根據接收到訂單信息產生文摘網絡傳輸給第二數據庫,實現與第二數據庫的訂單信息的實時同步;以及第二數據庫根據接收到的訂單號和物流號更新訂單信息包含的內容,并根據更新后的訂單信息產生文摘網絡傳輸給第一數據庫,實現與第一數據庫的更新后的訂單信息的內容的實時同步。采用本發(fā)明提出的方法能夠有效避免遠程數據同步過程所帶來的風險,同時能保障數據同步不遺漏。
文檔編號H04L29/06GK102902812SQ20121040190
公開日2013年1月30日 申請日期2012年10月22日 優(yōu)先權日2012年10月22日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司