結構化數據的存取方法以及裝置的制造方法
【技術領域】
[0001]本發明涉及數據庫技術領域,特別是涉及一種結構化數據的存取方法以及其裝置。
【背景技術】
[0002]key-value (鍵-值)數據庫因其沒有復雜的關系操作,并能提供高效的讀寫性能、可靠性和持久化,因此在數據的存儲方面得到廣泛應用。但是,key-value數據庫中的value值只能保存有限的數據類型,例如Redis數據庫是一種高性能的key-value數據庫,其也只能保存string(字符串)、hash (哈希類型)、list (鏈表)、set (集合)及sortedset (有序集合)五種類型。并且Key-value數據庫的value值必須是一個連續的內存數據塊,而結構化數據無法保證是連續的內存數據塊,如果要用key-value數據庫保存結構化數據,要將不是連續的內存數據的結構化數據進行拆分保存,無法一次性保存。
【發明內容】
[0003]本發明主要解決的技術問題是提供一種結構化數據的存取方法以及其裝置,能夠一次性地將結構化數據保存到key-value數據庫中。
[0004]為解決上述技術問題,本發明采用的一個技術方案是:提供一種結構化數據的存取方法,該方法包括以下步驟:接收將結構化數據存儲到key-value數據庫的指令;根據預設的協議將結構化數據編碼為可一次性存儲于key-value數據庫的數據;將經過編碼后的結構化數據存儲于key-value數據庫中。
[0005]其中,根據預設的協議將結構化數據編碼為可一次性存儲于key-value數據庫的數據進一步包括:根據預設的協議將結構化數據編碼為連續的內存數據;定義連續的內存數據為key-value數據庫可存儲的類型之一。
[0006]其中,根據預設的協議將結構化數據編碼為可一次性存儲于key-value數據庫的數據的之后進一步包括:判斷是否編碼成功;若編碼成功,則執行將經過編碼后的結構化數據存儲于key-value數據庫中的步驟;若編碼失敗,則返回編碼失敗的信息,并重新接收將結構化數據存儲到key-value數據庫的指令。
[0007]其中,方法還包括:接收從key-value數據庫獲取經過編碼后的結構化數據的指令;從key-value數據庫中讀取經過編碼后的結構化數據,并根據預設的協議對經過編碼后的數據進行解碼。
[0008]其中,預設的協議包括二進制協議、Protobuf協議、ASNl協議、xml協議或者json協議。
[0009]為解決上述技術問題,本發明采用的又一個技術方案是:提供一種結構化數據的存取裝置,裝置包括:存儲指令接收模塊,用于接收將結構化數據存儲到key-value數據庫的指令;編碼模塊,用于根據預設的協議將結構化數據編碼為可一次性存儲于key-value數據庫的數據;其中,key-value數據庫存儲經過編碼后的結構化數據。
[0010]其中,編碼模塊將結構化數據編碼為連續的內存數據,并定義連續的內存數據為key-value數據庫可存儲的類型之一。
[0011]其中,裝置還包括判斷模塊,用于判斷是否編碼成功,key-value數據庫在編碼成功時存儲經過編碼后的結構化數據,存儲指令接收模塊在編碼失敗時接收編碼失敗的信息,并重新接收將結構化數據存儲到key-value數據庫的指令。
[0012]其中,裝置還包括:獲取指令接收模塊,用于接收從key-value數據庫獲取經過編碼后的結構化數據的指令;解碼模塊,用于從key-value數據庫讀取經過編碼后的結構化數據并對經過編碼后的數據進行解碼。
[0013]其中,預設的協議包括二進制協議、Protobuf協議、ASNl協議、xml協議或者json協議。
[0014]本發明的有益效果是:區別于現有技術的情況,本發明在將結構化數據存入key-value數據庫之前將其編碼為可一次性存儲于key-value數據庫的數據,因此,可一次性地保存結構化數據,提高了存儲的效率和準確率。
【附圖說明】
[0015]圖1是發明實施例提供的一種結構化數據的存取裝置的結構示意圖;
圖2是本發明的一種結構化數據存儲到key-value數據庫的原理圖;
圖3是本發明實施例提供的一種結構化數據的存取方法的流程圖。
【具體實施方式】
[0016]請參閱圖1,圖1是本發明實施例提供的一種結構化數據的存取裝置的結構示意圖,其中,結構化數據存儲和獲取的對象是key-value數據庫100,其包括redis (內存鍵值存儲)數據庫或者memcache (高速緩存)數據庫。如圖1所示,本實施例的存取裝置10包括將結構化數據存儲到key-value數據庫100的裝置11以及從key-value數據庫100獲取結構化數據的裝置12。
[0017]其中,將結構化數據存儲到key-value數據庫100的裝置11包括存儲指令接收模塊111以及編碼模塊112。
[0018]存儲指令接收模塊111用于接收將結構化數據存儲到key-value數據庫100的指令。具體而言,存儲指令可以是按照預設的時間自動發送,也可以是用戶根據實際的需要隨機發送,由此,接收模塊111可以對應自動發送的操作設置按照預設的時間接收存儲指令,也可以按照隨機發送的操作設置為隨機接收存儲指令。
[0019]編碼模塊112用于根據預設的協議將結構化數據編碼為可一次性存儲于key-value數據庫100的數據。具體為,編碼模塊112根據預設的協議將結構化數據編碼為連續的內存數據,并定義連續的內存數據為key-value數據庫100可存儲的類型之一。
[0020]具體原理請參閱圖2,圖2是本發明的一種結構化數據存儲到key-value數據庫的原理圖。結構化數據可以由一種或者兩種或以上的類型的數據組成。本實施例以結構化數據由兩種類型的數據組成進行舉例。如圖2所示,定義一結構化數據M,其由string類型的數據O和hash類型的數據P組成。而string類型的數據O存儲在數據庫的內存的棧中,hash類型的數據P存儲在數據庫的內存的堆中。本實施例將該數據O和數據P進行編碼成一個連續的內存數據塊,并定義為set類型,進而將數據類型為set的數據存儲到key-value數據庫100的數據區中,從而可以一次性完成存儲,并將數據O和數據P存儲在同一個連續的內存中。
[0021]可選的,預設的協議包括二進制協議、Protobuf (Protocol buffer,協議緩沖區)協議、ASNl (Abstract Syntax Notat1n One,抽象語法記法一)協議、xml (ExtensibleMarkup Language,翻譯為可擴展置標語言)協議或者 json (JavaScript Object Notat1n,javaScript對象符號)協議。
[0022]可選的,將結構化數據存儲到key-value數據庫100的裝置11還包括判斷模塊113,用于判斷是否編碼成功。key-value數據庫100在編碼成功時存儲經過編碼后的結構化數據,存儲指令接收模塊111在編碼失敗時接收編碼失敗的信息,并重新接收將結構化數據存儲到key-value數據庫100的指令。
[0023]以上介紹的是將結構化數據存儲到key-value數據庫100的裝置11的結構,其通過設置編碼模塊112,使得結構化數據可以一次性存儲于key-value數據庫100中,并保證了數據的在key-value數據庫100內存中的連續性。提高了存儲的準確率和效率。
[0024]以下將具體介紹從key-value數據庫獲取結構化數據的裝置12。
[0025]從key-value數據庫獲取結構化數據的裝置12包括獲取指令接收模塊121和解碼模塊122。
[0026]其中,獲取指令接收模塊121用于接收從key-value數據庫100獲取經過編碼后的結構化數據的指令。
[0027]解碼模塊122用于從key-value數據庫100讀取經過編碼后的結構化數據并對經過編碼后的數據進行解碼。其中