本申請涉及計算機
技術(shù)領(lǐng)域:
:,尤其涉及一種基于區(qū)塊鏈的數(shù)據(jù)存儲以及查詢的方法及裝置。
背景技術(shù):
::隨著計算機技術(shù)的不斷發(fā)展,區(qū)塊鏈技術(shù)(又可以稱之為分布式賬本技術(shù))作為一種新的分布式數(shù)據(jù)存儲技術(shù),由于其具備不可篡改的特性,使得存儲至區(qū)塊鏈中的數(shù)據(jù)具備公證、公信力等特點,進而使得區(qū)塊鏈技術(shù)使用的領(lǐng)域越來越廣泛。具體地,區(qū)塊鏈的數(shù)據(jù)存儲原理可以這樣理解:用戶通過以太坊客戶端(即一種支持區(qū)塊鏈技術(shù)的客戶端,又可以稱之為區(qū)塊鏈客戶端)發(fā)起一個業(yè)務(wù)請求。該以太坊客戶端可將該業(yè)務(wù)請求發(fā)送至共識網(wǎng)絡(luò)中,由共識網(wǎng)絡(luò)中的各區(qū)塊鏈節(jié)點對這該業(yè)務(wù)請求進行共識。在共識網(wǎng)絡(luò)中各區(qū)塊鏈節(jié)點對該業(yè)務(wù)請求達成共識后,將該業(yè)務(wù)請求的數(shù)據(jù)摘要存儲在各區(qū)塊鏈節(jié)點對應(yīng)的區(qū)塊鏈中。與此同時,以太坊客戶端可通過預設(shè)的智能合約中規(guī)定的數(shù)據(jù)存儲格式,將該業(yè)務(wù)請求中的業(yè)務(wù)數(shù)據(jù)按照規(guī)定的數(shù)據(jù)存儲格式存儲在自身所對應(yīng)的存儲器中。然而,為了方便后續(xù)查詢該存儲器中存儲的數(shù)據(jù),通常按照設(shè)定方式建立索引,以便于用戶利用索引對該存儲器中存儲的業(yè)務(wù)數(shù)據(jù)執(zhí)行查詢操作。但是,在實際應(yīng)用中,一旦查詢業(yè)務(wù)數(shù)據(jù)所使用的查詢條件與建立的索引不同(即查詢條件與智能合約所規(guī)定的索引不相匹配),導致數(shù)據(jù)查詢的效率較低或者查詢失敗。技術(shù)實現(xiàn)要素:本申請實施例提供一種數(shù)據(jù)存儲的方法,用以解決現(xiàn)有技術(shù)中對區(qū)塊鏈中存儲的數(shù)據(jù)進行查詢時存在的查詢效率低或者查詢失敗的問題。本申請實施例提供了一種數(shù)據(jù)存儲的方法,包括:區(qū)塊鏈節(jié)點接收業(yè)務(wù)請求;從所述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù);將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。本申請實施例提供一種數(shù)據(jù)存儲的裝置,用以解決現(xiàn)有技術(shù)中對區(qū)塊鏈中存儲的數(shù)據(jù)進行查詢時存在的查詢效率低或者查詢失敗的問題。本申請實施例提供了一種數(shù)據(jù)存儲的裝置,包括:接收模塊,接收業(yè)務(wù)請求;數(shù)據(jù)解析模塊,從所述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù);存儲模塊,將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。本申請實施例提供一種數(shù)據(jù)查詢的方法,用以解決現(xiàn)有技術(shù)中對區(qū)塊鏈中存儲的數(shù)據(jù)進行查詢時存在的查詢效率低或者查詢失敗的問題。本申請實施例提供了一種數(shù)據(jù)存儲的方法,包括:區(qū)塊鏈節(jié)點接收業(yè)務(wù)數(shù)據(jù)查詢請求;根據(jù)所述業(yè)務(wù)數(shù)據(jù)查詢請求,確定待查詢的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別;從所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中,查詢與所述數(shù)據(jù)類別相匹配的業(yè)務(wù)數(shù)據(jù),所述數(shù)據(jù)庫中包含有數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系。本申請實施例提供一種數(shù)據(jù)存儲的裝置,用以解決現(xiàn)有技術(shù)中對區(qū)塊鏈中存儲的數(shù)據(jù)進行查詢時存在的查詢效率低或者查詢失敗的問題。本申請實施例提供了一種數(shù)據(jù)存儲的裝置,包括:請求接收模塊,接收業(yè)務(wù)數(shù)據(jù)查詢請求;類別確定模塊,根據(jù)所述業(yè)務(wù)數(shù)據(jù)查詢請求,確定待查詢的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別;數(shù)據(jù)查詢模塊,從所述裝置對應(yīng)的數(shù)據(jù)庫中,查詢與所述數(shù)據(jù)類別相匹配的業(yè)務(wù)數(shù)據(jù),所述數(shù)據(jù)庫中包含有數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系。本申請實施例采用的上述至少一個技術(shù)方案能夠達到以下有益效果:在本申請實施例中,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,可從該業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù),并將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在該區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。通過對業(yè)務(wù)數(shù)據(jù)的解析,可以按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)之間的對應(yīng)關(guān)系,將業(yè)務(wù)數(shù)據(jù)存儲至區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中,這樣,在用戶查詢業(yè)務(wù)數(shù)據(jù)時,可以基于數(shù)據(jù)庫中的這種對應(yīng)關(guān)系實現(xiàn)查詢,避免了現(xiàn)有區(qū)塊鏈中基于索引進行查詢存在的問題,增加了區(qū)塊鏈中數(shù)據(jù)查詢的靈活性,有效提升數(shù)據(jù)查詢效率。附圖說明此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:圖1為本申請實施例提供的數(shù)據(jù)存儲過程的示意圖;圖2為本申請實施例提供的數(shù)據(jù)表的示意圖;圖3為本申請實施例提供的數(shù)據(jù)存儲的詳細過程;圖4為本申請實施例提供的一種數(shù)據(jù)存儲的裝置示意圖;圖5為本申請實施例提供的一種數(shù)據(jù)查詢的裝置示意圖。具體實施方式為了使本
技術(shù)領(lǐng)域:
:的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本申請保護的范圍。圖1為本申請實施例提供的數(shù)據(jù)存儲過程的示意圖,具體包括以下步驟:s101:區(qū)塊鏈節(jié)點接收業(yè)務(wù)請求。在實際應(yīng)用中,用戶在進行業(yè)務(wù)處理的過程中,可向區(qū)塊鏈節(jié)點發(fā)送業(yè)務(wù)請求。其中,這里提到的區(qū)塊鏈節(jié)點可以是終端設(shè)備或是服務(wù)器。例如,當該區(qū)塊鏈節(jié)點為服務(wù)器時,用戶可在自己所持有的終端設(shè)備中填寫業(yè)務(wù)信息,并在該終端設(shè)備上執(zhí)行指定操作后,由該終端設(shè)備將用戶填寫的業(yè)務(wù)信息以業(yè)務(wù)請求的形式發(fā)送至該服務(wù)器中,而該服務(wù)器則可相應(yīng)的接收該業(yè)務(wù)請求。當區(qū)塊鏈節(jié)點為終端設(shè)備時,用戶則可在該終端設(shè)備上填寫業(yè)務(wù)信息,而當該終端設(shè)備點確定用戶執(zhí)行了指定操作時(如用戶進行了點擊操作等),可根據(jù)該業(yè)務(wù)信息生成相應(yīng)的業(yè)務(wù)請求,這就相當于接收到用戶發(fā)送的業(yè)務(wù)請求。當然,上述提到的區(qū)塊鏈節(jié)點也可以是區(qū)塊鏈客戶端(是指能夠處理基于區(qū)塊鏈技術(shù)的相關(guān)業(yè)務(wù)的客戶端,如以太坊客戶端等)。相應(yīng)的,用戶通過區(qū)塊鏈共識網(wǎng)絡(luò)進行業(yè)務(wù)處理時,可通過終端設(shè)備啟動該區(qū)塊鏈客戶端,并在該區(qū)塊鏈客戶端所展示的界面中填寫業(yè)務(wù)信息,而該區(qū)塊鏈客戶端監(jiān)測到用戶執(zhí)行了指定操作時,則可根據(jù)用戶填寫的業(yè)務(wù)信息生成相應(yīng)的業(yè)務(wù)請求,這就相當于接收到用戶發(fā)送的業(yè)務(wù)請求。除此之外,區(qū)塊鏈節(jié)點接收到的業(yè)務(wù)請求也可以是其他區(qū)塊鏈節(jié)點通過廣播的形式發(fā)送過來的。s102:將所述業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式進行轉(zhuǎn)化,得到數(shù)據(jù)序列。區(qū)塊鏈節(jié)點接收到上述業(yè)務(wù)請求后,可將該業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式進行轉(zhuǎn)化,從而得到相應(yīng)的數(shù)據(jù)序列。其中,在本申請實施例中,預設(shè)的數(shù)據(jù)格式包含但不限于以下幾個字段:標識信息字段,該標識信息字段用于將各業(yè)務(wù)數(shù)據(jù)在用戶層面進行區(qū)分,例如:上述業(yè)務(wù)請求中攜帶的用戶公鑰或用戶身份標識號碼(identity,id)等能夠唯一標識用戶的信息,便于后續(xù)能夠以用戶為維度進行業(yè)務(wù)數(shù)據(jù)的查詢;業(yè)務(wù)類型字段,該業(yè)務(wù)類型字段用于對用戶的各類業(yè)務(wù)的業(yè)務(wù)數(shù)據(jù)進行區(qū)分,從而使得用戶后續(xù)在進行業(yè)務(wù)數(shù)據(jù)查詢的過程中,能夠進一步的以業(yè)務(wù)為維度實現(xiàn)業(yè)務(wù)數(shù)據(jù)的查詢。除此之外,上述預設(shè)的數(shù)據(jù)格式中還規(guī)定了data字段,該data字段用于表示業(yè)務(wù)請求中的各數(shù)據(jù)類別與各業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系,例如,假設(shè)在一個業(yè)務(wù)請求中包含有以下data字段:姓名-小明,年齡-18,體重-130斤這些信息,在這些信息中,實際的業(yè)務(wù)數(shù)據(jù)是小明、18、130斤,而姓名、年齡、體重則是各業(yè)務(wù)數(shù)據(jù)的所述數(shù)據(jù)類別,換句話說,在本申請實施例中,該數(shù)據(jù)類別相當于key,而業(yè)務(wù)數(shù)據(jù)則相當于是value,而data字段則是key-value的數(shù)據(jù)映射集合?;谏鲜稣f明的預設(shè)的數(shù)據(jù)格式,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,可根據(jù)該預設(shè)的數(shù)據(jù)格式,從該業(yè)務(wù)請求中解析出該業(yè)務(wù)請求所包含的標識信息、業(yè)務(wù)類別、data字段中的各數(shù)據(jù)類別以及各數(shù)據(jù)類別所對應(yīng)的業(yè)務(wù)數(shù)據(jù)等數(shù)據(jù)內(nèi)容,而后,區(qū)塊鏈節(jié)點可將解析出的這些數(shù)據(jù)按照一定的形式進行序列化,從而得到數(shù)據(jù)序列。例如,假設(shè)區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,通過預設(shè)的數(shù)據(jù)格式,從該業(yè)務(wù)請求中解析出的業(yè)務(wù)類型字段為:commodity,標識信息字段為:publickey,data字段為name:umbrella和cost:46,區(qū)塊鏈節(jié)點將解析出的這些字段按照一定的形式進行序列化,得到數(shù)據(jù)序列:{“publickey.schema”:“default”,“data”:“name:umbrella,cost:46”}。其中,將上述業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式轉(zhuǎn)化為數(shù)據(jù)序列的目的在于,由于在本申請實施例中,區(qū)塊鏈節(jié)點需要將業(yè)務(wù)請求寫入到區(qū)塊鏈中,以備后續(xù)進行業(yè)務(wù)數(shù)據(jù)的驗證所使用。其中,在實際應(yīng)用中,區(qū)塊鏈節(jié)點通常需要將業(yè)務(wù)請求按照一定的數(shù)據(jù)格式寫入到區(qū)塊鏈中,為此,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,需要將該業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式,轉(zhuǎn)化為能夠在后續(xù)過程中支持該業(yè)務(wù)請求寫入到區(qū)塊鏈中的數(shù)據(jù)格式,即數(shù)據(jù)序列,進而以數(shù)據(jù)序列的形式將該業(yè)務(wù)請求寫入到區(qū)塊鏈中,以保證后續(xù)能夠根據(jù)區(qū)塊鏈中存儲的業(yè)務(wù)請求,實現(xiàn)對業(yè)務(wù)數(shù)據(jù)的有效驗證。需要說明的是,在本申請實施例中,區(qū)塊鏈節(jié)點還可以從上述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù),之后,按照預設(shè)的數(shù)據(jù)格式,將解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到上述數(shù)據(jù)序列。區(qū)塊鏈節(jié)點也可以在解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)后,先將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在該區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫(即執(zhí)行步驟s103)后,而后在按照預設(shè)的數(shù)據(jù)格式,將上述業(yè)務(wù)請求中包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到數(shù)據(jù)序列。換句話說,在本申請實施例中,將所述業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式進行轉(zhuǎn)化,得到數(shù)據(jù)序列這一步驟并不是一個必要的步驟。而對于步驟s102而言,將所述業(yè)務(wù)請求按照預設(shè)的數(shù)據(jù)格式進行轉(zhuǎn)化,得到數(shù)據(jù)序列中所涉及的具體實施過程并不一定是指將上述業(yè)務(wù)請求進行解析,得到各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)業(yè)務(wù)數(shù)據(jù),而后再按照預設(shè)的數(shù)據(jù)格式,將解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到數(shù)據(jù)序列,數(shù)據(jù)序列的生成除了需要從業(yè)務(wù)請求中解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)外,還可通過該業(yè)務(wù)請求中的其他字段來生成,具體需要哪些字段來生成則取決于實際所要求的能夠支持業(yè)務(wù)請求寫入到區(qū)塊鏈中的數(shù)據(jù)格式。s103:從所述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)。在本申請實施例中,區(qū)塊鏈節(jié)點在接收到上述業(yè)務(wù)請求后,可先將該業(yè)務(wù)請求通過廣播的方式發(fā)送至共識網(wǎng)絡(luò)中的其他區(qū)塊鏈節(jié)點,以通過共識網(wǎng)絡(luò)中的各區(qū)塊鏈節(jié)點對該業(yè)務(wù)請求進行共識,一旦確定出該業(yè)務(wù)請求通過共識網(wǎng)絡(luò)中各區(qū)塊鏈節(jié)點的共識后,則各區(qū)塊鏈節(jié)點可將該業(yè)務(wù)請求存儲到自身對應(yīng)的區(qū)塊鏈中。不僅如此,在本申請實施例中,區(qū)塊鏈節(jié)點在接收到上述業(yè)務(wù)請求后,可對該業(yè)務(wù)請求進行解析,從該業(yè)務(wù)請求中解析出該業(yè)務(wù)請求中所包含的各數(shù)據(jù)類型以及各數(shù)據(jù)類型的業(yè)務(wù)數(shù)據(jù),并在后續(xù)過程中,將解析出的各業(yè)務(wù)數(shù)據(jù)按照各數(shù)據(jù)類型與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系,存儲在該區(qū)塊鏈節(jié)點所對應(yīng)的數(shù)據(jù)庫中。其中,本申請實施例中所提到的數(shù)據(jù)庫可以是關(guān)系型數(shù)據(jù)庫,這種數(shù)據(jù)存儲方式不但能夠?qū)崿F(xiàn)數(shù)據(jù)的快速查找,而且不受查詢條件的影響,換句話說,即使索引字段發(fā)送了變化,該數(shù)據(jù)庫中存儲的業(yè)務(wù)數(shù)據(jù)依然能夠適應(yīng)新的索引字段,而不會由于查詢業(yè)務(wù)數(shù)據(jù)所使用的索引字段發(fā)生改變而對用戶的業(yè)務(wù)數(shù)據(jù)查詢帶來影響。在本申請實施例中,區(qū)塊鏈節(jié)點在進行業(yè)務(wù)數(shù)據(jù)存儲時,可將存儲的業(yè)務(wù)數(shù)據(jù)按照業(yè)務(wù)類別或是標識信息進行區(qū)分,以將不同業(yè)務(wù)類型或標識信息的業(yè)務(wù)數(shù)據(jù)存儲在不同的數(shù)據(jù)庫中,這里便于后續(xù)用戶在業(yè)務(wù)數(shù)據(jù)查詢的過程中,能夠以業(yè)務(wù)類別或標識信息的維度進行業(yè)務(wù)數(shù)據(jù)的精確查詢?;诖?,區(qū)塊鏈節(jié)點除了需要從上述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別所對應(yīng)的業(yè)務(wù)數(shù)據(jù)外,還可解析出該業(yè)務(wù)請求中所包含的業(yè)務(wù)數(shù)據(jù)對應(yīng)的業(yè)務(wù)類別以及標識信息,繼而按照預設(shè)的語句格式,將解析出的各數(shù)據(jù)類別、各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)、業(yè)務(wù)類別以及標識信息進行轉(zhuǎn)化,得到數(shù)據(jù)存儲語句,并在后續(xù)過程中通過執(zhí)行該數(shù)據(jù)存儲語句,將解析出的業(yè)務(wù)數(shù)據(jù)存儲在區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。例如,區(qū)塊鏈節(jié)點通過解析上述業(yè)務(wù)請求,確定出待存儲的業(yè)務(wù)數(shù)據(jù)為shoes#12xew,158,待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的業(yè)務(wù)類型為commodity,待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的標識信息為publickey1,業(yè)務(wù)數(shù)據(jù)shoes#12xew,158分別對應(yīng)的數(shù)據(jù)類別為name和cost,區(qū)塊鏈節(jié)點可按照預設(shè)的語句格式,將解析出的業(yè)務(wù)類別、標識信息、各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)換,得到相應(yīng)的數(shù)據(jù)存儲語句,具體形式如下:insertinto“publickey1.schema:commodity”(name,cost)value(‘shoes#12xew’,‘158’)。區(qū)塊鏈節(jié)點可在后續(xù)過程中通過執(zhí)行該數(shù)據(jù)存儲語句,將該業(yè)務(wù)數(shù)據(jù)存儲在區(qū)塊鏈節(jié)點所對應(yīng)的數(shù)據(jù)庫中。其中,區(qū)塊鏈節(jié)點在解析上述業(yè)務(wù)請求的過程中,可通過預設(shè)的解析程序來實現(xiàn),該解析程序中規(guī)定了所要解析的數(shù)據(jù)格式以及字段,區(qū)塊鏈節(jié)點通過運行該解析程序,實現(xiàn)對上述業(yè)務(wù)請求的解析,而這里提到的解析程序可以通過區(qū)塊鏈節(jié)點運維人員根據(jù)需要進行編譯。需要說明的是,區(qū)塊鏈節(jié)點除了可將上述業(yè)務(wù)數(shù)據(jù)按照業(yè)務(wù)類別以及標識信息的維度存儲在數(shù)據(jù)庫中外,若區(qū)塊鏈節(jié)點對應(yīng)單一的數(shù)據(jù)庫,則可在該數(shù)據(jù)庫中設(shè)置不同的數(shù)據(jù)表,每個業(yè)務(wù)類型以及標識信息都可對應(yīng)有一個數(shù)據(jù)表,這樣,區(qū)塊鏈節(jié)點可將上述業(yè)務(wù)數(shù)據(jù)按照業(yè)務(wù)類別以及標識信息的劃分存儲在該數(shù)據(jù)庫中的各數(shù)據(jù)表中。當然,數(shù)據(jù)庫中除了以數(shù)據(jù)表的形式區(qū)分該業(yè)務(wù)類別以及標識信息的業(yè)務(wù)數(shù)據(jù)外,還可通過其他的形式來進行區(qū)分,在此就不進行詳細舉例說明了。需要說明的是,在本申請實施例中,區(qū)塊鏈節(jié)點可以先執(zhí)行步驟s103,再執(zhí)行步驟s102;也可以是先執(zhí)行步驟s102,而后執(zhí)行步驟s103;還可以先執(zhí)行步驟s102,再按照s103的步驟所示的方法從步驟s102得到的數(shù)據(jù)序列中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù);步驟s102與步驟s103在本申請實施例中還可以同時實施,這里不做具體限定。s104:將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。在本申請實施例中,區(qū)塊鏈節(jié)點從上述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)后,可將解析出的業(yè)務(wù)數(shù)據(jù)存儲在該數(shù)據(jù)庫中的各數(shù)據(jù)類別中。而對于不同業(yè)務(wù)類型以及標識信息對應(yīng)的業(yè)務(wù)數(shù)據(jù)來說,區(qū)塊鏈節(jié)點可根據(jù)解析出的業(yè)務(wù)類別以及標識信息,確定出與該業(yè)務(wù)類別以及標識信息對應(yīng)的數(shù)據(jù)庫,而后,區(qū)塊鏈節(jié)點可將解析出的各業(yè)務(wù)數(shù)據(jù)分別存儲在該數(shù)據(jù)庫的各數(shù)據(jù)類別中。具體的,區(qū)塊鏈節(jié)點通過上述步驟s103得到數(shù)據(jù)存儲語句后,可對該數(shù)據(jù)存儲語句進行執(zhí)行,以確定出待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的業(yè)務(wù)類別以及標識信息,而后,區(qū)塊鏈節(jié)點可進一步的確定出該區(qū)塊鏈節(jié)點是否對應(yīng)有該業(yè)務(wù)類型以及標識信息所對應(yīng)的數(shù)據(jù)庫,若是,則區(qū)塊鏈節(jié)點可進一步的將解析出的業(yè)務(wù)數(shù)據(jù)分別存儲該數(shù)據(jù)庫的各數(shù)據(jù)類別中,若否,該區(qū)塊鏈節(jié)點則需要根據(jù)確定出的業(yè)務(wù)類型、標識信息,構(gòu)建與該業(yè)務(wù)類型以及標識信息相對應(yīng)的數(shù)據(jù)庫,以使區(qū)塊鏈節(jié)點將該業(yè)務(wù)數(shù)據(jù)存儲在該數(shù)據(jù)庫中。當然,在本申請實施例中,若區(qū)塊鏈節(jié)點對應(yīng)單一的數(shù)據(jù)庫,則可從該數(shù)據(jù)庫中確定是否包含有與上述業(yè)務(wù)類別以及標識信息相對應(yīng)的數(shù)據(jù)表,若是,則將解析出的各業(yè)務(wù)數(shù)據(jù)分別存儲在該數(shù)據(jù)表的各數(shù)據(jù)類別中,若否,則通過預設(shè)的建表方式,構(gòu)建出該業(yè)務(wù)類別以及標識信息所對應(yīng)的數(shù)據(jù)表,繼而將解析出的各業(yè)務(wù)數(shù)據(jù)存儲在該數(shù)據(jù)表中。例如,假設(shè)區(qū)塊鏈節(jié)點通過執(zhí)行上述數(shù)據(jù)存儲語句,確定出待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的業(yè)務(wù)類型的字段為commodity,以及用于表示標識信息的用戶公鑰publickey1(由于實際的用戶公鑰可能較為復雜,所以這里僅用publickey1進行簡單的表示)。區(qū)塊鏈節(jié)點可進一步的從自身對應(yīng)的數(shù)據(jù)庫中確定是否包含有標識信息為publickey1以及業(yè)務(wù)類型為commodity的數(shù)據(jù)表,并在確定出不存在該數(shù)據(jù)表時,根據(jù)確定出的業(yè)務(wù)類型commodity、標識信息publickey1以及預設(shè)的建表方式,在該數(shù)據(jù)庫中構(gòu)建業(yè)務(wù)類型commodity以及標識信息publickey1所對應(yīng)的數(shù)據(jù)表,具體的執(zhí)行語句如下:createtable“publickey1.schema:commodity”if“publickey1.schema:commodity”notexist。區(qū)塊鏈節(jié)點通過執(zhí)行上述數(shù)據(jù)存儲語句從自身對應(yīng)的數(shù)據(jù)庫中確定(或構(gòu)建)出上述業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)表后,可針對該業(yè)務(wù)數(shù)據(jù)中包含的每個數(shù)據(jù)類別,確定該數(shù)據(jù)類別是否存在于該數(shù)據(jù)表中,若是,則在該數(shù)據(jù)表中構(gòu)建該數(shù)據(jù)類別所對應(yīng)的行或列,若否,則可根據(jù)該數(shù)據(jù)類別以及預設(shè)的建行/列方式,在該數(shù)據(jù)表中增添該數(shù)據(jù)類別所對應(yīng)的行/列。繼續(xù)沿用上來,區(qū)塊鏈節(jié)點從上述數(shù)據(jù)序列中確定出的data字段為:“name:shoes#12xew,cost:158”,其中,在該data字段中,name和cost為數(shù)據(jù)類別即,相對于key,而name和cost后面對應(yīng)的業(yè)務(wù)數(shù)據(jù)則相當于value。區(qū)塊鏈節(jié)點可針對該data字段中的每個數(shù)據(jù)類別,確定上述根據(jù)業(yè)務(wù)類型commodity以及標識信息publickey1確定出的數(shù)據(jù)表中是否包含有該數(shù)據(jù)類別,若是,則不在該數(shù)據(jù)庫中構(gòu)建該數(shù)據(jù)類別所對應(yīng)的列,若否,則可根據(jù)該數(shù)據(jù)類別以及預設(shè)的建列方式(如數(shù)據(jù)表是以行為維度構(gòu)建的,則也可以使用建行方式),在該數(shù)據(jù)表中增添該數(shù)據(jù)類別對應(yīng)的列,具體的執(zhí)行語句如下:createcolume“name”if“publickey1.schema:commodity”.“name”notexist;createcolume“cost”if“publickey1.schema:commodity”.“cost”notexist。當區(qū)塊鏈節(jié)點通過執(zhí)行上述數(shù)據(jù)存儲語句,在上述數(shù)據(jù)庫中確定出待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別(該數(shù)據(jù)類別可以是先前就存在于該數(shù)據(jù)庫中,也可以是區(qū)塊鏈節(jié)點通過執(zhí)行上述數(shù)據(jù)存儲語句后構(gòu)建出的)后,可將該業(yè)務(wù)數(shù)據(jù)存儲在該數(shù)據(jù)庫的數(shù)據(jù)類別中。當然,若確定出待存儲的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別存在于數(shù)據(jù)庫的某一個數(shù)據(jù)表(即與上述業(yè)務(wù)類別以及標識信息相匹配的數(shù)據(jù)表)中,則區(qū)塊鏈節(jié)點可將解析出的該業(yè)務(wù)數(shù)據(jù)存儲在該數(shù)據(jù)表的數(shù)據(jù)類別中,如圖2所示。圖2為本申請實施例提供的數(shù)據(jù)表的示意圖。在圖2中,name和cost為業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)類別,publickey1為業(yè)務(wù)數(shù)據(jù)對應(yīng)的標識信息,commodity為業(yè)務(wù)數(shù)據(jù)對應(yīng)的業(yè)務(wù)類別,在每個數(shù)據(jù)類別下均記錄有屬于該數(shù)據(jù)類別的業(yè)務(wù)數(shù)據(jù),這樣一來,用戶后續(xù)在業(yè)務(wù)數(shù)據(jù)查詢的過程中,區(qū)塊鏈節(jié)點可接收用戶發(fā)送的業(yè)務(wù)數(shù)據(jù)查詢請求,并進一步從該數(shù)據(jù)庫中查找與該業(yè)務(wù)數(shù)據(jù)查詢請求匹配的業(yè)務(wù)數(shù)據(jù),具體查詢過程可以是:區(qū)塊鏈節(jié)點接收到該業(yè)務(wù)數(shù)據(jù)查詢請求后,可先確定出該業(yè)務(wù)數(shù)據(jù)查詢請求中所包含的業(yè)務(wù)類型以及標識信息,而后,區(qū)塊鏈節(jié)點可從該數(shù)據(jù)庫中確定出與該業(yè)務(wù)類型以及標識信息相匹配的數(shù)據(jù)表,繼而根據(jù)該數(shù)據(jù)表中記錄的數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系,從該數(shù)據(jù)表中查找該業(yè)務(wù)數(shù)據(jù)查詢請求中所要查詢的業(yè)務(wù)數(shù)據(jù)。例如,假設(shè)區(qū)塊鏈節(jié)點接收到的業(yè)務(wù)數(shù)據(jù)查詢請求中包含有以下幾個字段:publickey:publickey1、schema:commodity、name:blouse#4212v,區(qū)塊鏈節(jié)點可從中確定出該業(yè)務(wù)數(shù)據(jù)查詢請求所對應(yīng)的業(yè)務(wù)類型為commodity,標識信息為publickey1,繼而從自身對應(yīng)的數(shù)據(jù)庫中查找到與業(yè)務(wù)類型commodity以及標識信息publickey1相匹配的數(shù)據(jù)表,并根據(jù)索引字段blouse#4212v,從該數(shù)據(jù)表中查找到索引字段blouse#4212v與之對應(yīng)的業(yè)務(wù)數(shù)據(jù)為211。當然,若是各業(yè)務(wù)數(shù)據(jù)僅通過數(shù)據(jù)類別來進行區(qū)分,則區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)數(shù)據(jù)查詢請求后,可根據(jù)該業(yè)務(wù)數(shù)據(jù)查詢請求,確定出待查詢的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別,進而從該區(qū)塊鏈節(jié)點所對應(yīng)的數(shù)據(jù)庫中查詢與該數(shù)據(jù)類別相匹配的業(yè)務(wù)數(shù)據(jù)。其中,對于數(shù)據(jù)類別的確定方式來說,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)數(shù)據(jù)查詢請求后,可確定出該業(yè)務(wù)數(shù)據(jù)查詢請求中包含的索引字段key,并將該索引字段key確定為待查詢業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別。上述數(shù)據(jù)表不僅支持以key為索引字段查詢業(yè)務(wù)數(shù)據(jù)的方式,也支持用戶自建索引來查詢業(yè)務(wù)數(shù)據(jù),例如,在上述示例中,若用戶需要以價格范圍來進行業(yè)務(wù)數(shù)據(jù)的查詢時,則可將價格范圍輸入到區(qū)塊鏈節(jié)點中,而區(qū)塊鏈節(jié)點則可根據(jù)用戶輸入的價格范圍,從上述數(shù)據(jù)庫的數(shù)據(jù)表中查詢符合該價格范圍的業(yè)務(wù)數(shù)據(jù),進而將符合條件的業(yè)務(wù)數(shù)據(jù)返回給用戶進行查看。在現(xiàn)有技術(shù)中,區(qū)塊鏈節(jié)點存儲業(yè)務(wù)數(shù)據(jù)時,需要按照智能合約所規(guī)定的數(shù)據(jù)存儲格式將該業(yè)務(wù)數(shù)據(jù)寫入到區(qū)塊鏈中,與此同時,區(qū)塊鏈節(jié)點通常默認按照這種數(shù)據(jù)存儲格式將該業(yè)務(wù)數(shù)據(jù)存儲在自身對應(yīng)的存儲器中,所以,在編寫智能合約的過程中,通常需要規(guī)定區(qū)塊鏈節(jié)點按照這種規(guī)定的數(shù)據(jù)存儲格式將該業(yè)務(wù)數(shù)據(jù)存儲在自身對應(yīng)的存儲器中,相應(yīng)的,用戶利用該智能合約通過區(qū)塊鏈節(jié)點進行業(yè)務(wù)數(shù)據(jù)查詢時,也需要按照固定的查詢方式(如需要通過固定形式的索引字段)來從區(qū)塊鏈節(jié)點對應(yīng)的存儲器中查詢相應(yīng)的業(yè)務(wù)數(shù)據(jù)。然而,在實際應(yīng)用中,用戶在進行業(yè)務(wù)數(shù)據(jù)查詢的過程中所使用的索引字段并不唯一,這就導致了用戶查詢業(yè)務(wù)數(shù)據(jù)時所使用的索引字段可能并不是智能合約所規(guī)定的索引字段,而用戶一旦使用了與智能合約不相符的索引字段,則區(qū)塊鏈節(jié)點無法通過該智能合約在該區(qū)塊鏈節(jié)點中查詢到以往的業(yè)務(wù)數(shù)據(jù)。例如,區(qū)塊鏈節(jié)點通過智能合約將該業(yè)務(wù)請求按照上述預設(shè)的數(shù)據(jù)存儲格式存儲在自身對應(yīng)的存儲器中時,用戶后續(xù)通常只能以key為索引字段,從該存儲器中進行業(yè)務(wù)數(shù)據(jù)的查詢。而由于區(qū)塊鏈節(jié)點通常是通過智能合約將各業(yè)務(wù)數(shù)據(jù)按照智能合約所規(guī)定的設(shè)定數(shù)據(jù)格式逐條進行存儲的,即,并不是按照類似關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)表的形式存儲各業(yè)務(wù)數(shù)據(jù)的,所以,當用戶需要以value中記錄的內(nèi)容進行業(yè)務(wù)數(shù)據(jù)的查詢時,該智能合約將無法有效的支持用戶在區(qū)塊鏈節(jié)點所輸入的查詢字段,這就導致了用戶可能無法通過該智能合約,從該區(qū)塊鏈節(jié)點對應(yīng)的存儲器中查詢到以往的業(yè)務(wù)數(shù)據(jù)(因為以往的業(yè)務(wù)數(shù)據(jù)僅支持以key為索引字段的查詢),或是需要使區(qū)塊鏈節(jié)點按照用戶所輸入的查詢字段,通過較長時間的遍歷,才能從該區(qū)塊鏈節(jié)點對應(yīng)的存儲器中查找到相應(yīng)的業(yè)務(wù)數(shù)據(jù),從而給用戶帶來了不便。而在本申請實施例中,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,可通過對該業(yè)務(wù)請求進行解析,確定出該業(yè)務(wù)請求中所包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù),并最終將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類型與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在該區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。這樣一來,在用戶查詢業(yè)務(wù)數(shù)據(jù)時,可以基于數(shù)據(jù)庫中的這種對應(yīng)關(guān)系實現(xiàn)查詢,避免了現(xiàn)有區(qū)塊鏈中基于索引進行查詢存在的問題,增加了區(qū)塊鏈中數(shù)據(jù)查詢的靈活性,有效提升數(shù)據(jù)查詢效率。需要說明的是,在本申請實施例中,數(shù)據(jù)庫中也可僅以標識信息來區(qū)分各用戶之間的業(yè)務(wù)數(shù)據(jù),而不對每個用戶進行業(yè)務(wù)類型上的分類,所以,在上述過程中,區(qū)塊鏈節(jié)點無論是構(gòu)建數(shù)據(jù)庫還是構(gòu)建數(shù)據(jù)庫中的數(shù)據(jù)表,抑或是從數(shù)據(jù)庫中確定數(shù)據(jù)表,則均可通過標識信息來實現(xiàn)。當然,上述數(shù)據(jù)庫也可僅通過業(yè)務(wù)類型對業(yè)務(wù)數(shù)據(jù)進行區(qū)分,而具體使用哪種方式來對業(yè)務(wù)數(shù)據(jù)進行區(qū)分,則取決于業(yè)務(wù)需要而定。為了能夠進一步的說明上述實施例所提供的數(shù)據(jù)存儲的過程,在本申請實施例中,將按照具體的執(zhí)行過程對本申請所提供的數(shù)據(jù)存儲方法進行進一步說明,如圖3所示。圖3為本申請實施例提供的數(shù)據(jù)存儲的詳細過程,具體包括以下步驟:s301:區(qū)塊鏈節(jié)點接收業(yè)務(wù)請求。區(qū)塊鏈節(jié)點可接收用戶通過終端設(shè)備發(fā)送的業(yè)務(wù)請求,其中,區(qū)塊鏈節(jié)點可以是一個終端設(shè)備,也可以是一個服務(wù)器,抑或是能夠處理基于區(qū)塊鏈技術(shù)的相關(guān)業(yè)務(wù)的客戶端。s302:對所述業(yè)務(wù)請求進行解析,確定所述業(yè)務(wù)請求中包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)。區(qū)塊鏈節(jié)點在接收到上述業(yè)務(wù)請求后,可對該業(yè)務(wù)請求進行解析,以確定出該業(yè)務(wù)請求中所包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別所對應(yīng)的業(yè)務(wù)數(shù)據(jù),其中,區(qū)塊鏈節(jié)點可以通過預設(shè)的解析程序,對該業(yè)務(wù)請求實施解析,而這里提到的解析程序可以是區(qū)塊鏈節(jié)點運維人員根據(jù)實際需求設(shè)置的。s303:按照預設(shè)的數(shù)據(jù)格式,將解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到數(shù)據(jù)序列。區(qū)塊鏈節(jié)點從上述業(yè)務(wù)請求解析出該業(yè)務(wù)請求所包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別所對應(yīng)的業(yè)務(wù)數(shù)據(jù)后,可按照預設(shè)的數(shù)據(jù)格式,將解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到數(shù)據(jù)序列。其中,得到數(shù)據(jù)序列的具體過程可以是:區(qū)塊鏈節(jié)點可將解析出的這些數(shù)據(jù)按照一定的形式進行序列化,從而得到相應(yīng)的數(shù)據(jù)序列。s304:將所述業(yè)務(wù)請求發(fā)送至共識網(wǎng)絡(luò)中進行共識,并當確定所述業(yè)務(wù)請求通過所述共識后,將所述數(shù)據(jù)序列存儲在所述區(qū)塊鏈節(jié)點的區(qū)塊鏈中。區(qū)塊鏈節(jié)點在接收到業(yè)務(wù)請求的同時,可將該業(yè)務(wù)請求發(fā)送至共識網(wǎng)絡(luò)中,以使共識網(wǎng)絡(luò)中的其他區(qū)塊鏈節(jié)點對該業(yè)務(wù)請求進行共識,當確定該業(yè)務(wù)請求通過其他區(qū)塊鏈節(jié)點的共識后,則可將該業(yè)務(wù)請求按照上述數(shù)據(jù)序列的形式存儲在自身保存的區(qū)塊鏈中,以備后續(xù)對業(yè)務(wù)數(shù)據(jù)進行數(shù)據(jù)驗證所使用。其中,在本申請實施例中,區(qū)塊鏈節(jié)點可以每接收到一個業(yè)務(wù)請求,即將該業(yè)務(wù)請求發(fā)送至共識網(wǎng)絡(luò)中進行共識,也可以先接收各用戶發(fā)送的各業(yè)務(wù)請求,當確定到達共識階段時,將接收到的各業(yè)務(wù)請求打包成一個預處理塊,并將該預處理塊發(fā)送至共識網(wǎng)絡(luò)中進行共識,相應(yīng)的,區(qū)塊鏈節(jié)點在接收到各用戶發(fā)送的每個業(yè)務(wù)請求后,可對每個業(yè)務(wù)請求進行逐一解析,以確定出每個業(yè)務(wù)請求所包含的數(shù)據(jù)類別以及數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù),而后按照預設(shè)的數(shù)據(jù)格式,分別對每個業(yè)務(wù)請求所包含的數(shù)據(jù)類別以及數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到各數(shù)據(jù)序列。一旦確定出發(fā)送至共識網(wǎng)絡(luò)中的預處理塊通過共識網(wǎng)絡(luò)中其他區(qū)塊鏈節(jié)點的共識,則可將該預處理塊中包含的各業(yè)務(wù)請求以各業(yè)務(wù)請求對應(yīng)的各數(shù)據(jù)序列的形式存儲在自身包含的區(qū)塊鏈中。s305:將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。區(qū)塊鏈節(jié)點在對解析出的各數(shù)據(jù)類別以及業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化的同時,還可將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在該區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中,以保證用戶后續(xù)能夠在該數(shù)據(jù)庫中按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系,查找到相應(yīng)的業(yè)務(wù)數(shù)據(jù)。其中,區(qū)塊鏈節(jié)點可以并行的執(zhí)行上述步驟s303以及步驟s305,即,區(qū)塊鏈節(jié)點在將解析出的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化得到數(shù)據(jù)序列的過程中,并不影響區(qū)塊鏈節(jié)點執(zhí)行將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在自身對應(yīng)數(shù)據(jù)庫中這一步驟。當然,區(qū)塊鏈節(jié)點也可以在確定上述業(yè)務(wù)請求通過共識網(wǎng)絡(luò)中其他區(qū)塊鏈節(jié)點的共識后,則將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在自身對應(yīng)的數(shù)據(jù)庫中。以上為本申請實施例提供的數(shù)據(jù)存儲以及查詢方法,基于同樣的思路,本申請實施例還分別提供數(shù)據(jù)存儲以及查詢的裝置,如圖4、5所示。圖4為本申請實施例提供的一種數(shù)據(jù)存儲的裝置示意圖,具體包括:接收模塊401,接收業(yè)務(wù)請求;數(shù)據(jù)解析模塊402,從所述業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù);存儲模塊403,將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在所述區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。所述裝置還包括:共識模塊404,按照預設(shè)的數(shù)據(jù)格式,將所述業(yè)務(wù)請求中包含的各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)進行轉(zhuǎn)化,得到數(shù)據(jù)序列;利用共識網(wǎng)絡(luò)對所述業(yè)務(wù)請求進行共識;在所述業(yè)務(wù)請求通過所述共識后,將所述數(shù)據(jù)序列存儲到所述裝置的區(qū)塊鏈中。所述數(shù)據(jù)解析模塊402,確定所述業(yè)務(wù)請求對應(yīng)的業(yè)務(wù)類型和/或標識信息;所述存儲模塊403,按照預設(shè)的語句格式,將解析出的各數(shù)據(jù)類別、各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù)、業(yè)務(wù)類型和/或標識信息進行轉(zhuǎn)換,得到數(shù)據(jù)存儲語句;通過執(zhí)行所述數(shù)據(jù)存儲語句,將解析出的業(yè)務(wù)數(shù)據(jù)存儲在所述數(shù)據(jù)庫中。所述存儲模塊403,通過執(zhí)行所述數(shù)據(jù)存儲語句,當確定尚未查找到與所述業(yè)務(wù)類型和/或標識信息相匹配的數(shù)據(jù)庫時,根據(jù)所述業(yè)務(wù)類型和/或標識信息,構(gòu)建與所述業(yè)務(wù)類型和/或所述標識信息對應(yīng)的數(shù)據(jù)庫;將解析出的業(yè)務(wù)數(shù)據(jù)存儲在構(gòu)建的所述數(shù)據(jù)庫中。所述存儲模塊403,針對從所述數(shù)據(jù)序列解析出的每個數(shù)據(jù)類別,當確定數(shù)據(jù)庫中不包含該數(shù)據(jù)類別時,在所述數(shù)據(jù)庫中創(chuàng)建該數(shù)據(jù)類別;將該數(shù)據(jù)類別對應(yīng)業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫中。圖5為本申請實施例提供的一種數(shù)據(jù)查詢的裝置示意圖,具體包括:請求接收模塊501,接收業(yè)務(wù)數(shù)據(jù)查詢請求;類別確定模塊502,根據(jù)所述業(yè)務(wù)數(shù)據(jù)查詢請求,確定待查詢的業(yè)務(wù)數(shù)據(jù)所對應(yīng)的數(shù)據(jù)類別;數(shù)據(jù)查詢模塊503,從所述裝置對應(yīng)的數(shù)據(jù)庫中,查詢與所述數(shù)據(jù)類別相匹配的業(yè)務(wù)數(shù)據(jù),所述數(shù)據(jù)庫中包含有數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系。在本申請實施例中,區(qū)塊鏈節(jié)點在接收到用戶發(fā)送的業(yè)務(wù)請求后,可從該業(yè)務(wù)請求中解析出各數(shù)據(jù)類別以及各數(shù)據(jù)類別對應(yīng)的業(yè)務(wù)數(shù)據(jù),并將解析出的業(yè)務(wù)數(shù)據(jù)按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)的對應(yīng)關(guān)系存儲在該區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中。通過對業(yè)務(wù)數(shù)據(jù)的解析,可以按照數(shù)據(jù)類別與業(yè)務(wù)數(shù)據(jù)之間的對應(yīng)關(guān)系,將業(yè)務(wù)數(shù)據(jù)存儲至區(qū)塊鏈節(jié)點對應(yīng)的數(shù)據(jù)庫中,這樣,在用戶查詢業(yè)務(wù)數(shù)據(jù)時,可以基于數(shù)據(jù)庫中的這種對應(yīng)關(guān)系實現(xiàn)查詢,避免了現(xiàn)有區(qū)塊鏈中基于索引進行查詢存在的問題,增加了區(qū)塊鏈中數(shù)據(jù)查詢的靈活性,有效提升數(shù)據(jù)查詢效率。在20世紀90年代,對于一個技術(shù)的改進可以很明顯地區(qū)分是硬件上的改進(例如,對二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進)還是軟件上的改進(對于方法流程的改進)。然而,隨著技術(shù)的發(fā)展,當今的很多方法流程的改進已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進。設(shè)計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設(shè)計人員自行編程來把一個數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請芯片制造廠商來設(shè)計和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實現(xiàn),它與程序開發(fā)撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現(xiàn)該邏輯方法流程的硬件電路??刂破骺梢园慈魏芜m當?shù)姆绞綄崿F(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲可由該(微)處理器執(zhí)行的計算機可讀程序代碼(例如軟件或固件)的計算機可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲器控制器還可以被實現(xiàn)為存儲器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種硬件部件,而對其內(nèi)包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機。具體的,計算機例如可以為個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導航設(shè)備、電子郵件設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。當前第1頁12當前第1頁12