專利名稱:一種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)訪問對(duì)象即動(dòng)態(tài)DAO技木,尤其是Oracle批量數(shù)據(jù)處理,具體地說是ー種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法。
背景技術(shù):
QuickMDB是ー款內(nèi)存數(shù)據(jù)庫,數(shù)據(jù)存儲(chǔ)在共 享內(nèi)存中,同時(shí)還可以同步到Oracle等文件數(shù)據(jù)庫中。由于QuickMDB自身要求的高效性,決定了數(shù)據(jù)同步的速度也必須很高。通常對(duì)于Oracle數(shù)據(jù)的訪問,單條處理簡單方便,但是速度僅有幾百條/秒,顯然無法滿足性能方面的要求。Oracle提供了ー套批量處理數(shù)據(jù)的接ロ,可以把同步速度提升至幾千條/秒。
這種批量處理數(shù)據(jù)的方式,就是ArrayBound技術(shù),借此可以實(shí)現(xiàn)DAO即數(shù)據(jù)訪問對(duì)象。DAO方案中,如何把DAO應(yīng)用到同步邏輯中,最通常的做法是,對(duì)于某個(gè)特定的應(yīng)用,制定特定的DA0,優(yōu)點(diǎn)是量身定制,速度會(huì),使用簡單。缺點(diǎn)就是應(yīng)用一旦變化,DAO需要重新訂制。對(duì)于ー款內(nèi)存數(shù)據(jù)庫而言,事先無法知道應(yīng)用如何使用,無法提前訂制DA0,就必須尋找一套合適的方式,去動(dòng)態(tài)實(shí)現(xiàn)DA0。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)數(shù)據(jù)庫同步問題中,只能定制DA0,應(yīng)用一旦變化,DAO需要重新訂制的問題,提出ー種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法。動(dòng)態(tài)DAO技木,就是要解決目前DAO方案中,代碼與SQL綁定的弊端,通過動(dòng)態(tài)識(shí)別SQL和參數(shù),消除DAO的業(yè)務(wù)關(guān)聯(lián),實(shí)現(xiàn)系統(tǒng)的高度靈活性,降低模塊耦合度。本發(fā)明的技術(shù)方案是
ー種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法,它包括以下步驟
(a)、創(chuàng)建數(shù)據(jù)訪問對(duì)象即DAO對(duì)象,包括數(shù)據(jù)插入、更新和刪除;
(b)、設(shè)定連接的數(shù)據(jù)庫Oracle;
(C)、設(shè)置DAO對(duì)象對(duì)應(yīng)的結(jié)構(gòu)化查詢語句即SQL語句;
(d)、設(shè)置各SQL語句的相應(yīng)綁定參數(shù);
(e)、執(zhí)行動(dòng)態(tài)數(shù)據(jù)處理,接收數(shù)據(jù)操作指令,將數(shù)據(jù)操作指令保存至相應(yīng)DAO對(duì)象的緩存中;
(f)、判斷待處理的DAO對(duì)象是否需要繼續(xù)插入數(shù)據(jù)即接收數(shù)據(jù)操作指令,如果需要,則繼續(xù)把各指令的SQL語句的相應(yīng)參數(shù)插入到DAO對(duì)象為其分配的緩存中;否則,執(zhí)行數(shù)據(jù)fe作,并結(jié)束;
(g)、判斷DAO對(duì)象處理量即數(shù)據(jù)處理量是否已達(dá)到設(shè)定閾值,如果達(dá)到,則執(zhí)行批量操作,否則,返回步驟(e)。
本發(fā)明的步驟(d)中,各SQL語句的相應(yīng)綁定參數(shù)均包括參數(shù)名稱即SQL變量名、參數(shù)類型、參數(shù)長度、參數(shù)的目標(biāo)值和參數(shù)位置。本發(fā)明的有益效果
本發(fā)明實(shí)現(xiàn)動(dòng)態(tài)DAO技術(shù),解決目前DAO方案中,代碼與SQL綁定的弊端,通過動(dòng)態(tài)識(shí)別SQL和參數(shù),消除DAO的業(yè)務(wù)關(guān)聯(lián),實(shí)現(xiàn)系統(tǒng)的高度靈活性,降低模塊耦合度。本發(fā)明能夠把DAO的共性抽取出來,實(shí)際數(shù)據(jù)分成2種整數(shù)(long long)、字符串(char/varchar),復(fù)雜的BLOB并沒有出現(xiàn) ,這能夠有益于簡化代碼復(fù)雜度。對(duì)于ArrayBound技術(shù),本發(fā)明中通過設(shè)定的兩個(gè)參數(shù)實(shí)現(xiàn)I、DAO對(duì)應(yīng)的SQL ;2、需要綁定的參數(shù)。本發(fā)明通過動(dòng)態(tài)DAO技術(shù),大幅降低系統(tǒng)的改造升級(jí)成本,降低人力資源的投入,而且提聞系統(tǒng)的穩(wěn)定性。
圖I是本發(fā)明的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)ー步的說明。如圖I所示,ー種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法,它包括以下步驟
(a)、創(chuàng)建數(shù)據(jù)訪問對(duì)象即DAO對(duì)象,包括數(shù)據(jù)插入、更新和刪除;
(b)、設(shè)定連接的數(shù)據(jù)庫Oracle;
(C)、設(shè)置DAO對(duì)象對(duì)應(yīng)的結(jié)構(gòu)化查詢語句即SQL語句;
(d)、設(shè)置各SQL語句的相應(yīng)綁定參數(shù);包括參數(shù)名稱即SQL變量名、參數(shù)類型、參數(shù)長度、參數(shù)的目標(biāo)值和參數(shù)位置。(e)、執(zhí)行動(dòng)態(tài)數(shù)據(jù)處理,接收數(shù)據(jù)操作指令,將數(shù)據(jù)操作指令保存至相應(yīng)DAO對(duì)象的緩存中;
(f)、判斷待處理的DAO對(duì)象是否需要繼續(xù)插入數(shù)據(jù)即接收數(shù)據(jù)操作指令,如果需要,則繼續(xù)把各指令的SQL語句的相應(yīng)參數(shù)插入到DAO對(duì)象為其分配的緩存中;否則,執(zhí)行數(shù)據(jù)fe作,并結(jié)束;
(g)、判斷DAO對(duì)象處理量即數(shù)據(jù)處理量是否已達(dá)到設(shè)定閾值,如果達(dá)到,則執(zhí)行批量操作,否則,返回步驟(e)。具體實(shí)施時(shí)
1、首先設(shè)定連接的數(shù)據(jù)庫,調(diào)用如下接ロ
Void SetDBLink (TOraDBDatabase* pDBLink);
2、設(shè)置對(duì)應(yīng)的SQL語句,調(diào)用如下接ロ int SetSQL (const char* pszSQL);
3、依次把參數(shù)設(shè)置進(jìn)去,調(diào)用如下接ロ
int AddParameter(const TOCSDAOData & tData);4、開始數(shù)據(jù)插入,調(diào)用如下接ロ
Void StartAddRecord ();
5、插入整數(shù)或者字符串,,調(diào)用如下接ロ
Int AddRecordunt iPos,long long iValue);
Int AddRecord(int iPos, const char* pszValue);
6、結(jié)束數(shù)據(jù)插入,調(diào)用如下接ロ
Void EndAddRecordO ;
7、所有數(shù)據(jù)插入完畢,執(zhí)行批處理操 作,調(diào)用如下接ロ
Int Execute ();
本發(fā)明未涉及部分均與現(xiàn)有技術(shù)相同或可釆用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。
權(quán)利要求
1.一種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法,其特征是它包括以下步驟 (a)、創(chuàng)建數(shù)據(jù)訪問對(duì)象即DAO對(duì)象,包括數(shù)據(jù)插入、更新和刪除; (b)、設(shè)定連接的數(shù)據(jù)庫Oracle; (C)、設(shè)置DAO對(duì)象對(duì)應(yīng)的結(jié)構(gòu)化查詢語句即SQL語句; (d)、設(shè)置各SQL語句的相應(yīng)綁定參數(shù); (e)、執(zhí)行動(dòng)態(tài)數(shù)據(jù)處理,接收數(shù)據(jù)操作指令,將數(shù)據(jù)操作指令保存至相應(yīng)DAO對(duì)象的緩存中; (f)、判斷待處理的DAO對(duì)象是否需要繼續(xù)插入數(shù)據(jù)即接收數(shù)據(jù)操作指令,如果需要,則繼續(xù)把各指令的SQL語句的相應(yīng)參數(shù)插入到DAO對(duì)象為其分配的緩存中;否則,執(zhí)行數(shù)據(jù)fe作,并結(jié)束; (g)、判斷DAO對(duì)象處理量即數(shù)據(jù)處理量是否已達(dá)到設(shè)定閾值,如果達(dá)到,則執(zhí)行批量操作,否則,返回步驟(e)。
2.根據(jù)權(quán)利要求I所述的應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法,其特征是所述的步驟(d)中,各SQL語句的相應(yīng)綁定參數(shù)均包括參數(shù)名稱即SQL變量名、參數(shù)類型、參數(shù)長度、參數(shù)的目標(biāo)值和參數(shù)位置。
全文摘要
一種應(yīng)用于Oracle數(shù)據(jù)庫的動(dòng)態(tài)數(shù)據(jù)處理方法,它包括以下步驟創(chuàng)建數(shù)據(jù)訪問對(duì)象即DAO對(duì)象,包括數(shù)據(jù)插入、更新和刪除;設(shè)定連接的數(shù)據(jù)庫Oracle;設(shè)置DAO對(duì)象對(duì)應(yīng)的結(jié)構(gòu)化查詢語句即SQL語句;設(shè)置各SQL語句的相應(yīng)綁定參數(shù);執(zhí)行動(dòng)態(tài)數(shù)據(jù)處理,接收數(shù)據(jù)操作指令,將數(shù)據(jù)操作指令保存至相應(yīng)DAO對(duì)象的緩存中;判斷待處理的DAO對(duì)象是否需要繼續(xù)插入數(shù)據(jù),如果需要,則繼續(xù)把數(shù)據(jù)插入到DAO對(duì)象為其分配的緩存中;否則,執(zhí)行數(shù)據(jù)操作,并結(jié)束。本發(fā)明通過動(dòng)態(tài)DAO技術(shù),大幅降低系統(tǒng)的改造升級(jí)成本,降低人力資源的投入,而且提高系統(tǒng)的穩(wěn)定性。
文檔編號(hào)G06F17/30GK102819588SQ20121027690
公開日2012年12月12日 申請(qǐng)日期2012年8月6日 優(yōu)先權(quán)日2012年8月6日
發(fā)明者劉啟銓, 董春 申請(qǐng)人:南京中興軟創(chuàng)科技股份有限公司