一種訪問(wèn)數(shù)據(jù)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種訪問(wèn)數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的發(fā)展,云計(jì)算已經(jīng)逐步成為了業(yè)界的發(fā)展熱點(diǎn),云計(jì)算技術(shù)也逐 漸被應(yīng)用到教育、科學(xué)、文化、公安、政府、衛(wèi)生、高性能計(jì)算、電子商務(wù)、物聯(lián)網(wǎng)等多個(gè)領(lǐng)域, 隨之云計(jì)算服務(wù)平臺(tái)的使用量和活躍度也與日倶增,平臺(tái)業(yè)務(wù)數(shù)據(jù)量也爆發(fā)式激增。
[0003] 由于在云服務(wù)平臺(tái)中,數(shù)據(jù)采用單表存儲(chǔ)的方式,隨著數(shù)據(jù)量的不斷激增,一張數(shù) 據(jù)表中的記錄數(shù)量可能會(huì)達(dá)到上千萬(wàn)甚至到達(dá)億級(jí)別。當(dāng)外部需要訪問(wèn)數(shù)據(jù)表時(shí),可能需 要對(duì)當(dāng)前數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行檢索,由于該表中記錄數(shù)量太多,造成檢索量較大,數(shù)據(jù)庫(kù)訪 問(wèn)效率較低。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明提供了一種訪問(wèn)數(shù)據(jù)的方法及裝置,能夠提高訪問(wèn)效率。
[0005] -方面,本發(fā)明提供了一種訪問(wèn)數(shù)據(jù)的方法,包括:預(yù)先設(shè)置配置文件,所述配置 文件中保存有待分表的原表的信息;
[0006] Sl :獲取外部輸入的原表訪問(wèn)命令;
[0007] S2:判斷所述原表訪問(wèn)命令對(duì)應(yīng)的原表的信息是否保存在所述配置文件中,如果 是,則執(zhí)行步驟S3 ;
[0008] S3 :根據(jù)所述原表訪問(wèn)命令確定從所述原表拆分出的所有子表中的待訪問(wèn)子 表;
[0009] S4 :將所述原表訪問(wèn)命令的訪問(wèn)對(duì)象修改為所述待訪問(wèn)子表,獲得子表訪問(wèn)命 令;
[0010] S5 :根據(jù)所述子表訪問(wèn)命令,對(duì)所述待訪問(wèn)子表進(jìn)行訪問(wèn)。
[0011] 進(jìn)一步地,還包括:預(yù)先設(shè)置數(shù)據(jù)訪問(wèn)對(duì)象接口DAO接口對(duì)應(yīng)的攔截器;
[0012]所述Sl,包括:通過(guò)所述攔截器攔截所述DAO接口接收到的所述原表訪問(wèn)命令。
[0013] 進(jìn)一步地,所述預(yù)先設(shè)置攔截器,包括:預(yù)先將會(huì)話工廠SessionFactory的 entitylnterceptor屬性設(shè)置為指向所述攔截器,為所述DAO接口配置所述攔截器。
[0014] 進(jìn)一步地,還包括:預(yù)先設(shè)置分表策略;
[0015] 所述S3,包括:根據(jù)所述原表訪問(wèn)命令判斷所述待訪問(wèn)子表是否存在,如果是,則 執(zhí)行步驟S4,否則,根據(jù)所述分表策略和所述原表訪問(wèn)命令對(duì)所述原表進(jìn)行橫向分表,創(chuàng)建 所述待訪問(wèn)子表,執(zhí)行步驟S4。
[0016] 進(jìn)一步地,還包括:預(yù)先設(shè)置分表信息對(duì)應(yīng)關(guān)系表,所述分表信息對(duì)應(yīng)關(guān)系表中包 括:原表的信息、原表對(duì)應(yīng)的子表的信息;
[0017] 所述S3,包括:根據(jù)所述分表信息對(duì)應(yīng)關(guān)系表中的原表的信息和原表對(duì)應(yīng)的子表 的信息,以及所述原表訪問(wèn)命令,確定所述待訪問(wèn)子表。
[0018] 另一方面,本發(fā)明提供了一種訪問(wèn)數(shù)據(jù)的裝置,包括:
[0019] 第一設(shè)置單元,用于設(shè)置配置文件,所述配置文件中保存有待分表的原表的信 息;
[0020] 獲取單元,用于獲取外部輸入的原表訪問(wèn)命令;
[0021] 判斷單元,用于判斷所述原表訪問(wèn)命令對(duì)應(yīng)的原表的信息是否保存在所述配置文 件中,當(dāng)判斷結(jié)果為是時(shí),通知確定單元;
[0022] 所述確定單元,用于根據(jù)所述原表訪問(wèn)命令確定從所述原表拆分出的所有子表中 的待訪問(wèn)子表;
[0023] 命令生成單元,用于將所述原表訪問(wèn)命令的訪問(wèn)對(duì)象修改為所述待訪問(wèn)子表,獲 得子表訪問(wèn)命令;
[0024] 訪問(wèn)單元,用于根據(jù)所述子表訪問(wèn)命令,對(duì)所述待訪問(wèn)子表進(jìn)行訪問(wèn)。
[0025] 進(jìn)一步地,還包括:
[0026] 第二設(shè)置單元,用于設(shè)置數(shù)據(jù)訪問(wèn)對(duì)象接口DAO接口對(duì)應(yīng)的攔截器;
[0027] 所述獲取單元,用于通過(guò)所述攔截器攔截所述DAO接口接收到的所述原表訪問(wèn)命 令。
[0028] 進(jìn)一步地,所述第二設(shè)置單元,用于預(yù)先將會(huì)話工廠SessionFactory的 entitylnterceptor屬性設(shè)置為指向所述攔截器,為所述DAO接口配置所述攔截器。
[0029] 進(jìn)一步地,還包括:第三設(shè)置單元,用于設(shè)置分表策略;
[0030] 所述確定單元,用于根據(jù)所述原表訪問(wèn)命令判斷所述待訪問(wèn)子表是否存在,當(dāng)判 斷結(jié)果為是時(shí),通知所述命令生成單元,當(dāng)判斷結(jié)果為否時(shí),根據(jù)所述分表策略和所述原表 訪問(wèn)命令對(duì)所述原表進(jìn)行橫向分表,倉(cāng)Il建所述待訪問(wèn)子表,通知所述命令生成單元。
[0031] 進(jìn)一步地,還包括:第四設(shè)置單元,用于設(shè)置分表信息對(duì)應(yīng)關(guān)系表,所述分表信息 對(duì)應(yīng)關(guān)系表中包括:原表的信息、原表對(duì)應(yīng)的子表的信息;
[0032] 所述確定單元,用于根據(jù)所述分表信息對(duì)應(yīng)關(guān)系表中的原表的信息和原表對(duì)應(yīng)的 子表的信息,以及所述原表訪問(wèn)命令,確定所述待訪問(wèn)子表。
[0033] 本發(fā)明提供的一種訪問(wèn)數(shù)據(jù)的方法及裝置,獲取原表訪問(wèn)命令,當(dāng)該原表訪問(wèn)命 令要訪問(wèn)的原表在配置文件中時(shí),將原表訪問(wèn)命令轉(zhuǎn)化為子表訪問(wèn)命令,通過(guò)子表訪問(wèn)命 令訪問(wèn)對(duì)應(yīng)的子表,子表中的數(shù)據(jù)量比原表中的數(shù)據(jù)量少,減少了檢索數(shù)據(jù)的時(shí)間,提高了 訪問(wèn)效率。
【附圖說(shuō)明】
[0034] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明 的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù) 這些附圖獲得其他的附圖。
[0035]圖1是本發(fā)明一實(shí)施例提供的一種訪問(wèn)數(shù)據(jù)的方法的流程圖;
[0036]圖2是本發(fā)明一實(shí)施例提供的另一種訪問(wèn)數(shù)據(jù)的方法的流程圖;
[0037]圖3是本發(fā)明一實(shí)施例提供的一種訪問(wèn)數(shù)據(jù)的裝置的示意圖;
[0038]圖4是本發(fā)明一實(shí)施例提供的另一種訪問(wèn)數(shù)據(jù)的裝置的示意圖。
【具體實(shí)施方式】
[0039] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0040] 如圖1所示,本發(fā)明實(shí)施例提供了一種訪問(wèn)數(shù)據(jù)的方法,該方法可以包括以下步 驟:
[0041] SO :預(yù)先設(shè)置配置文件,所述配置文件中保存有待分表的原表的信息;
[0042] Sl :獲取外部輸入的原表訪問(wèn)命令;
[0043] S2:判斷所述原表訪問(wèn)命令對(duì)應(yīng)的原表的信息是否保存在所述配置文件中,如果 是,則執(zhí)行步驟S3 ;
[0044] S3 :根據(jù)所述原表訪問(wèn)命令確定待訪問(wèn)子表;
[0045] S4 :將所述原表訪問(wèn)命令的訪問(wèn)對(duì)象修改為所述待訪問(wèn)子表,得到子表訪問(wèn)命 令;
[0046] S5 :根據(jù)所述子表訪問(wèn)命令,對(duì)所述待訪問(wèn)子表進(jìn)行訪問(wèn)。
[0047] 本發(fā)明實(shí)施例提供的一種訪問(wèn)數(shù)據(jù)的方法,獲取原表訪問(wèn)命令,當(dāng)該原表訪問(wèn)命 令要訪問(wèn)的原表在配置文件中時(shí),將原表訪問(wèn)命令轉(zhuǎn)化為子表訪問(wèn)命令,通過(guò)子表訪問(wèn)命 令訪問(wèn)對(duì)應(yīng)的子表,子表中的數(shù)據(jù)量比原表中的數(shù)據(jù)量少,減少了檢索數(shù)據(jù)的時(shí)間,提高了 訪問(wèn)效率。
[0048] 其中,在步驟S2中,當(dāng)判斷結(jié)果為否時(shí),可以執(zhí)行:訪問(wèn)所述原表訪問(wèn)命令對(duì)應(yīng)的 原表,也可以結(jié)束當(dāng)前流程。
[0049]外部對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)命令需要通過(guò)DAO (Data Access Ob ject,數(shù)據(jù)訪問(wèn)對(duì) 象)接口傳遞給數(shù)據(jù)庫(kù),為了對(duì)訪問(wèn)數(shù)據(jù)庫(kù)的原表訪問(wèn)命令進(jìn)行修改,可以通過(guò)攔截器 (Interceptor)攔截DAO接口接收到的原表訪問(wèn)命令。在一種可能的實(shí)現(xiàn)方式中,該方法還 包括:預(yù)先設(shè)置DAO接口對(duì)應(yīng)的攔截器;所述Sl,包括:通過(guò)所述攔截器攔截所述DAO接口 接收到的所述原表訪問(wèn)命令。
[0050] 在DAO接口處添加攔截器可以通過(guò)設(shè)置entitylnterceptor屬性來(lái)實(shí)現(xiàn),具體地, 所述預(yù)先設(shè)置攔截器,包括:預(yù)先將SessionFactory(會(huì)話工廠)的entitylnterceptor屬 性設(shè)置為指向所述攔截器,為所述DAO接口配置所述攔截器。
[0051] 通過(guò)該方法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),無(wú)需對(duì)數(shù)據(jù)庫(kù)進(jìn)行較多的代碼修改,只需通過(guò) 設(shè)置entitylnterceptor屬性,并為DAO接口配置該攔截器即可實(shí)現(xiàn)對(duì)原始訪問(wèn)命令的獲 取。而上述的為所述DAO接口配置所述攔截器,可以通過(guò)將該攔截器的名稱寫(xiě)入到DAO類 中來(lái)實(shí)現(xiàn)。
[0052] 在確定待訪問(wèn)子表時(shí),可能數(shù)據(jù)庫(kù)中沒(méi)有該待訪問(wèn)子表,在這種情況下,需要建立 該待訪問(wèn)子表。用戶可以根據(jù)需要設(shè)置對(duì)原表的分表策略,例如:可以將當(dāng)前的原表按照月 份進(jìn)行分表,每個(gè)月份的數(shù)據(jù)存儲(chǔ)在一個(gè)子表中。具體地,在一種可能的實(shí)現(xiàn)方式中,該方 法還包括:預(yù)先設(shè)置分表策略。
[0053] 所述S3,包括:根據(jù)所述原表訪問(wèn)命令判斷所述待訪問(wèn)子表是否存在,如果是,則 執(zhí)行步驟S