国产精品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>

      一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法及系統(tǒng)的制作方法

      文檔序號:9597934閱讀:856來源:國知局
      一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]隨著計算機技術(shù)以及移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,海量存儲系統(tǒng)越來越成為經(jīng)濟社會發(fā)展的需要。這就為計算機系統(tǒng)的設(shè)計難度帶來巨大挑戰(zhàn),例如,單服務(wù)器的網(wǎng)絡(luò)并發(fā)量,以及數(shù)據(jù)查詢量和存儲數(shù)量都得到了前所未有的挑戰(zhàn)。如何在海量的結(jié)構(gòu)化信息中查找到目標數(shù)據(jù),成為業(yè)內(nèi)的一個難題,
      [0003]因此,如何對百億,千億的數(shù)據(jù)進行存儲并實現(xiàn)快速查詢,是本領(lǐng)域技術(shù)人員需要解決的技術(shù)問題。

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

      [0004]本發(fā)明的目的是提供一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法及系統(tǒng),能夠大大縮小每一列要查詢的數(shù)據(jù)量,不需要進行全表遍歷,可以有效地改進數(shù)據(jù)庫的檢索查詢速度。
      [0005]為解決上述技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法,包括:
      [0006]數(shù)據(jù)庫存儲數(shù)據(jù)時,按照每一列數(shù)據(jù)的屬性進行一列的存儲,形成列式存儲,并為每一列數(shù)據(jù)建立一個哈希表;
      [0007]在每一列的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個列雙向鏈表;
      [0008]在每一行的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個行雙向鏈表。
      [0009]其中,為每一列數(shù)據(jù)建立一個哈希表包括:
      [0010]根據(jù)所述數(shù)據(jù)庫中預(yù)定的列存儲空間,確定哈希表的容量;
      [0011]根據(jù)所述容量,為每一列數(shù)據(jù)建立一個哈希表。
      [0012]其中,還包括對數(shù)據(jù)庫中的數(shù)據(jù)進行過濾查詢,包括:
      [0013]根據(jù)所述哈希表,定位出待查詢數(shù)據(jù)的行首信息,其中,所述行首信息包括行標和行首字段;
      [0014]利用所述行首信息及與所述行首信息相對應(yīng)的行雙向鏈表,定位出查詢數(shù)據(jù)。
      [0015]其中,根據(jù)所述哈希表,定位出待查詢數(shù)據(jù)的行首信息包括:
      [0016]根據(jù)所述哈希表,定位出所述待查詢數(shù)據(jù)的預(yù)定行首信息;
      [0017]統(tǒng)計每種預(yù)定行首信息中行標出現(xiàn)的次數(shù);
      [0018]判斷所述次數(shù)中是否存在與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù);
      [0019]若存在,則確定與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù)對應(yīng)的預(yù)定行首信息作為行首信息。
      [0020]其中,還包括:
      [0021]接收用戶反饋的所述待查詢數(shù)據(jù)的查詢結(jié)果;
      [0022]當(dāng)所述查詢結(jié)果中的錯誤次數(shù)超過閾值,則進行哈希表維護。
      [0023]本發(fā)明提供一種數(shù)據(jù)庫中數(shù)據(jù)存儲的系統(tǒng),包括:
      [0024]哈希表模塊,用于數(shù)據(jù)庫存儲數(shù)據(jù)時,按照每一列數(shù)據(jù)的屬性進行一列的存儲,形成列式存儲,并為每一列數(shù)據(jù)建立一個哈希表;
      [0025]列雙向鏈表模塊,用于在每一列的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個列雙向鏈表;
      [0026]行雙向鏈表模塊,用于在每一行的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個行雙向鏈表。
      [0027]其中,所述哈希表模塊包括:
      [0028]容量單元,用于根據(jù)所述數(shù)據(jù)庫中預(yù)定的列存儲空間,確定哈希表的容量;
      [0029]建立單元,用于根據(jù)所述容量,為每一列數(shù)據(jù)建立一個哈希表。
      [0030]其中,還包括:
      [0031]查詢模塊,用于對數(shù)據(jù)庫中的數(shù)據(jù)進行過濾查詢;所述查詢模塊包括:
      [0032]定位單元,用于根據(jù)所述哈希表,定位出待查詢數(shù)據(jù)的行首信息,其中,所述行首信息包括行標和行首字段;
      [0033]查詢單元,用于利用所述行首信息及與所述行首信息相對應(yīng)的行雙向鏈表,定位出查詢數(shù)據(jù)。
      [0034]其中,所述定位單元包括:
      [0035]定位子單元,用于根據(jù)所述哈希表,定位出所述待查詢數(shù)據(jù)的預(yù)定行首信息;
      [0036]統(tǒng)計子單元,用于統(tǒng)計每種預(yù)定行首信息中行標出現(xiàn)的次數(shù);
      [0037]判斷子單元,用于判斷所述次數(shù)中是否存在與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù);
      [0038]若存在,則觸發(fā)確定子單元,用于確定與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù)對應(yīng)的預(yù)定行首信息作為行首信息。
      [0039]其中,還包括:
      [0040]接收模塊,用于接收用戶反饋的所述待查詢數(shù)據(jù)的查詢結(jié)果;
      [0041]維護模塊,用于當(dāng)所述查詢結(jié)果中的錯誤次數(shù)超過閾值,則進行哈希表維護。
      [0042]本發(fā)明所提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的方法,包括:數(shù)據(jù)庫存儲數(shù)據(jù)時,按照每一列數(shù)據(jù)的屬性進行一列的存儲,形成列式存儲,并為每一列數(shù)據(jù)建立一個哈希表;在每一列的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個列雙向鏈表;在每一行的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個行雙向鏈表;
      [0043]通過每一列建立的哈希表,可以大大縮小每一列要查詢的數(shù)據(jù)量,不需要進行全表遍歷,提高查詢速度;且在每一行的數(shù)據(jù)中,每一個字段數(shù)據(jù)都是雙向鏈表的一個節(jié)點,由行首的字段可以查詢一行所有的數(shù)據(jù),最終可以有效地改進數(shù)據(jù)庫的檢索查詢速度。
      【附圖說明】
      [0044]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
      [0045]圖1為本發(fā)明實施例所提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的方法的流程圖;
      [0046]圖2為本發(fā)明實施例所提供的數(shù)據(jù)庫中數(shù)據(jù)存儲布局的示意圖;
      [0047]圖3為本發(fā)明實施例所提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的系統(tǒng)的結(jié)構(gòu)框圖。
      【具體實施方式】
      [0048]本發(fā)明的核心是提供一種數(shù)據(jù)庫中數(shù)據(jù)存儲的方法及系統(tǒng),能夠大大縮小每一列要查詢的數(shù)據(jù)量,不需要進行全表遍歷,可以有效地改進數(shù)據(jù)庫的檢索查詢速度。
      [0049]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
      [0050]請參考圖1,圖1為本發(fā)明實施例所提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的方法的流程圖;該方法可以包括:
      [0051]slOO、數(shù)據(jù)庫存儲數(shù)據(jù)時,按照每一列數(shù)據(jù)的屬性進行一列的存儲,形成列式存儲,并為每一列數(shù)據(jù)建立一個哈希表;
      [0052]其中,考慮到海量存儲數(shù)據(jù)的特點,在每一行的數(shù)據(jù)中,根據(jù)每一列的屬性,進行一列的存儲,成為列式存儲,每一列形成一個哈希表,當(dāng)上層查詢數(shù)據(jù)的時候,根據(jù)哈希算法,快速定位到一行的行首。
      [0053]sllO、在每一列的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個列雙向鏈表;
      [0054]sl20、在每一行的數(shù)據(jù)中,將每一個字段數(shù)據(jù)都設(shè)置為雙向鏈表的一個節(jié)點,形成一個行雙向鏈表。
      [0055]其中,在每一行的數(shù)據(jù)中,每一個字段數(shù)據(jù)都是雙向鏈表的一個節(jié)點,由行首的字段可以查詢了一行所有的數(shù)據(jù)。
      [0056]其中,要想在查詢數(shù)據(jù)時提高查詢速度,必須要對數(shù)據(jù)在文件中的存儲形式和數(shù)據(jù)的索引形式進行改變,例如,關(guān)系型數(shù)據(jù)的列式存儲,可以將每一列的值直接排列下來,不用引入其他的概念,也不會丟失數(shù)據(jù)。關(guān)系型數(shù)據(jù)的列式存儲比較好理解;嵌套類型數(shù)據(jù)的一行叫做一個記錄(record),嵌套數(shù)據(jù)類型的特點是一個record中的列向量(column)除了可以是整形Int,長整形Long,字符串String這樣的原語(primitive)類型以外,還可以是表List,映射Map,集合Set這樣的復(fù)雜類型。
      [0057]根據(jù)本實施例提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的方法,請參考圖2為按照上述方法得到的數(shù)據(jù)庫中數(shù)據(jù)存儲布局的示意圖。
      [0058]基于上述技術(shù)方案,本發(fā)明實施例提供的數(shù)據(jù)庫中數(shù)據(jù)存儲的方法,能夠通過每一列建立的哈希表,可以大大縮小每一列要查詢的數(shù)據(jù)量,不需要進行全表遍歷,提高查詢速度;且在每一行的數(shù)據(jù)中,每一個字段數(shù)據(jù)都是雙向鏈表的一個節(jié)點,由行首的字段可以查詢一行所有的數(shù)據(jù),最終可以有效地改進數(shù)據(jù)庫的檢索查詢速度。
      [0059]基于上述實施例,還包括對數(shù)據(jù)庫中的數(shù)據(jù)進行過濾查詢,可以包括:
      [0060]根據(jù)所述哈希表,定位出待查詢數(shù)據(jù)的行首信息,其中,所述行首信息包括行標和行首字段;
      [0061]其中,即確定待查詢數(shù)據(jù)的在哪一行,然后給定行首信息,即可以是第一行,或者是001,或者其他可以表示行首的字符等。
      [0062]利用所述行首信息及與所述行首信息相對應(yīng)的行雙向鏈表,定位出查詢數(shù)據(jù)。
      [0063]其中,由于在每一行的數(shù)據(jù)中,每一個字段數(shù)據(jù)都是雙向鏈表的一個節(jié)點,由行首的字段可以查詢了一行所有的數(shù)據(jù)。因此,這里確定了行首信息,就可以根據(jù)行雙向鏈表,查詢到待查詢數(shù)據(jù)。
      [0064]可選的,根據(jù)所述哈希表,定位出待查詢數(shù)據(jù)的行首信息可以包括:
      [0065]根據(jù)所述哈希表,定位出所述待查詢數(shù)據(jù)的預(yù)定行首信息;
      [0066]統(tǒng)計每種預(yù)定行首信息中行標出現(xiàn)的次數(shù);
      [0067]判斷所述次數(shù)中是否存在與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù);
      [0068]若存在,則確定與待查詢數(shù)據(jù)的個數(shù)相同的次數(shù)對應(yīng)的預(yù)定行首信息作為行首信息。
      [0069]其中,每一列進行哈希查找,然后再根據(jù)查找的結(jié)果中的標記位,進行匹配,如果匹配成功則表示在同一行的,就是要查找的數(shù)據(jù)。整個匹配的過程就是要確定需要查詢的數(shù)據(jù)是否在同一行,例如查詢李明的各科考試成績,那么則必須保證所有查詢到的數(shù)據(jù)都要在李明這一行,才是李明的成績,否則是別人的成績,因此,需要進行匹配。即查詢李明的三科成績,則會查詢四列名字屬性那一列查詢李明,一科成績一列查詢李明該科成績,若李明在第5行,則需要看5的行標出現(xiàn)的次數(shù)是否為4次,若是,則第5行的行首信息即為需要的行首信息。其他出現(xiàn)不足4次的都不匹配。
      [0070]請參考圖2,進行舉例說明,查詢
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1