国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種內(nèi)存數(shù)據(jù)存儲方法

      文檔序號:10470872閱讀:258來源:國知局
      一種內(nèi)存數(shù)據(jù)存儲方法
      【專利摘要】本發(fā)明提供一種內(nèi)存數(shù)據(jù)存儲方法,包括:將數(shù)據(jù)表分解成若干數(shù)據(jù)塊;將每個數(shù)據(jù)塊以行的形式分解成若干大小相同的行數(shù)據(jù)分組集合;將待存儲的數(shù)據(jù)以列的形式存儲在行數(shù)據(jù)分組集合的數(shù)據(jù)區(qū);將行數(shù)據(jù)分組集合中的數(shù)據(jù)行數(shù)、每列數(shù)據(jù)的字節(jié)數(shù)寫入元數(shù)據(jù)表頭區(qū);對數(shù)據(jù)區(qū)的數(shù)據(jù)建立索引,寫入索引區(qū);將同步標(biāo)記寫入同步標(biāo)記區(qū),以區(qū)分連續(xù)的行數(shù)據(jù)分組集合;分別對行數(shù)據(jù)分組集合的各個區(qū)域進行數(shù)據(jù)壓縮;對數(shù)據(jù)塊進行數(shù)據(jù)壓縮。本發(fā)明采用行、列混合存儲模式,具備了相當(dāng)于行存儲的數(shù)據(jù)加載速度和負載適應(yīng)能力,避免了數(shù)據(jù)查詢時不必要的列讀取,混合了多種數(shù)據(jù)壓縮方式,對列維度進行壓縮,有效提升了內(nèi)存空間的利用率。
      【專利說明】一種內(nèi)存數(shù)據(jù)存儲方法
      [0001]
      技術(shù)領(lǐng)域
      [0002]本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,具體是一種內(nèi)存數(shù)據(jù)存儲方法。
      [0003]
      【背景技術(shù)】
      [0004]目前內(nèi)存數(shù)據(jù)存儲大多采用行式或者列式存儲,行存儲數(shù)據(jù)加載快,但是無法避免讀取不必要的列,海量數(shù)據(jù)查詢性能低,列存儲查詢性能高,但是加載慢,同時,行或者列存儲都存在壓縮率低、內(nèi)存空間使用浪費的問題。
      [0005]

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明的目的在于提供一種內(nèi)存數(shù)據(jù)存儲方法,采用行、列混合存儲模式,能夠充分發(fā)揮行存儲寫入性能的優(yōu)勢以及列存儲讀取性能的優(yōu)勢,提高內(nèi)存空間利用率。
      [0007]本發(fā)明的技術(shù)方案為:
      一種內(nèi)存數(shù)據(jù)存儲方法,包括以下步驟:
      (1)將數(shù)據(jù)表分解成若干數(shù)據(jù)塊;
      (2)將每個數(shù)據(jù)塊以行的形式分解成若干大小相同的行數(shù)據(jù)分組集合,所述行數(shù)據(jù)分組集合分為四個區(qū)域,分別是同步標(biāo)記區(qū)、元數(shù)據(jù)表頭區(qū)、數(shù)據(jù)區(qū)和索引區(qū);
      (3)將待存儲的數(shù)據(jù)以列的形式存儲在行數(shù)據(jù)分組集合的數(shù)據(jù)區(qū);
      (4)將行數(shù)據(jù)分組集合中的數(shù)據(jù)行數(shù)、每列數(shù)據(jù)的字節(jié)數(shù)寫入元數(shù)據(jù)表頭區(qū);
      (5)對數(shù)據(jù)區(qū)的數(shù)據(jù)建立索引,寫入索引區(qū);
      (6)將同步標(biāo)記寫入同步標(biāo)記區(qū),以區(qū)分連續(xù)的行數(shù)據(jù)分組集合;
      (7)分別對行數(shù)據(jù)分組集合的各個區(qū)域進行數(shù)據(jù)壓縮;
      (8)對數(shù)據(jù)塊進行數(shù)據(jù)壓縮。
      [0008]所述的內(nèi)存數(shù)據(jù)存儲方法,所述步驟(7)具體包括:
      a、對元數(shù)據(jù)表頭區(qū)中的數(shù)據(jù)采用行程長度編碼算法進行壓縮;
      b、對數(shù)據(jù)區(qū)進行數(shù)據(jù)壓縮時,對于重復(fù)值低于預(yù)設(shè)閾值的列,若為整型數(shù)據(jù),則采用行程長度編碼算法進行壓縮,若為字符型數(shù)據(jù),則采用字典編碼算法進行壓縮,對于重復(fù)值高于預(yù)設(shè)閾值的列,則采用gzip算法進行壓縮。
      [0009]由上述技術(shù)方案可知,本發(fā)明采用行、列混合存儲模式,具備了相當(dāng)于行存儲的數(shù)據(jù)加載速度和負載適應(yīng)能力,避免了數(shù)據(jù)查詢時不必要的列讀取,混合了多種數(shù)據(jù)壓縮方式,對列維度進行壓縮,有效提升了內(nèi)存空間的利用率。
      [0010]
      【附圖說明】
      [0011 ]圖1是本發(fā)明的方法流程圖;
      圖2是本發(fā)明的數(shù)據(jù)存儲示意圖。
      [0012]
      【具體實施方式】
      [0013]下面結(jié)合附圖和具體實施例進一步說明本發(fā)明。
      [0014]如圖1所示,一種內(nèi)存數(shù)據(jù)存儲方法,包括以下步驟:
      S1、將數(shù)據(jù)表分解成若干數(shù)據(jù)塊Block。
      [0015]S2、將每個數(shù)據(jù)塊Block以行的形式分解成若干大小相同的行數(shù)據(jù)分組集合RowGroup,每個Row Group包含四個區(qū)域,分別是同步標(biāo)記區(qū)Sync Marker、元數(shù)據(jù)表頭區(qū)Metadata Header、數(shù)據(jù)區(qū)Data、索引區(qū)Index。
      [0016]Sync Marker用于區(qū)分一個Block中兩個連續(xù)的Row Group;Metadata Header用于記錄每個Row Group中有幾行數(shù)據(jù)、每列數(shù)據(jù)有多少字節(jié)以及每列數(shù)據(jù)中每一行數(shù)據(jù)的字節(jié)數(shù);Data用于按列存儲Row Group中的實際數(shù)據(jù),Index用于存儲輕量級的索引數(shù)據(jù)。
      [0017]S3、將待存儲的數(shù)據(jù)以列的形式存儲在Row Group的Data中;將Row Group中的數(shù)據(jù)行數(shù)、每列數(shù)據(jù)的字節(jié)數(shù)寫入Metadata Header中JfData中的數(shù)據(jù)建立索引,寫入Index中;將同步標(biāo)記寫入Sync Marker中,以區(qū)分連續(xù)的Row Group。
      [0018]S4、分別對Row Group的各個區(qū)域進行數(shù)據(jù)壓縮:
      對于Metadata Header中的數(shù)據(jù)采用行程長度編碼RLE(Run Length Encoding)算法進行壓縮,因為對于記錄每列數(shù)據(jù)中每一行數(shù)據(jù)的字節(jié)數(shù)是一樣的,這些數(shù)字重復(fù)連續(xù)出現(xiàn),因此采用這種算法可以獲得較高的壓縮比。在對Data中的實際數(shù)據(jù)進行壓縮時,對于重復(fù)值較少的列,Integer類型的列采用RLE算法進行壓縮,String類型的列采用字典編碼DE(Dict1nary Encoding)算法進行壓縮,對于重復(fù)值較多或者數(shù)據(jù)量較大的列,采用gzip算法進行壓縮。
      [0019]S5、采用gzip算法對Block進行數(shù)據(jù)壓縮,在查詢時,可配合延遲解壓算法(LazyDecompress1n)。
      [0020]本發(fā)明將內(nèi)存數(shù)據(jù)混合行式和列式進行存儲,通過先進行水平分區(qū),將盡可能多的數(shù)據(jù)記錄以行式進行存儲,再垂直分區(qū),在每個數(shù)據(jù)塊內(nèi)進行列式存儲,并且保證原始同一行的數(shù)據(jù)都在同一個結(jié)點上,如圖2所示。
      [0021]本發(fā)明可應(yīng)用于電力系統(tǒng)運營監(jiān)測中心,提升了內(nèi)存數(shù)據(jù)的讀寫性能,同時也提高了內(nèi)存空間的利用率。
      [0022]以上所述實施方式僅僅是對本發(fā)明的優(yōu)選實施方式進行描述,并非對本發(fā)明的范圍進行限定,在不脫離本發(fā)明設(shè)計精神的前提下,本領(lǐng)域普通技術(shù)人員對本發(fā)明的技術(shù)方案作出的各種變形和改進,均應(yīng)落入本發(fā)明的權(quán)利要求書確定的保護范圍內(nèi)。
      【主權(quán)項】
      1.一種內(nèi)存數(shù)據(jù)存儲方法,其特征在于,包括以下步驟: (1)將數(shù)據(jù)表分解成若干數(shù)據(jù)塊; (2)將每個數(shù)據(jù)塊以行的形式分解成若干大小相同的行數(shù)據(jù)分組集合,所述行數(shù)據(jù)分組集合分為四個區(qū)域,分別是同步標(biāo)記區(qū)、元數(shù)據(jù)表頭區(qū)、數(shù)據(jù)區(qū)和索引區(qū); (3)將待存儲的數(shù)據(jù)以列的形式存儲在行數(shù)據(jù)分組集合的數(shù)據(jù)區(qū); (4)將行數(shù)據(jù)分組集合中的數(shù)據(jù)行數(shù)、每列數(shù)據(jù)的字節(jié)數(shù)寫入元數(shù)據(jù)表頭區(qū); (5)對數(shù)據(jù)區(qū)的數(shù)據(jù)建立索引,寫入索引區(qū); (6)將同步標(biāo)記寫入同步標(biāo)記區(qū),以區(qū)分連續(xù)的行數(shù)據(jù)分組集合; (7)分別對行數(shù)據(jù)分組集合的各個區(qū)域進行數(shù)據(jù)壓縮; (8 )對數(shù)據(jù)塊進行數(shù)據(jù)壓縮。2.根據(jù)權(quán)利要求1所述的內(nèi)存數(shù)據(jù)存儲方法,其特征在于,所述步驟(7)具體包括: a、對元數(shù)據(jù)表頭區(qū)中的數(shù)據(jù)采用行程長度編碼算法進行壓縮; b、對數(shù)據(jù)區(qū)進行數(shù)據(jù)壓縮時,對于重復(fù)值低于預(yù)設(shè)閾值的列,若為整型數(shù)據(jù),則采用行程長度編碼算法進行壓縮,若為字符型數(shù)據(jù),則采用字典編碼算法進行壓縮,對于重復(fù)值高于預(yù)設(shè)閾值的列,則采用gzip算法進行壓縮。
      【文檔編號】G06F3/06GK105824574SQ201510882588
      【公開日】2016年8月3日
      【申請日】2015年12月7日
      【發(fā)明人】夏同飛, 楊棟樞, 陳 峰, 李志 , 徐海青, 范葉平, 孫飛, 劉才華, 石磊, 魏建國, 袁東, 王維佳, 王超, 郭振, 胡傳勝, 喬雄
      【申請人】國家電網(wǎng)公司, 南京南瑞集團公司, 國網(wǎng)江蘇省電力公司信息通信分公司, 安徽繼遠軟件有限公司, 國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1