改進的把數(shù)據(jù)寫入數(shù)據(jù)庫的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及從手持裝置把數(shù)據(jù)寫入數(shù)據(jù)庫的系統(tǒng)和方法,特別涉及利用內(nèi)存基的臨時存儲數(shù)據(jù)庫把數(shù)據(jù)采集裝置獲取的數(shù)據(jù)寫入數(shù)據(jù)庫的系統(tǒng)和方法。
【背景技術(shù)】
[0002]如圖1所示,在電商分揀中心,每天工作人員利用PDA處理大量訂單,訂單量常在100萬以上,并且每個訂單又會進行多次掃描操作,每一次的掃描都會把采集到的信息記錄到公司數(shù)據(jù)庫服務(wù)器上。
[0003]如果電商分揀中心PDA每次操作都要調(diào)用接口讀寫數(shù)據(jù)庫,服務(wù)器的磁盤讀寫速度受限,這會影響到現(xiàn)場操作人員工作效率。當分揀中心業(yè)務(wù)操作高峰期時,全網(wǎng)絡(luò)并發(fā)非常大,導致所有請求都在tomacat排隊等待。
[0004]根據(jù)現(xiàn)有技術(shù)的方法,在業(yè)務(wù)操作高峰期會導致服務(wù)排隊,反映在PDA中就是出現(xiàn)慢、卡、死機等現(xiàn)象,降低了用戶操作效率,影響了分揀中心現(xiàn)場運營。如果分揀中心員工每一次掃描訂單都會調(diào)用一次數(shù)據(jù)庫讀寫服務(wù),當存在很大并發(fā)時,服務(wù)器數(shù)據(jù)庫磁盤的1會迅速升高,這樣會降低了服務(wù)的質(zhì)量。
【發(fā)明內(nèi)容】
[0005]為了解決上述的問題,本發(fā)明利用臨時存儲裝置快速存儲用戶掃描的訂單數(shù)據(jù),再利用獨立的讀寫工作機以異步方式轉(zhuǎn)移臨時存儲裝置中的數(shù)據(jù),將數(shù)據(jù)最終寫入系統(tǒng)數(shù)據(jù)庫。這樣,根據(jù)本發(fā)明的方法,避免了員工每操作一次都要直接寫一次數(shù)據(jù)庫并等待響應,提高了效率和系統(tǒng)穩(wěn)定性。
[0006]根據(jù)本發(fā)明的一個方面,提供一種把數(shù)據(jù)寫入數(shù)據(jù)庫的系統(tǒng),包括:數(shù)據(jù)采集裝置、數(shù)據(jù)讀寫接口裝置、臨時存儲裝置、讀寫工作機和系統(tǒng)數(shù)據(jù)庫。其中所述數(shù)據(jù)采集裝置獲取數(shù)據(jù)并把獲取的數(shù)據(jù)發(fā)送給所述數(shù)據(jù)讀寫接口裝置,所述數(shù)據(jù)讀寫接口裝置接收所述數(shù)據(jù)并把接收的數(shù)據(jù)寫入所述臨時存儲裝置,所述讀寫工作機以異步方式讀取所述臨時存儲裝置內(nèi)的數(shù)據(jù),并且根據(jù)所讀取數(shù)據(jù)形成預定格式的數(shù)據(jù)記錄,然后把該數(shù)據(jù)記錄寫入所述系統(tǒng)數(shù)據(jù)庫。
[0007]根據(jù)本發(fā)明的另一方面,提供一種把用戶數(shù)據(jù)寫入數(shù)據(jù)庫的方法,包括:由數(shù)據(jù)采集裝置把所獲取的數(shù)據(jù)發(fā)送給數(shù)據(jù)讀寫接口裝置;所述數(shù)據(jù)讀寫接口裝置接收所述數(shù)據(jù),并且把該數(shù)據(jù)寫入臨時存儲裝置;由讀寫工作機以異步方式讀取所述臨時存儲裝置內(nèi)的數(shù)據(jù),并且根據(jù)所讀取的數(shù)據(jù)形成預定格式的數(shù)據(jù)記錄,然后把該數(shù)據(jù)記錄寫入所述系統(tǒng)數(shù)據(jù)庫。
[0008]根據(jù)本發(fā)明,所述臨時存儲裝置包括內(nèi)存基數(shù)據(jù)庫和備用數(shù)據(jù)庫,所述讀寫工作機包括第一工作機和第二工作機。其中,所述數(shù)據(jù)讀寫接口裝置把接收的數(shù)據(jù)首先寫入所述內(nèi)存基數(shù)據(jù)庫,當寫入不成功時,則把該數(shù)據(jù)寫入所述備用數(shù)據(jù)庫;其中,所述第一工作機以異步方式讀取所述內(nèi)存基數(shù)據(jù)庫的數(shù)據(jù),并且根據(jù)所讀取的數(shù)據(jù)形成所述預定格式的數(shù)據(jù)記錄,然后把該數(shù)據(jù)記錄寫入所述系統(tǒng)數(shù)據(jù)庫;其中,所述第二工作機以異步方式讀取所述備用數(shù)據(jù)庫中的數(shù)據(jù)并根據(jù)所讀取的數(shù)據(jù)形成所述預定格式的數(shù)據(jù)記錄,然后把該數(shù)據(jù)記錄寫入所述系統(tǒng)數(shù)據(jù)庫。
[0009]根據(jù)本發(fā)明的方法,還包括由所述臨時存儲裝置刪除其中已被所述讀寫工作機讀取并寫入所述系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)。
[0010]根據(jù)本發(fā)明,所述第一工作機和所述第二工作機都有多個實例,這些實例并行執(zhí)行。
[0011 ] 根據(jù)本發(fā)明,所述數(shù)據(jù)讀寫接口裝置是Web服務(wù)器。
[0012]根據(jù)本發(fā)明,所述內(nèi)存基數(shù)據(jù)庫是Redi s系統(tǒng)。
【附圖說明】
[0013]下面結(jié)合附圖的詳細說明將使本領(lǐng)域人員清楚明白地理解本發(fā)明。其中
[0014]圖1是本發(fā)明相關(guān)的現(xiàn)有技術(shù)的圖示;
[0015]圖2是根據(jù)本發(fā)明實施例的系統(tǒng)的組成示意框圖;
[0016]圖3是根據(jù)本發(fā)明的另一實施例的系統(tǒng)的組成示意框圖;
[0017]圖4a是根據(jù)本發(fā)明的數(shù)據(jù)采集裝置和數(shù)據(jù)讀寫接口裝置之間數(shù)據(jù)傳送的流程圖;
[0018]圖4b是數(shù)據(jù)讀寫接口裝置把接收的數(shù)據(jù)寫入內(nèi)存基數(shù)據(jù)庫或備用數(shù)據(jù)庫的過程;
[0019]圖4c是利用工作機把內(nèi)存基數(shù)據(jù)庫中的數(shù)據(jù)寫入系統(tǒng)數(shù)據(jù)庫的方法流程圖;以及
[0020]圖4d是利用工作機把備用數(shù)據(jù)庫中的數(shù)據(jù)寫入系統(tǒng)數(shù)據(jù)庫的方法流程圖。
【具體實施方式】
[0021]下面結(jié)合附圖詳細描述本發(fā)明的實施例。
[0022]圖2是根據(jù)本發(fā)明的實施例用于把數(shù)據(jù)采集裝置獲取的數(shù)據(jù)寫入系統(tǒng)數(shù)據(jù)庫的系統(tǒng)框圖。如圖2所示,本發(fā)明的系統(tǒng)包括:數(shù)據(jù)采集裝置101,數(shù)據(jù)讀寫接口裝置102,數(shù)據(jù)臨時存儲裝置103,讀寫工作機104,以及系統(tǒng)數(shù)據(jù)庫105。
[0023]數(shù)據(jù)采集裝置101用于獲取數(shù)據(jù),例如采集用戶訂單數(shù)據(jù)。本發(fā)明系統(tǒng)中的數(shù)據(jù)采集裝置可以是現(xiàn)有技術(shù)任何已知的或未來可預期的用于采集并傳輸數(shù)據(jù)的裝置,包括但不限于PDA、智能手機、筆記本計算機、平板電腦等。
[0024]數(shù)據(jù)采集裝置101把采集的數(shù)據(jù)發(fā)送給數(shù)據(jù)讀寫接口裝置102。數(shù)據(jù)讀寫接口裝置102在完成數(shù)據(jù)的寫入之后,可向數(shù)據(jù)采集裝置101返回響應。
[0025]數(shù)據(jù)讀寫接口裝置102接收數(shù)據(jù)采集裝置101發(fā)送的數(shù)據(jù),并且把該數(shù)據(jù)寫入臨時存儲裝置103。
[0026]數(shù)據(jù)讀寫接口裝置102可以是Web服務(wù)器,例如是Tomacat系統(tǒng)。
[0027]讀寫工作機104以異步處理方式讀取臨時存儲裝置103中臨時保存的數(shù)據(jù),并且把這些來自數(shù)據(jù)采集裝置的原始數(shù)據(jù)與其他數(shù)據(jù)整合以形成預定格式的數(shù)據(jù)記錄,然后把數(shù)據(jù)記錄寫入系統(tǒng)數(shù)據(jù)庫105。
[0028]臨時存儲裝置103可刪除已被讀取并寫入系統(tǒng)數(shù)據(jù)庫105的數(shù)據(jù)。
[0029]系統(tǒng)數(shù)據(jù)庫105用于最終存儲數(shù)據(jù)記錄。系統(tǒng)數(shù)據(jù)庫105可以是任何現(xiàn)有的商用數(shù)據(jù)庫系統(tǒng)或?qū)S脭?shù)據(jù)庫系統(tǒng)。
[0030]這里的“異步處理”是指用戶提交數(shù)據(jù)寫入請求后系統(tǒng)就返回成功標志,不進行任何的邏輯處理。而傳統(tǒng)的“同步處理”,在用戶提交請求后,后臺服務(wù)會查詢數(shù)據(jù)庫,查詢其他接口,調(diào)用邏輯,寫入數(shù)據(jù),然后才返回給用戶操作成功響應。用戶知道寫入操作完成,才可進行下一步動作。所以異步處理的操作會極大地減少用戶等待。
[0031]這里的異步處理方式,意味著讀寫工作機可以與數(shù)據(jù)讀寫接口裝置并行執(zhí)行數(shù)據(jù)處理。
[0032]圖3是根據(jù)本發(fā)明的另一實施例用于把數(shù)據(jù)采集裝置獲取的數(shù)據(jù)寫入系統(tǒng)數(shù)據(jù)庫的系統(tǒng)框圖。與圖2所示的系統(tǒng)相比,臨時存儲裝置又包括內(nèi)存基數(shù)據(jù)庫1031和備用數(shù)據(jù)庫1032,讀寫工作機104包括第一工作機1041和第二工作機1042。
[0033]數(shù)據(jù)讀寫接口裝置102把接收的數(shù)據(jù)傳送給內(nèi)存基數(shù)據(jù)庫103以試圖把數(shù)據(jù)寫入內(nèi)存基數(shù)據(jù)庫103。
[0034]數(shù)據(jù)讀寫接口裝置102接收來自內(nèi)存基數(shù)據(jù)庫1031的響應信息,并根據(jù)該響應信息判斷數(shù)據(jù)寫入是否成功。當響應信息指示向內(nèi)存基數(shù)據(jù)庫1031寫入數(shù)據(jù)失敗,則數(shù)據(jù)讀寫接口裝置102把該數(shù)據(jù)發(fā)送到備用數(shù)據(jù)庫1032而由備用數(shù)據(jù)庫1032臨時存儲。
[0035]內(nèi)存基數(shù)據(jù)庫1031是基于內(nèi)存的數(shù)據(jù)庫,例如是利用Redis實現(xiàn)的數(shù)據(jù)庫系統(tǒng),其處理效率可高于外存數(shù)據(jù)庫存儲的數(shù)百倍。
[0036]內(nèi)存基數(shù)據(jù)庫1031接收數(shù)據(jù)讀寫接口裝置102傳遞的數(shù)據(jù),寫入自己的存儲區(qū)中,并向數(shù)據(jù)讀寫接口裝置102返回響應,其中,當寫入成功時,返回成功響應,當寫入失敗時,返回失敗響應。
[0037]第一工作機1041以異步方式讀取內(nèi)存基數(shù)據(jù)庫1031的數(shù)據(jù),并且把該數(shù)據(jù)與其他數(shù)據(jù)整合以產(chǎn)生預定格式的數(shù)據(jù)記錄,然后把所產(chǎn)生的數(shù)據(jù)記錄寫入系統(tǒng)數(shù)據(jù)庫105。內(nèi)存基數(shù)據(jù)庫1031可刪除已被讀取并寫入系統(tǒng)數(shù)據(jù)庫105的數(shù)據(jù)。
[0038]第二工作機1042也以異步方式讀取備用數(shù)據(jù)庫1032中的數(shù)據(jù)并寫入系統(tǒng)數(shù)據(jù)庫105。這里使用備用數(shù)據(jù)庫的一個原因是為了在內(nèi)存基數(shù)據(jù)庫1031發(fā)生異常的情況下快速臨時保存采集的數(shù)據(jù),然后通過第二工作機1042以異步方式把采集的數(shù)據(jù)與其他數(shù)據(jù)整合并最終存儲到系統(tǒng)數(shù)據(jù)庫105。
[0039]備用數(shù)據(jù)庫1032可以實現(xiàn)成具有高可靠性的數(shù)據(jù)庫系統(tǒng),以保障寫入的成功。
[0040]根據(jù)本發(fā)明,還提供一種把用戶數(shù)據(jù)寫入系統(tǒng)數(shù)據(jù)庫的方法,包括:由數(shù)據(jù)采集裝置把所獲取的數(shù)據(jù)發(fā)送給數(shù)據(jù)讀寫接口裝置;所述數(shù)據(jù)讀寫接口裝置接收所述數(shù)據(jù),并且把該數(shù)據(jù)寫入臨時存儲裝置;由讀寫工作機以異步方式讀取所述臨時存儲裝置內(nèi)的數(shù)據(jù),并且根據(jù)所讀取的