欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)操作方法和裝置制造方法

文檔序號(hào):6632966閱讀:210來(lái)源:國(guó)知局
數(shù)據(jù)操作方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)操作方法和裝置,屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】。所述數(shù)據(jù)操作方法包括:接收數(shù)據(jù)操作請(qǐng)求;通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于系統(tǒng)需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了系統(tǒng)可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。
【專利說(shuō)明】 數(shù)據(jù)操作方法和裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種數(shù)據(jù)操作方法和裝置。

【背景技術(shù)】
[0002]企業(yè)級(jí)的Java開(kāi)發(fā)或者互聯(lián)網(wǎng)應(yīng)用都離不開(kāi)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)操作,數(shù)據(jù)操作包括數(shù)據(jù)插入、數(shù)據(jù)刪除、數(shù)據(jù)更新和數(shù)據(jù)查詢。
[0003]相關(guān)的一種數(shù)據(jù)操作方法包括:數(shù)據(jù)訪問(wèn)框架接收數(shù)據(jù)操作請(qǐng)求;提取數(shù)據(jù)操作請(qǐng)求中的實(shí)體對(duì)象,根據(jù)提取到的該實(shí)體對(duì)象生成數(shù)據(jù)操作語(yǔ)句;在各個(gè)數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句。比如,當(dāng)數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架在生成數(shù)據(jù)查詢語(yǔ)句之后,將在各個(gè)數(shù)據(jù)庫(kù)中查詢與數(shù)據(jù)查詢請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。
[0004]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)上述技術(shù)至少存在以下問(wèn)題:數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,數(shù)據(jù)訪問(wèn)框架對(duì)數(shù)據(jù)庫(kù)中的相關(guān)數(shù)據(jù)的數(shù)據(jù)操作效率較低。


【發(fā)明內(nèi)容】

[0005]為了解決現(xiàn)有技術(shù)中數(shù)據(jù)訪問(wèn)框架對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的數(shù)據(jù)操作效率較低的問(wèn)題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)操作方法和裝置。所述技術(shù)方案如下:
[0006]第一方面,提供了一種數(shù)據(jù)操作方法,所述方法包括:
[0007]接收數(shù)據(jù)操作請(qǐng)求;
[0008]通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0009]在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0010]可選地,所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),包括:
[0011]通過(guò)所述哈希算法計(jì)算所述數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值,所述指定信息是所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息;
[0012]根據(jù)所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引;
[0013]將計(jì)算得到的所述數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
[0014]可選地,各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào),所述根據(jù)所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引,包括:
[0015]獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù);
[0016]計(jì)算所述哈希值對(duì)所述總個(gè)數(shù)的模值;
[0017]根據(jù)計(jì)算得到的所述模值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0018]可選地,所述方法還包括:
[0019]根據(jù)所述數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與所述數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,所述預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)索引與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系;
[0020]根據(jù)所述數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的所述數(shù)據(jù)庫(kù)之間的連接。
[0021 ] 可選地,所述方法還包括:
[0022]對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池;
[0023]根據(jù)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建所述預(yù)設(shè)對(duì)應(yīng)關(guān)系;
[0024]緩存創(chuàng)建的所述預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0025]可選地,所述創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池,包括:
[0026]讀取所述數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息;
[0027]對(duì)于讀取到的每個(gè)配置信息,根據(jù)所述配置信息創(chuàng)建對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
[0028]可選地,所述在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,包括:
[0029]提取所述數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象,所述輸入對(duì)象包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和結(jié)構(gòu)化查詢語(yǔ)言SQL封裝對(duì)象中的至少一種,所述輸入對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的至少一項(xiàng)數(shù)據(jù);
[0030]根據(jù)提取到的所述輸入對(duì)象生成對(duì)應(yīng)于所述數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句;
[0031]根據(jù)所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0032]可選地,所述根據(jù)所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,包括:
[0033]當(dāng)所述數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),在所述數(shù)據(jù)庫(kù)中查詢與所述數(shù)據(jù)查詢語(yǔ)句對(duì)應(yīng)的數(shù)據(jù);
[0034]將查詢到的所述數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象;
[0035]返回封裝得到的所述鍵值對(duì)對(duì)象或者實(shí)體對(duì)象。
[0036]可選地,所述方法還包括:
[0037]當(dāng)所述數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),檢測(cè)緩存中是否包含所述數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù);
[0038]如果所述緩存中包含需要查詢的數(shù)據(jù),則獲取所述緩存中的所述數(shù)據(jù),返回獲取到的所述數(shù)據(jù);
[0039]如果所述緩存中不包含需要查詢的數(shù)據(jù),則觸發(fā)執(zhí)行所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟。
[0040]第二方面,提供了一種數(shù)據(jù)操作裝置,所述裝置包括:
[0041]請(qǐng)求接收模塊,用于接收數(shù)據(jù)操作請(qǐng)求;
[0042]數(shù)據(jù)庫(kù)確定模塊,用于通過(guò)哈希算法確定所述請(qǐng)求接收模塊接收到的所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0043]數(shù)據(jù)操作模塊,用于在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0044]可選地,所述數(shù)據(jù)庫(kù)確定模塊,包括:
[0045]哈希值計(jì)算單元,用于通過(guò)所述哈希算法計(jì)算所述數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值,所述指定信息是所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息;
[0046]數(shù)據(jù)庫(kù)索弓I計(jì)算單元,用于根據(jù)所述哈希值計(jì)算單元計(jì)算得到的所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引;
[0047]數(shù)據(jù)庫(kù)確定單元,用于將所述數(shù)據(jù)庫(kù)索弓I計(jì)算單元計(jì)算得到的所述數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
[0048]可選地,各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào),所述數(shù)據(jù)庫(kù)索引計(jì)算單元,包括:
[0049]個(gè)數(shù)獲取子單元,用于獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù);
[0050]模值計(jì)算子單元,用于計(jì)算所述哈希值對(duì)所述總個(gè)數(shù)的模值;
[0051 ] 數(shù)據(jù)庫(kù)索引計(jì)算子單元,用于根據(jù)所述模值計(jì)算子單元計(jì)算得到的所述模值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0052]可選地,所述裝置還包括:
[0053]連接池獲取模塊,用于根據(jù)所述數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與所述數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,所述預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)索引與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系;
[0054]連接創(chuàng)建模塊,用于根據(jù)所述連接池獲取模塊獲取到的所述數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的所述數(shù)據(jù)庫(kù)之間的連接。
[0055]可選地,所述裝置還包括:
[0056]連接池創(chuàng)建模塊,用于對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池;
[0057]對(duì)應(yīng)關(guān)系創(chuàng)建模塊,用于根據(jù)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建所述預(yù)設(shè)對(duì)應(yīng)關(guān)系;
[0058]對(duì)應(yīng)關(guān)系緩存模塊,用于緩存所述對(duì)應(yīng)關(guān)系創(chuàng)建模塊創(chuàng)建的所述預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0059]可選地,所述連接池創(chuàng)建模塊,包括:
[0060]信息讀取單元,用于讀取所述數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息;
[0061]連接池創(chuàng)建單元,用于對(duì)于所述信息讀取單元讀取到的每個(gè)配置信息,根據(jù)所述配置信息創(chuàng)建對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
[0062]可選地,所述數(shù)據(jù)操作模塊,包括:
[0063]對(duì)象提取單元,用于提取所述數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象,所述輸入對(duì)象包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和結(jié)構(gòu)化查詢語(yǔ)言SQL封裝對(duì)象中的至少一種,所述輸入對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的至少一項(xiàng)數(shù)據(jù);
[0064]操作語(yǔ)句生成單元,用于根據(jù)所述對(duì)象提取單元提取到的所述輸入對(duì)象生成對(duì)應(yīng)于所述數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句;
[0065]數(shù)據(jù)操作單元,用于根據(jù)所述操作語(yǔ)句生成單元生成的所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0066]可選地,所述數(shù)據(jù)操作單元,包括:
[0067]數(shù)據(jù)查詢子單元,用于在所述數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),在所述數(shù)據(jù)庫(kù)中查詢與所述數(shù)據(jù)查詢語(yǔ)句對(duì)應(yīng)的數(shù)據(jù);
[0068]數(shù)據(jù)封裝子單元,用于將所述數(shù)據(jù)查詢子單元查詢到的所述數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象;
[0069]對(duì)象返回子單元,用于返回所述數(shù)據(jù)封裝單元封裝得到的所述鍵值對(duì)對(duì)象或者實(shí)體對(duì)象。
[0070]可選地,所述裝置還包括:
[0071]數(shù)據(jù)檢測(cè)模塊,用于在所述數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),檢測(cè)緩存中是否包含所述數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù);
[0072]數(shù)據(jù)獲取模塊,用于在所述數(shù)據(jù)檢測(cè)模塊的檢測(cè)結(jié)果為所述緩存中包含需要查詢的數(shù)據(jù)時(shí),獲取所述緩存中的所述數(shù)據(jù),返回獲取到的所述數(shù)據(jù);
[0073]觸發(fā)模塊,用于在所述數(shù)據(jù)檢測(cè)模塊的檢測(cè)結(jié)果為所述緩存中不包含需要查詢的數(shù)據(jù)時(shí),觸發(fā)執(zhí)行所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟。
[0074]本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是:
[0075]通過(guò)在接收到數(shù)據(jù)操作請(qǐng)求之后,通過(guò)哈希算法確定該數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)而在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。

【專利附圖】

【附圖說(shuō)明】
[0076]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0077]圖1是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)操作方法的方法流程圖;
[0078]圖2A是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)操作方法的方法流程圖;
[0079]圖2B是本發(fā)明另一實(shí)施例提供的對(duì)本實(shí)施例和現(xiàn)有方案進(jìn)行性能測(cè)試時(shí)的測(cè)試結(jié)果對(duì)比圖;
[0080]圖2C是本發(fā)明另一實(shí)施例提供的對(duì)本實(shí)施例和現(xiàn)有方案進(jìn)行性能測(cè)試時(shí)的另一測(cè)試結(jié)果對(duì)比圖;
[0081]圖2D是本發(fā)明另一實(shí)施例提供的對(duì)于數(shù)據(jù)查詢請(qǐng)求的查詢流程框圖;
[0082]圖3是本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)操作裝置的結(jié)構(gòu)方框圖;
[0083]圖4是本發(fā)明另一實(shí)施例提供的數(shù)據(jù)操作裝置的結(jié)構(gòu)方框圖;
[0084]圖5是本發(fā)明一個(gè)實(shí)施例提供的服務(wù)器的結(jié)構(gòu)方框圖。

【具體實(shí)施方式】
[0085]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0086]為了便于理解,首先對(duì)各個(gè)實(shí)施例所涉及的名詞術(shù)語(yǔ)進(jìn)行簡(jiǎn)單介紹。
[0087]實(shí)體對(duì)象是指關(guān)系數(shù)據(jù)庫(kù)的一張數(shù)據(jù)表或一張主表和與之連接的幾張子表,這類似于簡(jiǎn)單的POJO (Plain Old Java Ob ject,簡(jiǎn)單的Java對(duì)象)。
[0088]鍵值對(duì)對(duì)象包括字段值和字段名,這類似于哈希表對(duì)象。
[0089]SQL (Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)封裝對(duì)象是指按照where條件集合、更新字段集合、分組以和排序中的至少一種進(jìn)行封裝的對(duì)象。其中where條件集合包括條件比較類型和條件連接符。
[0090]請(qǐng)參考圖1,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)操作方法的方法流程圖,如圖1所示,該數(shù)據(jù)操作方法包括:
[0091]步驟101,接收數(shù)據(jù)操作請(qǐng)求;
[0092]步驟102,通過(guò)哈希算法確定數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0093]步驟103,在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0094]綜上所述,本實(shí)施例提供的數(shù)據(jù)操作方法,通過(guò)在接收到數(shù)據(jù)操作請(qǐng)求之后,通過(guò)哈希算法確定該數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)而在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。
[0095]請(qǐng)參考圖2A,其示出了本發(fā)明另一實(shí)施例提供的數(shù)據(jù)操作方法的方法流程圖,如圖2A所示,該數(shù)據(jù)操作方法可以包括:
[0096]步驟201,接收數(shù)據(jù)操作請(qǐng)求;
[0097]本實(shí)施例以該數(shù)據(jù)操作方法用于數(shù)據(jù)訪問(wèn)框架中來(lái)舉例說(shuō)明。當(dāng)用戶需要對(duì)某一數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作時(shí),用戶可以發(fā)出數(shù)據(jù)操作請(qǐng)求。數(shù)據(jù)操作請(qǐng)求通過(guò)數(shù)據(jù)訪問(wèn)DAO (Data Access Object,數(shù)據(jù)訪問(wèn)對(duì)象)調(diào)用數(shù)據(jù)訪問(wèn)框架中的預(yù)定接口,相應(yīng)的數(shù)據(jù)訪問(wèn)框架可以通過(guò)預(yù)定接口接收該數(shù)據(jù)操作請(qǐng)求。
[0098]其中,預(yù)定接口是指與數(shù)據(jù)操作請(qǐng)求的類型匹配的接口。比如:
[0099]當(dāng)數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)插入請(qǐng)求時(shí),數(shù)據(jù)插入請(qǐng)求會(huì)調(diào)用數(shù)據(jù)訪問(wèn)框架中對(duì)應(yīng)于數(shù)據(jù)插入請(qǐng)求的數(shù)據(jù)插入接口,所以此時(shí)預(yù)定接口可以相應(yīng)的為數(shù)據(jù)插入接口 ;
[0100]當(dāng)數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)刪除請(qǐng)求時(shí),數(shù)據(jù)刪除請(qǐng)求會(huì)調(diào)用數(shù)據(jù)訪問(wèn)框架中對(duì)應(yīng)于數(shù)據(jù)刪除請(qǐng)求的數(shù)據(jù)刪除接口,所以此時(shí)預(yù)定接口可以相應(yīng)的為數(shù)據(jù)刪除接口 ;
[0101]當(dāng)數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)更新請(qǐng)求時(shí),數(shù)據(jù)更新請(qǐng)求會(huì)調(diào)用數(shù)據(jù)訪問(wèn)框架中對(duì)應(yīng)于數(shù)據(jù)更新請(qǐng)求的數(shù)據(jù)更新接口,所以此時(shí)預(yù)定接口可以相應(yīng)的為數(shù)據(jù)更新接口 ;
[0102]當(dāng)數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),數(shù)據(jù)查詢請(qǐng)求會(huì)調(diào)用數(shù)據(jù)訪問(wèn)框架中對(duì)應(yīng)于數(shù)據(jù)查詢請(qǐng)求的數(shù)據(jù)查詢接口,所以此時(shí)預(yù)定接口可以相應(yīng)的為數(shù)據(jù)查詢接口。
[0103]步驟202,通過(guò)哈希算法計(jì)算數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值;
[0104]數(shù)據(jù)訪問(wèn)框架接收到數(shù)據(jù)操作請(qǐng)求之后,數(shù)據(jù)訪問(wèn)框架可以提取數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息,通過(guò)哈希算法計(jì)算提取到的指定信息的哈希值。
[0105]其中,指定信息是數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息。該標(biāo)識(shí)信息用于唯一標(biāo)識(shí)該數(shù)據(jù)。比如,指定信息可以為數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的主鍵。
[0106]在實(shí)際實(shí)現(xiàn)時(shí),在數(shù)據(jù)訪問(wèn)框架提取到指定信息之后,數(shù)據(jù)訪問(wèn)框架可以調(diào)用哈希組件,然后通過(guò)哈希組件計(jì)算提取到的指定信息的哈希值。
[0107]比如,一個(gè)數(shù)據(jù)的主鍵為A123455,計(jì)算得到的哈希值為213646546548。
[0108]步驟203,根據(jù)哈希值計(jì)算數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引;
[0109]數(shù)據(jù)訪問(wèn)框架計(jì)算得到指定信息的哈希值之后,數(shù)據(jù)訪問(wèn)框架可以根據(jù)哈希值計(jì)算數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0110]在實(shí)際實(shí)現(xiàn)時(shí),本步驟可以包括:
[0111]第一,獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù);
[0112]數(shù)據(jù)訪問(wèn)框架可以獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù)。
[0113]其中,系統(tǒng)中的各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引可以為數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào)。比如,系統(tǒng)中共有5個(gè)數(shù)據(jù)庫(kù),則各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引可以依次為0、1、2、3和4。
[0114]第二,計(jì)算哈希值對(duì)總個(gè)數(shù)的模值;
[0115]計(jì)算哈希值213646546548對(duì)5的模值,得到模值為3。
[0116]第三,根據(jù)計(jì)算得到的模值計(jì)算數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0117]在數(shù)據(jù)訪問(wèn)框架計(jì)算得到模值之后,當(dāng)各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為從O開(kāi)始的各個(gè)數(shù)據(jù)庫(kù)編號(hào)時(shí),數(shù)據(jù)訪問(wèn)框架可以將計(jì)算得到的模值直接作為數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0118]比如,當(dāng)計(jì)算得到的模值為3時(shí),數(shù)據(jù)訪問(wèn)框架可以確定該數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為3 ;而當(dāng)計(jì)算得到的模值為O時(shí),數(shù)據(jù)訪問(wèn)框架可以確定數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為O。
[0119]當(dāng)各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為不是從O開(kāi)始編號(hào)的各個(gè)數(shù)據(jù)庫(kù)編號(hào)時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)計(jì)算得到的模值與數(shù)據(jù)庫(kù)索引之間的對(duì)應(yīng)關(guān)系查詢與計(jì)算得到的模值對(duì)應(yīng)的數(shù)據(jù)庫(kù)索引。
[0120]如,數(shù)據(jù)訪問(wèn)框架中的η個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引依次為m+l,m+2,…,m+n ;模值與數(shù)據(jù)庫(kù)索引之間的對(duì)應(yīng)關(guān)系為O對(duì)應(yīng)于m+n,I對(duì)應(yīng)于m+n-1,…,n_l對(duì)應(yīng)于m+1,則當(dāng)計(jì)算得到的模值為O時(shí),數(shù)據(jù)訪問(wèn)框架可以確定數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為m+n。其中,η大于等于2的整數(shù)。
[0121]需要說(shuō)明的是,本實(shí)施例只是以通過(guò)上述計(jì)算方法來(lái)根據(jù)哈希值計(jì)算數(shù)據(jù)庫(kù)索引為例,在實(shí)際實(shí)現(xiàn)時(shí),還可以通過(guò)其它可能的計(jì)算方法來(lái)根據(jù)哈希值計(jì)算數(shù)據(jù)庫(kù)索引,本實(shí)施例對(duì)此并不做限定。
[0122]步驟204,將計(jì)算得到的數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0123]步驟205,提取數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象;
[0124]在數(shù)據(jù)訪問(wèn)框架接收到數(shù)據(jù)操作請(qǐng)求之后,為了后續(xù)步驟的執(zhí)行,數(shù)據(jù)訪問(wèn)框架可以提取數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象。
[0125]其中,輸入對(duì)象可以包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和SQL封裝對(duì)象中的至少一種。SQL封裝對(duì)象是指按照where條件集合、更新字段集合、分組以和排序中的至少一種進(jìn)行封裝的對(duì)象。where條件集合包括條件比較類型和條件連接符。
[0126]步驟206,根據(jù)提取到的輸入對(duì)象生成對(duì)應(yīng)于數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句;
[0127]在數(shù)據(jù)訪問(wèn)框架提取到輸入對(duì)象之后,數(shù)據(jù)訪問(wèn)框架可以根據(jù)提取到的輸入對(duì)象生成對(duì)應(yīng)于該數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句。其中,數(shù)據(jù)操作語(yǔ)句可以為SQL語(yǔ)句,且本實(shí)施例以數(shù)據(jù)操作語(yǔ)句就為SQL語(yǔ)句來(lái)舉例說(shuō)明。
[0128]在實(shí)際實(shí)現(xiàn)時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)接收數(shù)據(jù)操作請(qǐng)求的接口來(lái)確定生成的數(shù)據(jù)操作語(yǔ)句的類型,然后再根據(jù)輸入對(duì)象生成確定類型的數(shù)據(jù)操作語(yǔ)句。數(shù)據(jù)操作語(yǔ)句的類型為數(shù)據(jù)插入語(yǔ)句、數(shù)據(jù)刪除語(yǔ)句、數(shù)據(jù)更新語(yǔ)句和數(shù)據(jù)查詢語(yǔ)句中的至少一種。
[0129]其中,數(shù)據(jù)訪問(wèn)框架根據(jù)接收數(shù)據(jù)操作請(qǐng)求的接口來(lái)確定生成的數(shù)據(jù)操作語(yǔ)句的類型的步驟可以包括:
[0130]當(dāng)數(shù)據(jù)操作請(qǐng)求為通過(guò)數(shù)據(jù)插入接口接收到的請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架確定的數(shù)據(jù)操作語(yǔ)句的類型為數(shù)據(jù)插入語(yǔ)句;
[0131]當(dāng)數(shù)據(jù)操作請(qǐng)求為通過(guò)數(shù)據(jù)刪除接口接收到的請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架確定的數(shù)據(jù)操作語(yǔ)句的類型為數(shù)據(jù)刪除語(yǔ)句;
[0132]當(dāng)數(shù)據(jù)操作請(qǐng)求為通過(guò)數(shù)據(jù)更新接口接收到的請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架確定的數(shù)據(jù)操作語(yǔ)句的類型為數(shù)據(jù)更新語(yǔ)句;
[0133]當(dāng)數(shù)據(jù)操作請(qǐng)求為通過(guò)數(shù)據(jù)查詢接口接收到的請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架確定的數(shù)據(jù)操作語(yǔ)句的類型為數(shù)據(jù)查詢語(yǔ)句。
[0134]數(shù)據(jù)訪問(wèn)框架確定數(shù)據(jù)操作語(yǔ)句的類型之后,數(shù)據(jù)訪問(wèn)框架可以根據(jù)輸入對(duì)象生成確定類型的數(shù)據(jù)操作語(yǔ)句。
[0135]比如,以數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)更新語(yǔ)句為例,當(dāng)提取到的輸入對(duì)象為SQL封裝對(duì)象時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)SQL封裝對(duì)象中的更新字段和where字段生成SQL更新語(yǔ)句;當(dāng)提取到的輸入對(duì)象為鍵值對(duì)對(duì)象時(shí),數(shù)據(jù)訪問(wèn)框架可以直接根據(jù)鍵值對(duì)對(duì)象中的字段名和字段值生成SQL更新語(yǔ)句;當(dāng)提取到的輸入對(duì)象為實(shí)體對(duì)象時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)實(shí)體對(duì)象生成SQL更新語(yǔ)句(這與Hibernate根據(jù)實(shí)體對(duì)象生成SQL更新語(yǔ)句的生成方法類似,本實(shí)施例在此不再贅述)。
[0136]需要說(shuō)明的一點(diǎn)是,當(dāng)SQL語(yǔ)句為帶參數(shù)的語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架可以生成帶有JDBC(Java Data Base Connectivity, java 數(shù)據(jù)庫(kù)連接)占位符的 SQL 語(yǔ)句。
[0137]需要說(shuō)明的另一點(diǎn)是,本實(shí)施例只是以步驟205在步驟203之后執(zhí)行為例,在實(shí)際實(shí)現(xiàn)時(shí),數(shù)據(jù)訪問(wèn)框架還可以同時(shí)執(zhí)行步驟203和步驟205,或者還可以先執(zhí)行步驟205后執(zhí)行步驟203,只需要保證步驟203和步驟205在步驟207之前執(zhí)行即可,本實(shí)施例對(duì)其實(shí)際執(zhí)行順序并不做限定。
[0138]步驟207,根據(jù)數(shù)據(jù)操作語(yǔ)句在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0139]在數(shù)據(jù)訪問(wèn)框架生成數(shù)據(jù)操作語(yǔ)句之后,數(shù)據(jù)訪問(wèn)框架可以在確定的數(shù)據(jù)庫(kù)中執(zhí)行生成的數(shù)據(jù)操作語(yǔ)句。且,當(dāng)數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架在數(shù)據(jù)庫(kù)中查詢到該數(shù)據(jù)查詢語(yǔ)句所需要查詢的數(shù)據(jù)之后,數(shù)據(jù)訪問(wèn)框架可以將查詢到的數(shù)據(jù)返回給用戶。
[0140]比如,當(dāng)SQL語(yǔ)句為插入語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架可以在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)插入;當(dāng)SQL語(yǔ)句為刪除語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架可以在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)刪除;當(dāng)SQL語(yǔ)句為更新語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架可以在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)更新;當(dāng)SQL語(yǔ)句為查詢語(yǔ)句時(shí),數(shù)據(jù)訪問(wèn)框架可以在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)查詢,并將查詢到的數(shù)據(jù)返回給用戶。
[0141]具體的,數(shù)據(jù)訪問(wèn)框架可以通過(guò)與數(shù)據(jù)庫(kù)之間的連接發(fā)送生成的數(shù)據(jù)操作語(yǔ)句至確定的數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器,服務(wù)器在該數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句。且,類似的,服務(wù)器查詢到對(duì)應(yīng)的數(shù)據(jù)之后,服務(wù)器可以返回查詢到的數(shù)據(jù)至數(shù)據(jù)訪問(wèn)框架,數(shù)據(jù)訪問(wèn)框架將接收到的數(shù)據(jù)返回給用戶。
[0142]為了將用戶請(qǐng)求查詢的數(shù)據(jù)以用戶希望的格式返回給用戶,在數(shù)據(jù)訪問(wèn)框架得到對(duì)應(yīng)的數(shù)據(jù)之后,數(shù)據(jù)訪問(wèn)框架可以對(duì)查詢到的數(shù)據(jù)進(jìn)行封裝,進(jìn)而將查詢到的數(shù)據(jù)封裝為用戶希望的鍵值對(duì)對(duì)象或者實(shí)體對(duì)象,返回封裝得到的鍵值對(duì)對(duì)象或者實(shí)體對(duì)象給用戶。
[0143]在實(shí)際實(shí)現(xiàn)時(shí),數(shù)據(jù)訪問(wèn)框架對(duì)查詢到的數(shù)據(jù)進(jìn)行封裝的步驟可以包括:
[0144]當(dāng)數(shù)據(jù)訪問(wèn)框架需要將數(shù)據(jù)封裝為鍵值對(duì)對(duì)象時(shí),數(shù)據(jù)訪問(wèn)框架可以獲取數(shù)據(jù)中的字段名,根據(jù)獲取到的字段名獲得對(duì)應(yīng)的字段值,然后將字段名和字段值同時(shí)作為鍵值對(duì)對(duì)象。
[0145]當(dāng)數(shù)據(jù)訪問(wèn)框架需要將數(shù)據(jù)封裝為實(shí)體對(duì)象時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)實(shí)體對(duì)象的注解映射到實(shí)體的Java對(duì)象字段,然后把查詢到的數(shù)據(jù)中的字段值填充給實(shí)體對(duì)象中的對(duì)應(yīng)字段,進(jìn)而最終得到封裝后的實(shí)體對(duì)象。
[0146]通過(guò)上述數(shù)據(jù)操作方法對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作的操作效率遠(yuǎn)高于現(xiàn)有的數(shù)據(jù)操作方法的操作效率。
[0147]具體的,以現(xiàn)有的數(shù)據(jù)操作方法為通過(guò)Hibernate來(lái)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作為例,在測(cè)試環(huán)境為 Inter (R) Core (TM) ?5-4570, CPU 為 §3.20GHZ 3.20HZ,內(nèi)存為 8.0OGB,64位XP系統(tǒng)中,且測(cè)試只針對(duì)了簡(jiǎn)單的CRUD操作,Hibernate涉及的查詢使用ORM (ObjectRelat1nal Mapping,對(duì)象關(guān)系映射)常用的QBC(Query By Criteria)方式,測(cè)試時(shí)一個(gè)物理事務(wù)只涉及一個(gè)數(shù)據(jù)庫(kù)事務(wù)時(shí),在對(duì)本實(shí)施例中的數(shù)據(jù)操作方法與通過(guò)Hibernate進(jìn)行數(shù)據(jù)操作的數(shù)據(jù)操作方法做了 5輪測(cè)試并求平均值后,測(cè)試結(jié)果可以參考圖2B。其中,縱軸為毫秒。
[0148]從圖2B可知,本實(shí)施例中提供的數(shù)據(jù)操作方法對(duì)數(shù)據(jù)的操作性能要遠(yuǎn)好于現(xiàn)有的通過(guò)Hibernate對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作的性能。且本實(shí)施例中的數(shù)據(jù)操作方法的查詢操作的所需的時(shí)間要大于自身的插入、刪除和更新操作。其原因是對(duì)于查詢操作來(lái)說(shuō),數(shù)據(jù)訪問(wèn)框架會(huì)對(duì)查詢到的數(shù)據(jù)進(jìn)行封裝,進(jìn)而將數(shù)據(jù)封裝為用戶希望的對(duì)象,所以在實(shí)際耗用了一定的時(shí)間。
[0149]另外,由于本實(shí)施例中的數(shù)據(jù)操作方法可以支持鍵值對(duì)對(duì)象,鍵值對(duì)對(duì)象以數(shù)據(jù)庫(kù)中字段名和字段值直接存入,不需要執(zhí)行反射映射數(shù)據(jù)庫(kù)字段;而現(xiàn)有的Hibernate只支持實(shí)體對(duì)象,且實(shí)體對(duì)象在實(shí)際實(shí)現(xiàn)時(shí)需要進(jìn)行反射映射數(shù)據(jù)庫(kù)字段,所以現(xiàn)有方案會(huì)帶來(lái)性能上的損失。
[0150]具體的,以測(cè)試環(huán)境為Inter(R)Core(TM) ?5-4570, CPU 為 @3.20GHZ3.20HZ,內(nèi)存為8.0OGB的64位XP系統(tǒng)為例,在對(duì)將一個(gè)帶Annotat1n的實(shí)體對(duì)象轉(zhuǎn)為換鍵值對(duì)對(duì)象進(jìn)行測(cè)試進(jìn)而查看性能損失時(shí),其測(cè)試結(jié)果可以參考圖2C。
[0151]從圖2C可知,在第一次測(cè)試時(shí),性能損失特別幾乎達(dá)到15ms,之后,由于JDK (JavaDevelopment Kit, Java語(yǔ)言的開(kāi)發(fā)工具包)對(duì)反射有緩存,性能損失在lms,但是仍然會(huì)存在一定的性能損失,所以本實(shí)施例通過(guò)使用鍵值對(duì)對(duì)象提高了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作的操作效率。
[0152]本實(shí)施例可以對(duì)掃描和初始化時(shí)的實(shí)體進(jìn)行通配,而無(wú)需對(duì)每個(gè)實(shí)體進(jìn)行--配置。并且,本實(shí)施例中的數(shù)據(jù)訪問(wèn)框架也可以對(duì)單獨(dú)的對(duì)象進(jìn)行配置,只需要配置實(shí)體的完成路徑即可,本實(shí)施例對(duì)此并不做限定。
[0153]綜上所述,本實(shí)施例提供的數(shù)據(jù)操作方法,通過(guò)在接收到數(shù)據(jù)操作請(qǐng)求之后,通過(guò)哈希算法確定該數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)而在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。
[0154]本實(shí)施例在支持實(shí)體對(duì)象的同時(shí),還支持鍵值對(duì)對(duì)象和SQL封裝對(duì)象,且由于鍵值對(duì)對(duì)象不需要進(jìn)行反射映射來(lái)確定數(shù)據(jù)庫(kù)字段,所以通過(guò)支持鍵值對(duì)對(duì)象提高了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作時(shí)的操作效率;同時(shí)由于SQL封裝對(duì)象是按照原生SQL(排序、分組、更新字段集合和where條件集合)的各組成部分進(jìn)行封裝,所以這對(duì)于熟悉SQL語(yǔ)言的開(kāi)發(fā)人員來(lái)說(shuō)比較好理解,學(xué)習(xí)成本較小。
[0155]需要補(bǔ)充說(shuō)明的第一點(diǎn)是,上述實(shí)施例只是以數(shù)據(jù)訪問(wèn)框架與數(shù)據(jù)庫(kù)已經(jīng)建立連接為例,在實(shí)際實(shí)現(xiàn)時(shí),當(dāng)數(shù)據(jù)訪問(wèn)框架與數(shù)據(jù)庫(kù)之間沒(méi)有建立連接時(shí),在步驟207之前,數(shù)據(jù)訪問(wèn)框架還可以執(zhí)行如下步驟:
[0156]第一,根據(jù)數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池;
[0157]當(dāng)數(shù)據(jù)訪問(wèn)框架計(jì)算得到數(shù)據(jù)庫(kù)索引時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與計(jì)算得到的數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池。其中,預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系。數(shù)據(jù)庫(kù)連接池中存儲(chǔ)有至少兩個(gè)數(shù)據(jù)連接。
[0158]第二,根據(jù)數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的數(shù)據(jù)庫(kù)之間的連接。
[0159]為了使得數(shù)據(jù)訪問(wèn)框架能夠在確定的數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)操作,數(shù)據(jù)訪問(wèn)框架可以從確定的數(shù)據(jù)庫(kù)連接池中選擇一個(gè)處于空閑狀態(tài)的數(shù)據(jù)連接,然后通過(guò)選擇的處于空閑狀態(tài)的數(shù)據(jù)連接建立與確定的數(shù)據(jù)庫(kù)之間的連接。之后,當(dāng)數(shù)據(jù)訪問(wèn)框架生成數(shù)據(jù)操作語(yǔ)句之后,數(shù)據(jù)訪問(wèn)框架即可通過(guò)創(chuàng)建的連接在數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0160]通過(guò)創(chuàng)建數(shù)據(jù)庫(kù)連接池,進(jìn)而在數(shù)據(jù)訪問(wèn)框架需要在數(shù)據(jù)庫(kù)中數(shù)據(jù)操作時(shí),數(shù)據(jù)訪問(wèn)框架可以直接調(diào)用數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接來(lái)創(chuàng)建與數(shù)據(jù)庫(kù)之間的連接,而無(wú)需再新建一個(gè)數(shù)據(jù)連接,縮短了與數(shù)據(jù)庫(kù)創(chuàng)建連接的時(shí)間,提高了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作時(shí)的操作效率。
[0161]需要補(bǔ)充說(shuō)明的第二點(diǎn)是,在執(zhí)行上述第一個(gè)步驟之前,數(shù)據(jù)訪問(wèn)框架還可以執(zhí)行如下步驟:
[0162](I)、對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池;
[0163]對(duì)于系統(tǒng)中的每個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)訪問(wèn)框架可以創(chuàng)建每個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。在實(shí)際實(shí)現(xiàn)時(shí),本步驟可以包括:
[0164]A、讀取數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息;
[0165]數(shù)據(jù)訪問(wèn)框架可以讀取各個(gè)數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)配置信息。具體的,數(shù)據(jù)訪問(wèn)框架可以讀取各個(gè)服務(wù)器的數(shù)據(jù)庫(kù)配置,將讀取到的數(shù)據(jù)庫(kù)配置作為配置信息。
[0166]B、對(duì)于讀取到的每個(gè)配置信息,根據(jù)配置信息創(chuàng)建對(duì)應(yīng)于數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
[0167]對(duì)于讀取到的每個(gè)配置信息,數(shù)據(jù)訪問(wèn)框架可以根據(jù)配置信息創(chuàng)建對(duì)應(yīng)于數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。在實(shí)際實(shí)現(xiàn)時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)配置信息創(chuàng)建對(duì)應(yīng)個(gè)數(shù)的數(shù)據(jù)連接,將創(chuàng)建的數(shù)據(jù)連接緩存在數(shù)據(jù)庫(kù)連接池中。
[0168](2)、根據(jù)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建預(yù)設(shè)對(duì)應(yīng)關(guān)系;
[0169]在數(shù)據(jù)訪問(wèn)框架創(chuàng)建各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池之后,數(shù)據(jù)訪問(wèn)框架可以建立數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引與創(chuàng)建的該數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系,將建立的對(duì)應(yīng)關(guān)系作為預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0170](3)、緩存創(chuàng)建的預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0171]為了后續(xù)步驟的執(zhí)行,數(shù)據(jù)訪問(wèn)框架創(chuàng)建預(yù)設(shè)對(duì)應(yīng)關(guān)系之后,數(shù)據(jù)訪問(wèn)框架可以緩存創(chuàng)建的預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0172]需要補(bǔ)充說(shuō)明的第三點(diǎn)是,由于數(shù)據(jù)訪問(wèn)框架可以在緩存中緩存數(shù)據(jù),所以為了提高數(shù)據(jù)查詢效率,在接收到的數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),數(shù)據(jù)訪問(wèn)框架在確定數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù)之前,數(shù)據(jù)訪問(wèn)框架還可以執(zhí)行如下步驟:
[0173]第一,檢測(cè)緩存中是否包含數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù);
[0174]數(shù)據(jù)訪問(wèn)框架可以檢測(cè)緩存中是否包含數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù)。在實(shí)際實(shí)現(xiàn)時(shí),數(shù)據(jù)訪問(wèn)框架可以根據(jù)數(shù)據(jù)查詢請(qǐng)求中攜帶的數(shù)據(jù)的標(biāo)識(shí)信息檢測(cè)緩存中是否存在具有相同標(biāo)識(shí)信息的數(shù)據(jù),如果存在具有相同標(biāo)識(shí)信息的數(shù)據(jù),則判定緩存中存在包含數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù),反之則不存在。
[0175]第二,如果緩存中包含需要查詢的數(shù)據(jù),則獲取緩存中的數(shù)據(jù),返回獲取到的數(shù)據(jù)。
[0176]當(dāng)數(shù)據(jù)訪問(wèn)框架的檢測(cè)結(jié)果為緩存中包含需要查詢的數(shù)據(jù)時(shí),數(shù)據(jù)訪問(wèn)框架可以獲取緩存中緩存的數(shù)據(jù),然后將獲取到的數(shù)據(jù)直接返回給用戶,此后流程結(jié)束。
[0177]而如果數(shù)據(jù)訪問(wèn)框架的檢測(cè)結(jié)果為緩存中不包含需要查詢的數(shù)據(jù),則此時(shí)數(shù)據(jù)訪問(wèn)框架可以觸發(fā)執(zhí)行通過(guò)哈希算法確定數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟,進(jìn)而從對(duì)應(yīng)的數(shù)據(jù)庫(kù)中查詢需要的數(shù)據(jù),本實(shí)施例在此不再贅述。
[0178]在一個(gè)應(yīng)用場(chǎng)景中,以數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求為例,請(qǐng)參考圖2D,用戶發(fā)出的數(shù)據(jù)查詢請(qǐng)求通過(guò)數(shù)據(jù)訪問(wèn)DAO調(diào)用數(shù)據(jù)訪問(wèn)框架中,數(shù)據(jù)訪問(wèn)框架通過(guò)核心組件接收數(shù)據(jù)查詢請(qǐng)求。在接收到數(shù)據(jù)查詢請(qǐng)求之后,在緩存中檢測(cè)是否存在數(shù)據(jù)查詢請(qǐng)求所需要查詢的數(shù)據(jù),如果緩存中存在需要查詢的數(shù)據(jù),則數(shù)據(jù)訪問(wèn)框架將緩存中的數(shù)據(jù)返回給用戶;而如果不存在需要查詢的數(shù)據(jù),則數(shù)據(jù)訪問(wèn)框架通過(guò)哈希組件計(jì)算數(shù)據(jù)查詢請(qǐng)求中攜帶的指定信息的哈希值,并根據(jù)哈希值確定數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù)索引。數(shù)據(jù)訪問(wèn)框架根據(jù)計(jì)算得到的數(shù)據(jù)庫(kù)索引確定對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,從數(shù)據(jù)庫(kù)連接池中選擇數(shù)據(jù)連接。數(shù)據(jù)訪問(wèn)框架根據(jù)數(shù)據(jù)查詢請(qǐng)求中攜帶的輸入對(duì)象生成SQL查詢語(yǔ)句,通過(guò)選擇的數(shù)據(jù)連接以及JDBC接口進(jìn)而發(fā)送生成的SQL查詢語(yǔ)句至數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器,服務(wù)器查詢到對(duì)應(yīng)的數(shù)據(jù)之后,返回查詢到的數(shù)據(jù)至數(shù)據(jù)訪問(wèn)框架。數(shù)據(jù)訪問(wèn)框架將接收到的數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象,并將封裝后的鍵值對(duì)對(duì)象或者實(shí)體對(duì)象返回給用戶。
[0179]請(qǐng)參考圖3,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)操作裝置的結(jié)構(gòu)方框圖,如圖3所示,該數(shù)據(jù)操作裝置可以包括:請(qǐng)求接收模塊310、數(shù)據(jù)庫(kù)確定模塊320和數(shù)據(jù)操作模塊330 ;
[0180]請(qǐng)求接收模塊310,用于接收數(shù)據(jù)操作請(qǐng)求;
[0181]數(shù)據(jù)庫(kù)確定模塊320,用于通過(guò)哈希算法確定所述請(qǐng)求接收模塊310接收到的所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0182]數(shù)據(jù)操作模塊330,用于在所述數(shù)據(jù)庫(kù)確定模塊320確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0183]綜上所述,本實(shí)施例提供的數(shù)據(jù)操作裝置,通過(guò)在接收到數(shù)據(jù)操作請(qǐng)求之后,通過(guò)哈希算法確定該數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)而在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。
[0184]請(qǐng)參考圖4,其示出了本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)操作裝置的結(jié)構(gòu)方框圖,如圖4所示,該數(shù)據(jù)操作裝置可以包括:請(qǐng)求接收模塊410、數(shù)據(jù)庫(kù)確定模塊420和數(shù)據(jù)操作模塊430 ;
[0185]請(qǐng)求接收模塊410,用于接收數(shù)據(jù)操作請(qǐng)求;
[0186]數(shù)據(jù)庫(kù)確定模塊420,用于通過(guò)哈希算法確定所述請(qǐng)求接收模塊410接收到的所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù);
[0187]數(shù)據(jù)操作模塊430,用于在所述數(shù)據(jù)庫(kù)確定模塊420確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0188]可選地,所述數(shù)據(jù)庫(kù)確定模塊420,包括:
[0189]哈希值計(jì)算單元421,用于通過(guò)所述哈希算法計(jì)算所述數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值,所述指定信息是所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息;
[0190]數(shù)據(jù)庫(kù)索引計(jì)算單元422,用于根據(jù)所述哈希值計(jì)算單元421計(jì)算得到的所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引;
[0191]數(shù)據(jù)庫(kù)確定單元423,用于將所述數(shù)據(jù)庫(kù)索引計(jì)算單元422計(jì)算得到的所述數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
[0192]可選地,各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào),所述數(shù)據(jù)庫(kù)索引計(jì)算單元422,包括:
[0193]個(gè)數(shù)獲取子單元422a,用于獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù);
[0194]模值計(jì)算子單元422b,用于計(jì)算所述哈希值對(duì)所述總個(gè)數(shù)的模值;
[0195]數(shù)據(jù)庫(kù)索引計(jì)算子單元422c,用于根據(jù)所述模值計(jì)算子單元422b計(jì)算得到的所述模值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
[0196]可選地,所述裝置還包括:
[0197]連接池獲取模塊440,用于根據(jù)所述數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與所述數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,所述預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)索引與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系;
[0198]連接創(chuàng)建模塊450,用于根據(jù)所述連接池獲取模塊440獲取到的所述數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的所述數(shù)據(jù)庫(kù)之間的連接。
[0199]可選地,所述裝置還包括:
[0200]連接池創(chuàng)建模塊460,用于對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池;
[0201]對(duì)應(yīng)關(guān)系創(chuàng)建模塊470,用于根據(jù)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建所述預(yù)設(shè)對(duì)應(yīng)關(guān)系;
[0202]對(duì)應(yīng)關(guān)系緩存模塊480,用于緩存所述對(duì)應(yīng)關(guān)系創(chuàng)建模塊470創(chuàng)建的所述預(yù)設(shè)對(duì)應(yīng)關(guān)系。
[0203]可選地,所述連接池創(chuàng)建模塊460,包括:
[0204]信息讀取單元461,用于讀取所述數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息;
[0205]連接池創(chuàng)建單元462,用于對(duì)于所述信息讀取單元461讀取到的每個(gè)配置信息,根據(jù)所述配置信息創(chuàng)建對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
[0206]可選地,所述數(shù)據(jù)操作模塊430,包括:
[0207]對(duì)象提取單元431,用于提取所述數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象,所述輸入對(duì)象包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和結(jié)構(gòu)化查詢語(yǔ)言SQL封裝對(duì)象中的至少一種,所述輸入對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的至少一項(xiàng)數(shù)據(jù);
[0208]操作語(yǔ)句生成單元432,用于根據(jù)所述對(duì)象提取單元431提取到的所述輸入對(duì)象生成對(duì)應(yīng)于所述數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句;
[0209]數(shù)據(jù)操作單元433,用于根據(jù)所述操作語(yǔ)句生成單元432生成的所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
[0210]可選地,所述數(shù)據(jù)操作單元433,包括:
[0211]數(shù)據(jù)查詢子單元433a,用于在所述數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),在所述數(shù)據(jù)庫(kù)中查詢與所述數(shù)據(jù)查詢語(yǔ)句對(duì)應(yīng)的數(shù)據(jù);
[0212]數(shù)據(jù)封裝子單元433b,用于將所述數(shù)據(jù)查詢子單元433a查詢到的所述數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象;
[0213]對(duì)象返回子單元433c,用于返回所述數(shù)據(jù)封裝單元433b封裝得到的所述鍵值對(duì)對(duì)象或者實(shí)體對(duì)象。
[0214]可選地,所述裝置還包括:
[0215]數(shù)據(jù)檢測(cè)模塊490,用于在所述數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),檢測(cè)緩存中是否包含所述數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù);
[0216]數(shù)據(jù)獲取模塊4901,用于在所述數(shù)據(jù)檢測(cè)模塊490的檢測(cè)結(jié)果為所述緩存中包含需要查詢的數(shù)據(jù)時(shí),獲取所述緩存中的所述數(shù)據(jù),返回獲取到的所述數(shù)據(jù);
[0217]觸發(fā)模塊4902,用于在所述數(shù)據(jù)檢測(cè)模塊490的檢測(cè)結(jié)果為所述緩存中不包含需要查詢的數(shù)據(jù)時(shí),觸發(fā)執(zhí)行所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟。
[0218]綜上所述,本實(shí)施例提供的數(shù)據(jù)操作裝置,通過(guò)在接收到數(shù)據(jù)操作請(qǐng)求之后,通過(guò)哈希算法確定該數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),進(jìn)而在確定的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作;解決了現(xiàn)有技術(shù)中由于數(shù)據(jù)訪問(wèn)框架需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作語(yǔ)句,也即需要在所有數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,而引起的數(shù)據(jù)操作效率較低的問(wèn)題;達(dá)到了可以只在確定的與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,縮小了數(shù)據(jù)操作的范圍,進(jìn)而提高數(shù)據(jù)操作的效率的效果。
[0219]本實(shí)施例在支持實(shí)體對(duì)象的同時(shí),還支持鍵值對(duì)對(duì)象和SQL封裝對(duì)象,且由于鍵值對(duì)對(duì)象不需要進(jìn)行反射映射來(lái)確定數(shù)據(jù)庫(kù)字段,所以通過(guò)支持鍵值對(duì)對(duì)象提高了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作時(shí)的操作效率;同時(shí)由于SQL封裝對(duì)象是按照原生SQL(排序、分組、更新字段集合和where條件集合)的各組成部分進(jìn)行封裝,所以這對(duì)于熟悉SQL語(yǔ)言的開(kāi)發(fā)人員來(lái)說(shuō)比較好理解,學(xué)習(xí)成本較小。
[0220]通過(guò)創(chuàng)建數(shù)據(jù)庫(kù)連接池,進(jìn)而在數(shù)據(jù)訪問(wèn)框架需要在數(shù)據(jù)庫(kù)中數(shù)據(jù)操作時(shí),數(shù)據(jù)訪問(wèn)框架可以直接調(diào)用數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接來(lái)創(chuàng)建與數(shù)據(jù)庫(kù)之間的連接,而無(wú)需再新建一個(gè)數(shù)據(jù)連接,縮短了與數(shù)據(jù)庫(kù)創(chuàng)建連接的時(shí)間,提高了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作時(shí)的操作效率。
[0221]需要說(shuō)明的是:上述實(shí)施例提供的數(shù)據(jù)操作裝置在進(jìn)行數(shù)據(jù)操作時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的數(shù)據(jù)操作裝置與數(shù)據(jù)操作方法的方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)方法實(shí)施例,這里不再贅述。
[0222]請(qǐng)參考圖5,其示出了本發(fā)明一個(gè)實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖。所述服務(wù)器500包括中央處理單元(CPU) 501、包括隨機(jī)存取存儲(chǔ)器(RAM) 502和只讀存儲(chǔ)器(ROM) 503的存儲(chǔ)器504,以及連接存儲(chǔ)器504和中央處理單元501的系統(tǒng)總線505。
[0223]根據(jù)本發(fā)明的各種實(shí)施例,所述服務(wù)器500還可以通過(guò)諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即服務(wù)器500可以通過(guò)連接在所述系統(tǒng)總線505上的網(wǎng)絡(luò)接口單元506連接到網(wǎng)絡(luò)507,或者說(shuō),也可以使用網(wǎng)絡(luò)接口單元506來(lái)連接到其他類型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。
[0224]所述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,所述一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的數(shù)據(jù)操作方法的指令。
[0225]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0226]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
[0227]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)操作方法,其特征在于,所述方法包括: 接收數(shù)據(jù)操作請(qǐng)求; 通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù); 在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù),包括: 通過(guò)所述哈希算法計(jì)算所述數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值,所述指定信息是所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息; 根據(jù)所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引; 將計(jì)算得到的所述數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào),所述根據(jù)所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索弓I,包括: 獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù); 計(jì)算所述哈希值對(duì)所述總個(gè)數(shù)的模值; 根據(jù)計(jì)算得到的所述模值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 根據(jù)所述數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與所述數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,所述預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)索引與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系; 根據(jù)所述數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的所述數(shù)據(jù)庫(kù)之間的連接。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池; 根據(jù)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建所述預(yù)設(shè)對(duì)應(yīng)關(guān)系; 緩存創(chuàng)建的所述預(yù)設(shè)對(duì)應(yīng)關(guān)系。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池,包括: 讀取所述數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息; 對(duì)于讀取到的每個(gè)配置信息,根據(jù)所述配置信息創(chuàng)建對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
7.根據(jù)權(quán)利要求1至6任一所述的方法,其特征在于,所述在確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,包括: 提取所述數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象,所述輸入對(duì)象包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和結(jié)構(gòu)化查詢語(yǔ)言SQL封裝對(duì)象中的至少一種,所述輸入對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的至少一項(xiàng)數(shù)據(jù); 根據(jù)提取到的所述輸入對(duì)象生成對(duì)應(yīng)于所述數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句; 根據(jù)所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作,包括: 當(dāng)所述數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),在所述數(shù)據(jù)庫(kù)中查詢與所述數(shù)據(jù)查詢語(yǔ)句對(duì)應(yīng)的數(shù)據(jù); 將查詢到的所述數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象; 返回封裝得到的所述鍵值對(duì)對(duì)象或者實(shí)體對(duì)象。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)所述數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),檢測(cè)緩存中是否包含所述數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù); 如果所述緩存中包含需要查詢的數(shù)據(jù),則獲取所述緩存中的所述數(shù)據(jù),返回獲取到的所述數(shù)據(jù); 如果所述緩存中不包含需要查詢的數(shù)據(jù),則觸發(fā)執(zhí)行所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟。
10.一種數(shù)據(jù)操作裝置,其特征在于,所述裝置包括: 請(qǐng)求接收模塊,用于接收數(shù)據(jù)操作請(qǐng)求; 數(shù)據(jù)庫(kù)確定模塊,用于通過(guò)哈希算法確定所述請(qǐng)求接收模塊接收到的所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)庫(kù); 數(shù)據(jù)操作模塊,用于在所述數(shù)據(jù)庫(kù)確定模塊確定的所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述數(shù)據(jù)庫(kù)確定模塊,包括: 哈希值計(jì)算單元,用于通過(guò)所述哈希算法計(jì)算所述數(shù)據(jù)操作請(qǐng)求中攜帶的指定信息的哈希值,所述指定信息是所述數(shù)據(jù)操作請(qǐng)求所要操作的數(shù)據(jù)的標(biāo)識(shí)信息; 數(shù)據(jù)庫(kù)索弓I計(jì)算單元,用于根據(jù)所述哈希值計(jì)算單元計(jì)算得到的所述哈希值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引; 數(shù)據(jù)庫(kù)確定單元,用于將所述數(shù)據(jù)庫(kù)索引計(jì)算單元計(jì)算得到的所述數(shù)據(jù)庫(kù)索引所對(duì)應(yīng)的數(shù)據(jù)庫(kù)確定為所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,各個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引為所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)編號(hào),所述數(shù)據(jù)庫(kù)索引計(jì)算單元,包括: 個(gè)數(shù)獲取子單元,用于獲取系統(tǒng)中的數(shù)據(jù)庫(kù)的總個(gè)數(shù); 模值計(jì)算子單元,用于計(jì)算所述哈希值對(duì)所述總個(gè)數(shù)的模值; 數(shù)據(jù)庫(kù)索引計(jì)算子單元,用于根據(jù)所述模值計(jì)算子單元計(jì)算得到的所述模值計(jì)算所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括: 連接池獲取模塊,用于根據(jù)所述數(shù)據(jù)庫(kù)索引以及預(yù)設(shè)對(duì)應(yīng)關(guān)系查詢與所述數(shù)據(jù)庫(kù)索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接池,所述預(yù)設(shè)對(duì)應(yīng)關(guān)系包括不同數(shù)據(jù)庫(kù)索引與不同數(shù)據(jù)庫(kù)連接池之間的對(duì)應(yīng)關(guān)系; 連接創(chuàng)建模塊,用于根據(jù)所述連接池獲取模塊獲取到的所述數(shù)據(jù)庫(kù)連接池中的數(shù)據(jù)連接創(chuàng)建與確定的所述數(shù)據(jù)庫(kù)之間的連接。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括: 連接池創(chuàng)建模塊,用于對(duì)于每個(gè)數(shù)據(jù)庫(kù),創(chuàng)建所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池; 對(duì)應(yīng)關(guān)系創(chuàng)建模塊,用于根據(jù)所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)索引以及所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池創(chuàng)建所述預(yù)設(shè)對(duì)應(yīng)關(guān)系; 對(duì)應(yīng)關(guān)系緩存模塊,用于緩存所述對(duì)應(yīng)關(guān)系創(chuàng)建模塊創(chuàng)建的所述預(yù)設(shè)對(duì)應(yīng)關(guān)系。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述連接池創(chuàng)建模塊,包括: 信息讀取單元,用于讀取所述數(shù)據(jù)庫(kù)所對(duì)應(yīng)的服務(wù)器節(jié)點(diǎn)的配置信息; 連接池創(chuàng)建單元,用于對(duì)于所述信息讀取單元讀取到的每個(gè)配置信息,根據(jù)所述配置信息創(chuàng)建對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)連接池。
16.根據(jù)權(quán)利要求10至15任一所述的裝置,其特征在于,所述數(shù)據(jù)操作模塊,包括: 對(duì)象提取單元,用于提取所述數(shù)據(jù)操作請(qǐng)求中攜帶的輸入對(duì)象,所述輸入對(duì)象包括實(shí)體對(duì)象、鍵值對(duì)對(duì)象和結(jié)構(gòu)化查詢語(yǔ)言SQL封裝對(duì)象中的至少一種,所述輸入對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的至少一項(xiàng)數(shù)據(jù); 操作語(yǔ)句生成單元,用于根據(jù)所述對(duì)象提取單元提取到的所述輸入對(duì)象生成對(duì)應(yīng)于所述數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)操作語(yǔ)句; 數(shù)據(jù)操作單元,用于根據(jù)所述操作語(yǔ)句生成單元生成的所述數(shù)據(jù)操作語(yǔ)句在所述數(shù)據(jù)庫(kù)中執(zhí)行數(shù)據(jù)操作。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述數(shù)據(jù)操作單元,包括: 數(shù)據(jù)查詢子單元,用于在所述數(shù)據(jù)操作語(yǔ)句為數(shù)據(jù)查詢語(yǔ)句時(shí),在所述數(shù)據(jù)庫(kù)中查詢與所述數(shù)據(jù)查詢語(yǔ)句對(duì)應(yīng)的數(shù)據(jù); 數(shù)據(jù)封裝子單元,用于將所述數(shù)據(jù)查詢子單元查詢到的所述數(shù)據(jù)封裝為鍵值對(duì)對(duì)象或者實(shí)體對(duì)象;對(duì)象返回子單元,用于返回所述數(shù)據(jù)封裝單元封裝得到的所述鍵值對(duì)對(duì)象或者實(shí)體對(duì)象。
18.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括: 數(shù)據(jù)檢測(cè)模塊,用于在所述數(shù)據(jù)操作請(qǐng)求為數(shù)據(jù)查詢請(qǐng)求時(shí),檢測(cè)緩存中是否包含所述數(shù)據(jù)查詢請(qǐng)求需要查詢的數(shù)據(jù); 數(shù)據(jù)獲取模塊,用于在所述數(shù)據(jù)檢測(cè)模塊的檢測(cè)結(jié)果為所述緩存中包含需要查詢的數(shù)據(jù)時(shí),獲取所述緩存中的所述數(shù)據(jù),返回獲取到的所述數(shù)據(jù); 觸發(fā)模塊,用于在所述數(shù)據(jù)檢測(cè)模塊的檢測(cè)結(jié)果為所述緩存中不包含需要查詢的數(shù)據(jù)時(shí),觸發(fā)執(zhí)行所述通過(guò)哈希算法確定所述數(shù)據(jù)操作請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù)庫(kù)的步驟。
【文檔編號(hào)】G06F17/30GK104408073SQ201410608883
【公開(kāi)日】2015年3月11日 申請(qǐng)日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】吳戴林, 匡凌軒, 陳高昌 申請(qǐng)人:廣州華多網(wǎng)絡(luò)科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
珠海市| 商丘市| 巴东县| 莆田市| 阿勒泰市| 洪泽县| 民勤县| 莒南县| 通河县| 延长县| 襄樊市| 山东| 富平县| 柘荣县| 睢宁县| 淮北市| 石泉县| 陵川县| 青海省| 龙里县| 昌吉市| 友谊县| 康平县| 永济市| 江川县| 克什克腾旗| 湖南省| 彭水| 出国| 许昌县| 临汾市| 鄂伦春自治旗| 五华县| 偏关县| 南宁市| 苍山县| 阿城市| 汉寿县| 天镇县| 杂多县| 白银市|