數(shù)據(jù)的存儲方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)的存儲方法及裝置。
【背景技術(shù)】
[0002] 隨著現(xiàn)在網(wǎng)絡(luò)的迅速發(fā)展,越來越多的人開始使用網(wǎng)絡(luò)業(yè)務(wù)。用戶在使用網(wǎng)絡(luò)業(yè) 務(wù)時(shí),通常會對網(wǎng)絡(luò)業(yè)務(wù)中相關(guān)數(shù)據(jù)進(jìn)行查詢。例如,用戶在玩一個(gè)網(wǎng)絡(luò)游戲,若某一時(shí)刻 該用戶需要獲知另一個(gè)用戶的游戲數(shù)據(jù),此時(shí),該用戶會通過游戲提供的接口對另一個(gè)用 戶的游戲數(shù)據(jù)進(jìn)行查詢。由于數(shù)據(jù)的存儲方式直接影響數(shù)據(jù)的查詢過程,因此,如何對數(shù)據(jù) 進(jìn)行存儲是提高數(shù)據(jù)查詢效率的關(guān)鍵。
[0003]相關(guān)技術(shù)中提供了一種數(shù)據(jù)的存儲方法,在該方法中,數(shù)據(jù)以數(shù)據(jù)表的形式存儲 在數(shù)據(jù)庫中,由后臺守護(hù)進(jìn)程將數(shù)據(jù)庫數(shù)據(jù)加載到業(yè)務(wù)服務(wù)器的共享內(nèi)存中進(jìn)行存儲。若 數(shù)據(jù)庫數(shù)據(jù)存在更新,需要將數(shù)據(jù)庫中新的數(shù)據(jù)表數(shù)據(jù)或者列數(shù)據(jù)加載到共享內(nèi)存中時(shí), 通過修改守護(hù)進(jìn)程的代碼,由修改代碼后的守護(hù)進(jìn)程將更新的數(shù)據(jù)加載到共享內(nèi)存中進(jìn)行 存儲,后續(xù)通過訪問共享內(nèi)存對數(shù)據(jù)進(jìn)行查詢。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)上述方法至少存在以下問題:
[0005]當(dāng)數(shù)據(jù)量太大時(shí),共享內(nèi)存將無法裝入所有數(shù)據(jù),導(dǎo)致存儲結(jié)構(gòu)擴(kuò)展性較差;另 外,由于在將更新的數(shù)據(jù)加載到共享內(nèi)存中進(jìn)行存儲時(shí),需要對守護(hù)進(jìn)程的代碼進(jìn)行修改, 而代碼修改過程比較繁瑣,每次加載更新的數(shù)據(jù)都需要對代碼進(jìn)行修改,使得存儲更新的 數(shù)據(jù)的過程比較繁瑣,延時(shí)較長,共享內(nèi)存中數(shù)據(jù)的可拓展性較差,導(dǎo)致存儲數(shù)據(jù)的效率較 低。
【發(fā)明內(nèi)容】
[0006] 為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)的存儲方法。所述技術(shù) 方案如下:
[0007] -方面,提供了一種數(shù)據(jù)的存儲方法,所述方法包括:
[0008]根據(jù)配置文件確定至少一條數(shù)據(jù)獲取指令,所述配置文件用于對第一數(shù)據(jù)庫中存 儲的每張數(shù)據(jù)表以及每張數(shù)據(jù)表下的每一列數(shù)據(jù)的屬性進(jìn)行描述,每張數(shù)據(jù)表對應(yīng)一條數(shù) 據(jù)獲取指令;
[0009]根據(jù)每條數(shù)據(jù)獲取指令從所述第一數(shù)據(jù)庫中獲取每張數(shù)據(jù)表下的至少一條第一 數(shù)據(jù),并確定每條第一數(shù)據(jù)對應(yīng)的鍵值以及每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù),所述第二數(shù)據(jù) 由所述第一數(shù)據(jù)及所述第一數(shù)據(jù)中非空數(shù)據(jù)的數(shù)量構(gòu)成;
[0010] 對每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)進(jìn)行存儲,得到第二 數(shù)據(jù)庫。
[0011] 另一方面,提供了 一種數(shù)據(jù)的存儲裝置,所述裝置包括:
[0012] 第一確定模塊,用于根據(jù)配置文件確定至少一條數(shù)據(jù)獲取指令,所述配置文件用 于對第一數(shù)據(jù)庫中存儲的每張數(shù)據(jù)表以及每張數(shù)據(jù)表下的每一列數(shù)據(jù)的屬性進(jìn)行描述,每 張數(shù)據(jù)表對應(yīng)一條數(shù)據(jù)獲取指令;
[0013] 第一獲取模塊,用于根據(jù)每條數(shù)據(jù)獲取指令從所述第一數(shù)據(jù)庫中獲取每張數(shù)據(jù)表 下的至少一條第一數(shù)據(jù);
[0014] 第二確定模塊,用于確定每條第一數(shù)據(jù)對應(yīng)的鍵值以及每條第一數(shù)據(jù)對應(yīng)的第二 數(shù)據(jù),所述第二數(shù)據(jù)由所述第一數(shù)據(jù)及所述第一數(shù)據(jù)中非空數(shù)據(jù)的數(shù)量構(gòu)成;
[0015] 存儲模塊,用于對每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)進(jìn)行 存儲,得到第二數(shù)據(jù)庫。
[0016] 本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0017] 通過配置文件確定至少一條數(shù)據(jù)獲取指令,根據(jù)每條數(shù)據(jù)獲取指令從第一數(shù)據(jù)庫 中獲取每張數(shù)據(jù)表下的至少一條第一數(shù)據(jù),確定每條第一數(shù)據(jù)對應(yīng)的鍵值以及每條第一數(shù) 據(jù)對應(yīng)的第二數(shù)據(jù),對每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)進(jìn)行存 儲。由于配置文件具有可拓展性,當(dāng)需要加載更新的數(shù)據(jù)時(shí)拓展配置文件即可,使得存儲數(shù) 據(jù)的過程比較簡單,存儲數(shù)據(jù)時(shí)的可拓展性較佳,因此,存儲數(shù)據(jù)的效率較高。
【附圖說明】
[0018] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0019] 圖1是本發(fā)明實(shí)施例一提供的數(shù)據(jù)的存儲方法流程圖;
[0020] 圖2是本發(fā)明實(shí)施例二提供的數(shù)據(jù)的存儲方法流程圖;
[0021] 圖3是本發(fā)明實(shí)施例三提供的第一種數(shù)據(jù)的存儲裝置結(jié)構(gòu)示意圖;
[0022] 圖4是本發(fā)明實(shí)施例三提供的第二種數(shù)據(jù)的存儲裝置結(jié)構(gòu)示意圖;
[0023] 圖5是本發(fā)明實(shí)施例三提供的第三種數(shù)據(jù)的存儲裝置結(jié)構(gòu)示意圖;
[0024] 圖6是本發(fā)明實(shí)施例三提供的第四種數(shù)據(jù)的存儲裝置結(jié)構(gòu)示意圖;
[0025] 圖7是本發(fā)明實(shí)施例四提供的一種服務(wù)器的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方 式作進(jìn)一步地詳細(xì)描述。
[0027] 實(shí)施例一
[0028] 由于相關(guān)技術(shù)在對數(shù)據(jù)進(jìn)行存儲時(shí),需要由后臺守護(hù)進(jìn)程將數(shù)據(jù)庫數(shù)據(jù)加載到業(yè) 務(wù)服務(wù)器的共享內(nèi)存中進(jìn)行存儲。若數(shù)據(jù)庫數(shù)據(jù)存在更新,則需要通過修改守護(hù)進(jìn)程的代 碼,由修改代碼后的守護(hù)進(jìn)程將更新的數(shù)據(jù)加載到共享內(nèi)存中進(jìn)行存儲。當(dāng)數(shù)據(jù)量太大時(shí), 共享內(nèi)存無法裝入所有數(shù)據(jù),導(dǎo)致存儲結(jié)構(gòu)擴(kuò)展性較差;另外,由于需要通過修改守護(hù)進(jìn)程 的代碼來實(shí)現(xiàn)將更新的數(shù)據(jù)加載到共享內(nèi)存中進(jìn)行存儲,而代碼修改過程比較繁瑣,每次 加載更新的數(shù)據(jù)都需要對代碼進(jìn)行修改,使得存儲更新的數(shù)據(jù)的過程比較繁瑣,延時(shí)較長, 共享內(nèi)存中數(shù)據(jù)的可拓展性較差,導(dǎo)致存儲數(shù)據(jù)的效率較低。
[0029] 為了預(yù)防上述情況,提高存儲數(shù)據(jù)時(shí)的可拓展性及效率,本發(fā)明實(shí)施例提供了一 種數(shù)據(jù)的存儲方法,參見圖1,本實(shí)施例提供的方法流程包括:
[0030] 101 :根據(jù)配置文件確定至少一條數(shù)據(jù)獲取指令,配置文件用于對第一數(shù)據(jù)庫中存 儲的每張數(shù)據(jù)表以及每張數(shù)據(jù)表下的每一列數(shù)據(jù)的屬性進(jìn)行描述,每張數(shù)據(jù)表對應(yīng)一條數(shù) 據(jù)獲取指令;
[0031] 作為一種可選實(shí)施例,根據(jù)配置文件確定至少一條數(shù)據(jù)獲取指令之后,還包括:
[0032] 獲取配置文件修改通知;
[0033] 根據(jù)配置文件修改通知獲取修改后的配置文件,以根據(jù)修改后的配置文件觸發(fā)下 一次的數(shù)據(jù)存儲操作。
[0034] 102:根據(jù)每條數(shù)據(jù)獲取指令從第一數(shù)據(jù)庫中獲取每張數(shù)據(jù)表下的至少一條第一 數(shù)據(jù),并確定每條第一數(shù)據(jù)對應(yīng)的鍵值以及每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù),第二數(shù)據(jù)由第 一數(shù)據(jù)及第一數(shù)據(jù)中非空數(shù)據(jù)的數(shù)量構(gòu)成;
[0035] 103:對每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)進(jìn)行存儲,得到 第二數(shù)據(jù)庫。
[0036] 作為一種可選實(shí)施例,將每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù)據(jù)對應(yīng)的第二數(shù) 據(jù)進(jìn)行存儲之后,還包括:
[0037] 對第二數(shù)據(jù)庫中存儲的第二數(shù)據(jù)進(jìn)行更新。
[0038] 作為一種可選實(shí)施例,對第二數(shù)據(jù)庫中存儲的第二數(shù)據(jù)進(jìn)行更新,包括:
[0039] 每隔預(yù)設(shè)時(shí)間檢測第一數(shù)據(jù)庫中是否存在增加數(shù)據(jù)的數(shù)據(jù)表;
[0040] 若檢測到存在增加數(shù)據(jù)的數(shù)據(jù)表,則根據(jù)配置文件確定每張?jiān)黾訑?shù)據(jù)的數(shù)據(jù)表對 應(yīng)的數(shù)據(jù)獲取指令;
[0041] 根據(jù)每條數(shù)據(jù)獲取指令獲取每張?jiān)黾訑?shù)據(jù)的數(shù)據(jù)表下的至少一條增加的第一數(shù) 據(jù),并確定獲取到的每條增加的第一數(shù)據(jù)對應(yīng)的鍵值以及每條增加的第一數(shù)據(jù)對應(yīng)的第二 數(shù)據(jù);
[0042] 將每條增加的第一數(shù)據(jù)對應(yīng)的鍵值與每條增加的第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)存儲 至第二數(shù)據(jù)庫,得到更新的第二數(shù)據(jù)庫。
[0043] 作為一種可選實(shí)施例,對第二數(shù)據(jù)庫中存儲的第二數(shù)據(jù)進(jìn)行更新,包括:
[0044] 獲取異步通知請求,異步通知請求中至少包含有第一數(shù)據(jù)庫中被修改的第一數(shù)據(jù) 的相關(guān)信息;
[0045] 根據(jù)異步通知請求及配置文件確定數(shù)據(jù)獲取指令;
[0046] 根據(jù)數(shù)據(jù)獲取指令從第一數(shù)據(jù)庫中獲取修改后的第一數(shù)據(jù);
[0047] 確定修改后的第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù),得到修改后的第二數(shù)據(jù);
[0048] 將修改后的第二數(shù)據(jù)替換修改前的第二數(shù)據(jù),得到更新的第二數(shù)據(jù)庫。
[0049] 作為一種可選實(shí)施例,該方法還包括:
[0050] 獲取數(shù)據(jù)查詢請求,數(shù)據(jù)查詢請求中至少包含有查詢信息;
[0051] 根據(jù)查詢信息確定鍵值;
[0052] 根據(jù)鍵值及配置文件在第二數(shù)據(jù)庫中查詢對應(yīng)的數(shù)據(jù)。
[0053] 本發(fā)明實(shí)施例提供的方法,通過配置文件確定至少一條數(shù)據(jù)獲取指令,根據(jù)每條 數(shù)據(jù)獲取指令從第一數(shù)據(jù)庫中獲取每張數(shù)據(jù)表下的至少一條第一數(shù)據(jù),確定每條第一數(shù)據(jù) 對應(yīng)的鍵值以及每條第一數(shù)據(jù)對應(yīng)的第二數(shù)據(jù),對每條第一數(shù)據(jù)對應(yīng)的鍵值與每條第一數(shù) 據(jù)對應(yīng)的第二數(shù)據(jù)進(jìn)行存儲。由于配置文件具有可拓展性,當(dāng)需要加載更新的數(shù)據(jù)時(shí)拓展 配置文件即可,使得存儲數(shù)據(jù)的過程比較簡單,存儲數(shù)據(jù)時(shí)的可拓展性較佳,因此,存儲數(shù) 據(jù)的效率較高。另外,在查詢數(shù)據(jù)時(shí),通過鍵值就能查詢到對應(yīng)的數(shù)據(jù),從而查詢數(shù)據(jù)的效 率較高。
[0054] 實(shí)施例二
[0055] 為了簡化數(shù)據(jù)存儲過程,提高存儲數(shù)據(jù)時(shí)的可拓展性及效率,進(jìn)而提高數(shù)據(jù)查詢 的效率,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)的存儲方法。該方法中存儲的數(shù)據(jù)的來源為第一數(shù) 據(jù)庫中的數(shù)據(jù),第一數(shù)據(jù)庫中的數(shù)據(jù)以數(shù)據(jù)表的形式進(jìn)行存儲,每張數(shù)據(jù)表由多列數(shù)據(jù)構(gòu) 成。結(jié)合上述實(shí)施例一的內(nèi)容,對本實(shí)施例提供的方法進(jìn)行舉例說明。參見圖2,本實(shí)施例 提供的方法流程包括:
[0056] 201 :根據(jù)配置文件確定至少一條數(shù)據(jù)獲取指令,配置文件用于對第一數(shù)據(jù)庫中存 儲的每張數(shù)據(jù)表以及每張數(shù)據(jù)表下的每一列數(shù)據(jù)的屬性進(jìn)行描述;
[0057] 配置文件可以包括但不限于為XML(extensible Markup Language,可拓展標(biāo)記語 言)類型的文件,本實(shí)施例不對配置文件的類型作具體限定。
[0058] 例如,以配置文件為XML類型的文件為例,XML文件中可以包含每張數(shù)據(jù)表及每張