本發明專利技術實施例提供了JSON數據存儲和訪問方法、裝置、計算機設備及介質,涉及數據處理技術領域,其中,存儲方法包括以下步驟:接收并緩存JSON數據,形成數據塊;分析數據塊內的數據模式,確定數據類型;根據數據塊的各列的空值位置生成bitmap并建立索引;根據數據塊的各列的數據類型和數據特征,對各列進行自適應編碼和壓縮;將bitmap、索引、數據類型和壓縮后的各列數據序列化并寫入到文件中。由于該方案通過使用bitmap記錄各列的空值位置,在訪問時通過bitmap還原各列的完整數據,以及各列分別采用自適應編碼和壓縮,提高了訪問效率,從而實現高壓縮率、快速的列存訪問和點查能力。快速的列存訪問和點查能力。快速的列存訪問和點查能力。
【技術實現步驟摘要】
JSON數據存儲和訪問方法、裝置、計算機設備及介質
[0001]本專利技術涉及數據處理
,特別涉及一種JSON數據存儲和訪問方法、裝置、計算機設備及介質。
技術介紹
[0002]關系型數據庫在不斷吸收新的技術中成長,其性能、適應范圍也在不斷擴大,它仍然是現在最主要的數據管理模式。受益于數據技術發展快速,數據驅動的業務也不斷演進,如何在關系型數據庫管理好模式不斷變化的數據就成為一個重要問題。一方面是需要將不同種類的數據源源不斷進來,另一方面是數據模式也隨著時間而變化。如果以傳統的固定屬性的列來存儲,當模式發生變化時,需要增減列,這要求數據管理員能預先知道數據模式的變化,但現實中往往難以做到。另一方面,增減列的開銷巨大。
[0003]JSON是存此類數據的一種主要選擇,它是一種嵌套的數據結構,支持非常靈活的層次。但相對于固定的屬性列,JSON存儲面臨效率問題。一方面,它需要存儲大量重復的key值;另一方面,它本質上是打破了列的概念,將所有列混在一起存儲。無法利用當下流行的列存高壓縮率,按列高效存儲的優勢。關系數據庫針對JSON做了大量優化,但仍存在上述缺點。以 PostgreSQL這一業界最強的開源關系數據庫為例,它的JSON類型以明文方式存儲JSON,即使以編碼過的JSONB方式存儲,也面臨無法按列存儲和優化的結果。
技術實現思路
[0004]有鑒于此,本專利技術實施例提供了一種JSON數據存儲方法,以解決了現有技術中JSON數據存儲占用空間大和數據的訪問效率低的問題。該方法包括:接收并緩存JSON數據,形成數據塊;分析所述數據塊內的數據模式,確定數據類型;根據所述數據塊的各列的空值位置生成bitmap并建立索引;根據所述數據塊的各列的數據類型和數據特征,對各列進行自適應編碼和壓縮;將所述bitmap、所述索引、所述數據類型和壓縮后的各列數據,序列化并寫入到文件中。
[0005]本專利技術實施例還提供了一種JSON數據訪問方法,所述方法包括:接收查詢條件;若所述查詢條件為key值,找到所述key值對應的列,根據數據類型對壓縮后的整列數據進行還原,再根據bitmap和bitmap的索引還原出包含空值在內的整列數據;若所述查詢條件為非key值,則將整個數據塊進行解壓,再過濾得到與所述查詢條件相應的值。
[0006]本專利技術實施例還提供了一種JSON數據存儲裝置,以解決了現有技術中JSON數據存儲占用空間大和數據的訪問效率低的問題。該裝置包括:接收緩存模塊,用于接收并緩存JSON數據,形成數據塊;
分析模塊,用于分析所述數據塊內的數據模式,確定數據類型;bitmap生成模塊,用于根據所述數據塊的各列的空值位置生成bitmap并建立索引;壓縮模塊,用于根據所述數據塊的各列的數據類型和數據特征,對各列進行自適應編碼和壓縮;寫入模塊,用于對所述bitmap、所述索引和壓縮后的各列數據,序列化并寫入到文件中。
[0007]本專利技術實施例還提供了一種JSON數據訪問裝置,包括:接收模塊,用于接收查詢條件;第一訪問模塊,用于若所述查詢條件為key值,找到所述key值對應的列,根據數據類型對壓縮后的整列數據進行還原,再根據bitmap和bitmap的索引還原出包含空值在內的整列數據;第二訪問模塊,用于若所述查詢條件為非key值,則將整個數據塊進行解壓,再過濾得到與所述查詢條件相應的值。
[0008]本專利技術實施例還提供了一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現上述任意的JSON數據存儲方法,和/或,所述處理器執行所述計算機程序時實現上述任意的JSON數據訪問方法,以解決了現有技術中JSON數據存儲占用空間大和數據的訪問效率低的技術問題。
[0009]本專利技術實施例還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有執行上述任意的JSON數據存儲方法的計算機程序,和/或,所述計算機可讀存儲介質存儲有執行上述任意的JSON數據訪問方法的計算機程序,以解決了現有技術中JSON數據存儲占用空間大和數據的訪問效率低的技術問題。
[0010]與現有技術相比,本說明書實施例采用的上述至少一個技術方案能夠達到的有益效果至少包括:接收并緩存JSON數據,并分析JSON數據模式,確定數據類型,進一步的根據JSON數據的各列的空值位置生成bitmap并建立索引,進而根據JSON數據的各列的數據類型和數據特征,對各列進行自適應編碼和壓縮,最后將所述bitmap、所述索引、所述數據類型和壓縮后的各列數據序列化并寫入到文件。實現了在列上采用列特征的專門壓縮效果,配合緩存的使用,一列數據的訪問僅需要一次I/O;另外,表格式的存儲方式減少了類似JSON這樣的復雜的編碼和路徑訪問,實現了數據的高效訪問。相比于直接將JSON數據的key值和value值作為明文存儲,采用通用算法壓縮,以及直接對單行數據進行編碼的方式,本申請的方法實現高壓縮率、快速的列存訪問和點查能力,節省用戶成本,提高系統性能。
附圖說明
[0011]為了更清楚地說明本申請實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。
[0012]圖1是本專利技術實施例提供的一種JSON數據的邏輯表示圖;圖2是本專利技術實施例提供的一種JSON數據的存儲方法的流程圖;圖3是本專利技術實施例提供的一種JSON數據的存儲形式的結構圖;
圖4是本專利技術實施例提供的一種JSON數據的訪問方法的流程圖;圖5是本專利技術實施例提供的計算機設備的結構框圖;圖6是本專利技術實施例提供的JSON數據的存儲裝置的結構框圖;圖7是本專利技術實施例提供的JSON數據的訪問裝置的結構框圖。
具體實施方式
[0013]下面結合附圖對本申請實施例進行詳細描述。
[0014]以下通過特定的具體實例說明本申請的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地了解本申請的其他優點與功效。顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。本申請還可以通過另外不同的具體實施方式加以實施或應用,本說明書中的各項細節也可以基于不同觀點與應用,在沒有背離本申請的精神下進行各種修飾或改變。需說明的是,在不沖突的情況下,以下實施例及實施例中的特征可以相互組合。基于本申請中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0015]對數據的相關的概念如下:JSON:以JSON格式描述key
?
value數據,如{"product": "postgres" , "version":12 .3},加載數據時會直接保存如上的JSON文本,每次讀取時進行完整的語法解析,并根據查詢需要輸出部分或全部內容。
[0016]JSONB:同樣以JSON格式描述key
?本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種JSON數據存儲方法,其特征在于,包括:接收并緩存JSON數據,形成數據塊;分析所述數據塊內的數據模式,確定數據類型;根據所述數據塊的各列的空值位置生成bitmap并建立索引;根據所述數據塊的各列的數據類型和數據特征,對各列進行自適應編碼和壓縮;將所述bitmap、所述索引、所述數據類型和壓縮后的各列數據,序列化并寫入到文件中。2.如權利要求1所述JSON數據存儲方法,其特征在于,所述分析所述數據塊內的數據模式,確定數據類型,包括:逐列分析所述數據塊內的數據模式,根據每列數據的數值范圍,采用該數值范圍對應的進制數的最小位寬表示每列的數據類型。3.如權利要求1所述JSON數據存儲方法,其特征在于,所述根據所述數據塊內的各列的空值位置生成bitmap并建立索引,包括:根據所述數據塊內的各列的空值位置生成bitmap;對所述數據塊內的各列建立bitmap的索引,對于bitmap相同的列采用相同的索引。4.如權利要求1所述JSON數據存儲方法,其特征在于,在所述分析所述數據塊內的數據模式,確定數據類型之前,還包括:建立內存中的索引表,維護所述數據塊的key值的map,針對每行數據,如果出現一個新的key值,則增加map中的一位,并填充相關的空值;如果在一行數據中缺失對應的key值,則填充相關的空值。5.如權利要求1所述JSON數據存儲方法,其特征在于,在所述將所述bitmap、所述索引、所述數據類型和壓縮后的各列數據,序列化并寫入到文件中之前,還包括:將所述數據塊的列數、行數、key值集合和offset數組序列化并寫入到文件中,所述offset數組用于記錄各個列的起始位置。6.如權利要求5所述JSON數據存儲方法,其特征在于,所述key值集合采用字典編碼。7.如權利要求5所述JSON數據存儲方法,其特征在于,所述方法還包括:對于多個數據塊的key值集合,再次進行去重編碼,編碼后的key值集合和offset...
【專利技術屬性】
技術研發人員:王勇,姚延棟,楊諭黔,于寧,翁巖青,高小明,唐鵬洲,王昊,
申請(專利權)人:北京四維縱橫數據技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。