一種Json數據的存儲方法及裝置的制造方法
【技術領域】
[0001]本申請涉及數據存儲技術,特別涉及一種Json數據的存儲方法及裝置。
【背景技術】
[0002]本申請涉及應用程序處理領域,尤其涉及在內存比較緊張的嵌入式系統中,基于Json存儲較大信息量的配置或數據摘要的方法及系統。
[0003]現有技術下,Json作為一種數據存儲的結構得到了廣泛的應用,Json是一種比較靈活而且直觀的數據存儲結構,它具有良好的兼容性和可擴展性,很適合作為客戶端與設備端之間的交互載體。
[0004]Json以字符串的形式進行數據存儲,對存儲的數據加入描述,在設備開發和調試階段有很好的直觀性。具體的,Json數據通常以數據表的形式存在,Json數據表主要有key和value兩個屬性值,key是一個字符串,用于標識鍵值對的名稱,value為對應的數值。在存儲大量的配置信息時,Json首先將數據按照key-value鍵值對的形式進行序列化,進而為每一個鍵值對動態申請內存,并把相應的數據通過關系鏈的形式存放到這段內存中。如果需要存儲的數據量很大時,Json會申請大量的內存并將序列后的數據長時間存放在這片內存中。
[0005]顯然,以Json結構進行數據存儲,需要大數量節點進行配置,這會占用較大的內存,使得本來內存比較小的嵌入式系統內存資源更加顯得緊湊;另一方面,Json數據表具有很強的擴展性,能夠隨時進行添加、修改等操作,但對大型的Json表增刪查找只會涉及小面積范圍數據的變更,如果整個Json表長時間駐存在內存中會導致大量內存的浪費。
[0006]現有Json的模塊化技術大多應用在前端web或者內存比較充足的平臺上,而且模塊數據的解析依賴功能模塊,不適合嵌入式系統的應用場景,也不利于跨平臺的使用;此夕卜,現有的Json模塊化技術要求模塊中的數據必須為一個完整的Json表,不適合包含大數量節點的Json表的存儲和處理。
[0007]因此,為了在嵌入式系統中實現Json數據在存儲,同時也兼容Json數據對內存消耗過大的缺陷,需要對Json數據的存儲機制進行改進,保證Json數據在運行過程中不會因為節點的擴充導致內存無限增大。
【發明內容】
[0008]本申請實施例提供一種Json數據的存儲方法及裝置,用以在內存不充足的環境中,實現Json數據的順利存儲。
[0009]本申請實施例提供的具體技術方案如下:
[0010]一種Json數據存儲方法,包括:
[0011 ]將Json數據表按照設定的路徑深度N分割為若干Json數據信息;
[0012]分別提取每一個Json數據信息的關鍵信息生成相應的Json摘要信息;
[0013]分別針對每一個Json數據信息和相應的Json摘要信息生成相應的關系索引信息;
[0014]將各個Json數據信息、Json摘要信息和關系索引信息通過內存映射至指定存儲區域中保存。
[0015]較佳的,將Json數據表按照設定的路徑深度N分割為若干Json數據信息后,在分別針對每一個Json數據信息和相應的Json摘要信息生成相應的關系索引信息之前,進一步包括:
[0016]針對每一個占用內存數據量超過預設數據量閾值的Json數據信息,再次分割為若干個Json數據信息,其中再次劃分后的每一個Json數據信息所占用內存數據量不大于所述預設數據量閾值。
[0017]較佳的,將各個Json數據信息、Json摘要信息和關系索引信息通過內存映射至指定存儲區域中保存,包括:
[0018]在內存中創建內存交換區,以及在內存交換區和指定的存儲區域之間建立映射關系;
[0019]將Json數據表分割后獲得的各個Json數據信息、Json摘要信息和關系索引信息的總占用內存數據量大小緩存在內存交換區中;
[0020]基于所述述映射關系,將Json數據表分割后獲得的各個Json數據信息、Json摘要信息和關系索引信息,經內存交換區映射至指定存儲區域內的空閑區域中。
[0021]較佳的,基于所述述映射關系,將Json數據表分割后獲得的各個Json數據信息、Json摘要信息和關系索引信息,經內存交換區映射至指定存儲區域內的空閑區域中,包括:[0022 ]可以根據各個Json數據信息、J son摘要信息和關系索引信息的總占用內存數據量判斷所述指定存儲區域中是否存在相應大小的空閑區域,若是,則基于所述映射關系進行映射,否則,先在所述指定存儲區域中創建相應大小的空閑區域后,再基于所述映射關系進行映射。
[0023]較佳的,進一步包括:
[0024]在內存或不同于所述指定存儲區域的其他存儲介質中記錄各個關系索引信息的索引配置信息。
[0025]較佳的,進一步包括:
[0026]接收到針對任一Json數據信息的更新指令時,讀取所述索引配置信息;
[0027]基于所述索引配置信息在所述指定存儲區域中讀取所述任一Json數據信息對應的關系索引ig息;
[0028]基于讀取的關系索引信息,在所述指定存儲區域中獲取所述任一Json數據信息對應的Json摘要信息,再基于獲取的Json摘要信息定位所述任一 Json數據信息;
[0029]根據所述更新指令對所述任一Json數據信息進行數據更新,以及對相應的Json摘要信息和關系索引信息進行適應性更新;
[0030]將更新后的所述任一Json數據信息及相應的Json摘要信息和關系索引信息,進行所述指定存儲區域中重新進行保存。
[0031]一種Json數據存儲裝置,包括:
[0032]分割模塊,用于將Json數據表按照設定的路徑深度N分割為若干Json數據信息;
[0033]第一處理模塊,用于分別提取每一個Json數據信息的關鍵信息生成相應的Json摘要信息;
[0034]第二處理模塊,用于分別針對每一個Json數據信息和相應的Json摘要信息生成相應的關系索引ig息;
[0035]映射模塊,用于將各個Json數據信息、Json摘要信息和關系索引信息通過內存映射至指定存儲區域中保存。
[0036]較佳的,所述分割單元將Json數據表按照設定的路徑深度N分割為若干Json數據信息后,在所述第二處理模塊在分別針對每一個Json數據信息和相應的Json摘要信息生成相應的關系索引信息之前,所述分割單元進一步用于:
[0037]針對每一個占用內存數據量超過預設數據量閾值的Json數據信息,再次分割為若干個Json數據信息,其中再次劃分后的每一個Json數據信息所占用內存數據量不大于所述預設數據量閾值。
[0038]較佳的,將各個Json數據信息、Json摘要信息和關系索引信息通過內存映射至指定存儲區域中保存時,所述映射單元用于:
[0039]在內存中創建內存交換區,以及在內存交換區和指定的存儲區域之間建立映射關系;
[0040]將Json數據表分割后獲得的各個Json數據信息、Json摘要信息和關系索引信息的總占用內存數據量大小緩存在內存交換區中;
[0041 ]基于所述述映射關系,將Json數據表分割后獲得的各個Json數據信息、Json摘要信息和關系索引信息,經內存交換區映射至指定存儲區域內的空閑區域中。
[0042]較佳的,基于所述述映射關系,將Js