專(zhuān)利名稱(chēng):一種數(shù)據(jù)存儲(chǔ)方法、系統(tǒng)及數(shù)據(jù)存儲(chǔ)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法、系統(tǒng)及數(shù)據(jù)存儲(chǔ)設(shè)備。
背景技術(shù):
隨著信息技術(shù)的不斷發(fā)展,各種信息數(shù)據(jù)需要進(jìn)行存儲(chǔ),對(duì)于海量的存儲(chǔ)數(shù)據(jù),目前流行的數(shù)據(jù)存儲(chǔ)是用類(lèi)似ORACLE (Oracle Database,甲骨文公司的一款關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))或者M(jìn)ySQL (—種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))的這種關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)都是嚴(yán)格的基于數(shù)據(jù)模型來(lái)進(jìn)行存儲(chǔ)的,例如,需要存儲(chǔ)一個(gè)用戶(hù)的幾點(diǎn)信息,包括名字(name),年齡(age),身高(height),現(xiàn)有技術(shù)的數(shù)據(jù)存儲(chǔ)方法首先建立數(shù)據(jù)庫(kù)的模型,即建一個(gè)使用者表(user表),然后定義name, age, height這三個(gè)字段;然后針對(duì)這個(gè)user表來(lái)定義一個(gè)具體的數(shù)據(jù)庫(kù)操作類(lèi)UserDao,數(shù)據(jù)庫(kù)操作類(lèi)就是對(duì)user表進(jìn)行增刪改查的一些操作,而查詢(xún)出來(lái)的user信息一般我們會(huì)用一個(gè)User的對(duì)象來(lái)存放,User的對(duì)象里面同樣也是定義name,age, height這三個(gè)字段,完成了關(guān)系型數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的存儲(chǔ)?,F(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)在數(shù)據(jù)存儲(chǔ)過(guò)程中,需要對(duì)存儲(chǔ)的數(shù)據(jù)建表、定義數(shù)據(jù)操作類(lèi)、對(duì)象存放數(shù)據(jù)等過(guò)程編寫(xiě)相應(yīng)的程序,以后一旦遇到需要變更數(shù)據(jù)模型的時(shí)候就必須重新寫(xiě)相應(yīng)的程序代碼。例如,在上述存儲(chǔ)用戶(hù)信息的例子中,如果需要新增一個(gè)用戶(hù)的weight項(xiàng),現(xiàn)有技術(shù)的做法只能是首先修改數(shù)據(jù)庫(kù)的user表,然后修改代碼中的User類(lèi),都分別添加weight這個(gè)字段,然后再修改操作類(lèi)UserDao中的一個(gè)映射來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作。綜上,現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)過(guò)程中如果需要變更數(shù)據(jù)模型,需要重新編寫(xiě)相應(yīng)的代碼,操作步驟復(fù)雜,可用性差。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)存儲(chǔ)方法,旨在解決現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)過(guò)程中如果需要變更數(shù)據(jù)模型,需要重新編寫(xiě)相應(yīng)的代碼,操作步驟復(fù)雜,可用性差的問(wèn)題。為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種數(shù)據(jù)存儲(chǔ)方法,所述方法包括獲取待存儲(chǔ)的數(shù)據(jù);將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值;根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段;將通過(guò)有效性檢查、合法性檢查及完整性檢查的所述哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),所述系統(tǒng)包括
獲取單元,用于獲取待存儲(chǔ)的數(shù)據(jù);解析單元,用于將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值;檢查單元,用于根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段;存儲(chǔ)單元,用于將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比,有益效果在于通過(guò)將待存儲(chǔ)的數(shù)據(jù)解析至哈希表,根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。使得數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)過(guò)程中如果需要變更數(shù)據(jù)模型,不需要重新編寫(xiě)代碼,而只需要配置一下XML文件即可實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),操作簡(jiǎn)單、方便,為項(xiàng)目的維護(hù)和修改節(jié)約成本。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例一提供的數(shù)據(jù)存儲(chǔ)方法的實(shí)現(xiàn)的流程圖;圖2是本發(fā)明實(shí)施例二提供的數(shù)據(jù)存儲(chǔ)方法的實(shí)現(xiàn)的流程圖;圖3是本發(fā)明實(shí)施例三提供的數(shù)據(jù)存儲(chǔ)方法的實(shí)現(xiàn)的流程圖;圖4是本發(fā)明實(shí)施例四提供的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖5是本發(fā)明實(shí)施例五提供的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖6是本發(fā)明實(shí)施例六提供的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)方法,所述方法包括獲取待存儲(chǔ)的數(shù)據(jù);將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值;根據(jù)預(yù)設(shè)第一可擴(kuò)展標(biāo)記語(yǔ)言XML文件,檢查所述哈希表中的字段的有效性;根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型的合法性;根據(jù)預(yù)設(shè)第二 XML文件,檢查所述哈希表中包括的字段的完整性;將通過(guò)有效性檢查、合法性檢查及完整性檢查的所述哈希表存儲(chǔ)至數(shù)據(jù)庫(kù);
其中,所述預(yù)設(shè)第一 XML文件中包括所有可以存儲(chǔ)的字段的定義,所述預(yù)設(shè)第二XML文件中包括每個(gè)哈希表中必須包含的字段。本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)存儲(chǔ)系統(tǒng),所述系統(tǒng)包括獲取單元,用于獲取待存儲(chǔ)的數(shù)據(jù);解析單元,用于將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值;有效性檢查單元,用于根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中的字段的有效性,其中,所述預(yù)設(shè)第一 XML文件中包括所有可以存儲(chǔ)的字段的定義;合法性檢查單元,用于根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型的合法性;完整性檢查單元,用于根據(jù)預(yù)設(shè)第二 XML文件,檢查所述哈希表中包括的字段的完整性,其中,所述預(yù)設(shè)第二 XML文件中包括每個(gè)哈希表中必須包含的字段;存儲(chǔ)單元,用于將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述實(shí)施例一圖1示出了本發(fā)明實(shí)施例一提供的數(shù)據(jù)存儲(chǔ)方法的實(shí)現(xiàn)的流程圖,詳述如下在SlOl中,獲取待存儲(chǔ)的數(shù)據(jù);在S102中,將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值;在S103中,根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段;在S104中,將通過(guò)有效性檢查、合法性檢查及完整性檢查的所述哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。通過(guò)將待存儲(chǔ)的數(shù)據(jù)解析至哈希表,根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。使得數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)過(guò)程中如果需要變更數(shù)據(jù)模型,不需要重新編寫(xiě)代碼,而只需要配置一下XML文件即可實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),操作簡(jiǎn)單、方便,為項(xiàng)目的維護(hù)和修改節(jié)約成本。實(shí)施例二圖2示出了本發(fā)明實(shí)施例二提供的數(shù)據(jù)存儲(chǔ)方法的實(shí)現(xiàn)的流程圖,詳述如下在S201中,獲取待存儲(chǔ)的數(shù)據(jù)。在S202中,將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值。本實(shí)施例中,待存儲(chǔ)的數(shù)據(jù)可能是一個(gè)固定格式的字符串,也可能是一個(gè)javascript 中的對(duì)象和數(shù)組(Java Script Object Notation, JS0N)數(shù)據(jù)、也可能是一個(gè)Java類(lèi)的數(shù)據(jù),這些數(shù)據(jù)我們都將其解析成哈希表的方式,即《Key,Value))的鍵值對(duì)的方式。
對(duì)于現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)存儲(chǔ)方式,例如,如果要存儲(chǔ)一個(gè)user表,需要定義name,age, height這三個(gè)字段,某用戶(hù)的名字叫“張三”、年齡“20”、身高“ 170”,此時(shí)需要分別把張三,20,170等數(shù)據(jù)存到數(shù)據(jù)庫(kù)的name, age, height這三個(gè)字段中,然而,如果是按《key,value》來(lái)理解就分別是key name, value :張三;key :age, value :20 ;key height, value :170。在S203中,根據(jù)預(yù)設(shè)第一可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language, XML)文件,檢查所述哈希表中的字段的有效性。本實(shí)施例中,所述有效性檢查即通過(guò)判斷所述哈希表中的字段是否是所述預(yù)設(shè)第一 XML文件中定義的字段,若是,則所述字段為有效的字段,若否,所述字段無(wú)效。在S204中,根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型的合法性。其中,所述預(yù)設(shè)第一 XML文件中包括所有可以存儲(chǔ)的字段的定義,包括字段的名稱(chēng)及字段的值的數(shù)據(jù)類(lèi)型,以下給出一個(gè)預(yù)設(shè)第一 XML文件的示例,但不以此示例的情況為限,所述預(yù)設(shè)第一 XML文件如下
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述方法包括 獲取待存儲(chǔ)的數(shù)據(jù); 將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值; 根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段; 將通過(guò)有效性檢查、合法性檢查及完整性檢查的所述哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性具體為 根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中的字段的有效性; 根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型的合法性; 根據(jù)預(yù)設(shè)第二 XML文件,檢查所述哈希表中包括的字段的完整性; 其中,所述預(yù)設(shè)第一 XML文件中包括所有可以存儲(chǔ)的字段的定義,所述預(yù)設(shè)第二 XML文件中包括每個(gè)哈希表中必須包含的字段。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)第一XML文件,檢查所述哈希表中的字段的有效性具體為 判斷所述哈希表中的字段是否是所述預(yù)設(shè)第一 XML文件中定義的字段,若是,則所述字段為有效的字段,若否,則刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)或者刪除所述哈希表。
4.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)第一XML文件,檢查所述哈希表中的字段的有效性具體為 判斷是否能將哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成所述預(yù)設(shè)第一 XML文件定義的所述字段的數(shù)據(jù)類(lèi)型,若是,則所述字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型為合法的數(shù)據(jù)類(lèi)型,若否,則刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)或者刪除所述哈希表。
5.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)第二XML文件,檢查哈希表中包括的字段的完整性具體為 判斷哈希表中的字段是否包含所述預(yù)設(shè)第二 XML文件中定義的所有字段,若是,則所述哈希表中的字段是完整的,若否,則刪除所述哈希表。
6.如權(quán)利要求3至5任一權(quán)利要求所述的方法,其特征在于,所述方法還包括 記錄所述刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)的信息或者記錄所述刪除哈希表的信肩、O
7.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于,所述系統(tǒng)包括 獲取單元,用于獲取待存儲(chǔ)的數(shù)據(jù); 解析單元,用于將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì),其中,鍵表示待存儲(chǔ)數(shù)據(jù)中的一個(gè)字段,值表示所述字段對(duì)應(yīng)的數(shù)據(jù)值; 檢查單元,用于根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段; 存儲(chǔ)單元,用于將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述檢查單元包括 有效性檢查模塊,用于根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中的字段的有效性,其中,所述預(yù)設(shè)第一 XML文件中包括所有可以存儲(chǔ)的字段的定義; 合法性檢查模塊,用于根據(jù)預(yù)設(shè)第一 XML文件,檢查所述哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型的合法性; 完整性檢查模塊,用于根據(jù)預(yù)設(shè)第二 XML文件,檢查所述哈希表中包括的字段的完整性,其中,所述預(yù)設(shè)第二 XML文件中包括每個(gè)哈希表中必須包含的字段。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述有效性檢查模塊,具體用于判斷所述哈希表中的字段是否是所述預(yù)設(shè)第一 XML文件中定義的字段,若是,則所述字段為有效的字段,若否,則刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)或者刪除所述哈希表。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述合法性檢查模塊,具體用于判斷是否能將哈希表中每一字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成所述預(yù)設(shè)第一 XML文件定義的所述字段的數(shù)據(jù)類(lèi)型,若是,則所述字段的值對(duì)應(yīng)的數(shù)據(jù)類(lèi)型為合法的數(shù)據(jù)類(lèi)型,若否,則刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)或者刪除所述哈希表。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述完整性檢查模塊,具體用于判斷哈希表中的字段是否包含所述預(yù)設(shè)第二 XML文件中定義的所有字段,若是,則所述哈希表中的字段是完整的,若否,則刪除所述哈希表。
12.如權(quán)利要求9至11任一權(quán)利要求所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 記錄單元,用于記錄所述刪除哈希表中所述字段對(duì)應(yīng)的鍵值對(duì)的信息或者記錄所述刪除哈希表的信息。
全文摘要
本發(fā)明適用于數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,提供了一種數(shù)據(jù)存儲(chǔ)方法、系統(tǒng)及數(shù)據(jù)存儲(chǔ)設(shè)備,所述方法包括獲取待存儲(chǔ)的數(shù)據(jù);將所述數(shù)據(jù)解析至哈希表,所述哈希表包括至少一個(gè)鍵值對(duì);根據(jù)預(yù)設(shè)可擴(kuò)展標(biāo)記語(yǔ)言XML文件,分別檢查所述哈希表中的字段的有效性、合法性和完整性,其中,所述預(yù)設(shè)XML文件中包括所有可以存儲(chǔ)的字段的定義,以及每個(gè)哈希表中必須包含的字段;將通過(guò)有效性檢查、合法性檢查及完整性檢查的哈希表存儲(chǔ)至數(shù)據(jù)庫(kù)。本發(fā)明使得數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)過(guò)程中如果需要變更數(shù)據(jù)模型,不需要重新編寫(xiě)代碼,而只需要配置一下XML文件即可實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),操作簡(jiǎn)單、方便,為項(xiàng)目的維護(hù)和修改節(jié)約成本。
文檔編號(hào)G06F17/30GK103020262SQ20121056837
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年12月24日 優(yōu)先權(quán)日2012年12月24日
發(fā)明者程徐超 申請(qǐng)人:Tcl集團(tuán)股份有限公司