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

      一種基于壓縮合并異步更新的索引讀寫方法

      文檔序號(hào):6624623閱讀:207來源:國(guó)知局
      一種基于壓縮合并異步更新的索引讀寫方法
      【專利摘要】本發(fā)明涉及一種基于壓縮合并異步更新的索引讀寫方法,該方法包括:將索引按照存儲(chǔ)區(qū)域編號(hào)生成索引緩存文件;過濾并剔除不完整或正在寫的索引緩存文件;索引緩存文件的總個(gè)數(shù)滿足發(fā)起異步更新的條件時(shí),分別讀取各索引緩存文件中相同存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù),合并并排序;讀取當(dāng)前存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù)并解壓;合并、排序并壓縮上述數(shù)據(jù),并將執(zhí)行后的數(shù)據(jù)覆蓋更新到當(dāng)前存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域并更新元數(shù)據(jù);判斷索引緩存文件是否讀到文件尾,若是,則結(jié)束,若否,則將存儲(chǔ)區(qū)域編號(hào)加1后繼續(xù)執(zhí)行。與現(xiàn)有技術(shù)相比,本發(fā)明具有高效、異步、能減少每次讀磁盤的數(shù)據(jù)量及減少索引比對(duì)次數(shù)等優(yōu)點(diǎn)。
      【專利說明】一種基于壓縮合并異步更新的索引讀寫方法

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種數(shù)據(jù)存儲(chǔ)技術(shù),尤其是涉及一種基于壓縮合并異步更新的索引讀寫方法。

      【背景技術(shù)】
      [0002]隨著計(jì)算機(jī)系統(tǒng)的不斷發(fā)展,計(jì)算機(jī)系統(tǒng)中的有效數(shù)據(jù)也越來越多。用戶在讀取某些有效數(shù)據(jù)時(shí)需要在全部有效數(shù)據(jù)中查找自己需要的數(shù)據(jù),而隨著有效數(shù)據(jù)的增大增多,這個(gè)查找時(shí)間將變長(zhǎng)。如果沒有一個(gè)有效的方式能夠快速找到用戶需要的數(shù)據(jù),那么有效數(shù)據(jù)的增大只能增加用戶的負(fù)擔(dān)。
      [0003]索引技術(shù)的引進(jìn)很好地解決了這個(gè)辦法。數(shù)據(jù)在寫的過程中同時(shí)會(huì)記錄一些重要信息用來唯一標(biāo)識(shí)該數(shù)據(jù)并記錄該數(shù)據(jù)的存儲(chǔ)位置及大小信息等,該信息我們稱之為索弓I。索引能幫助我們快速地查找需要的數(shù)據(jù),然而隨著數(shù)據(jù)量不斷增長(zhǎng),索引也相應(yīng)的增長(zhǎng)。在索引增長(zhǎng)到海量級(jí)別時(shí),尤其是索引記錄達(dá)到上億甚至百億級(jí)別時(shí),索引的查詢性能將直接影響了整個(gè)讀性能,一般的B+樹也不能很好地解決讀磁盤1瓶頸帶來的性能問題。
      [0004]為了解決索引數(shù)據(jù)量增大導(dǎo)致的讀性能問題,一般我們對(duì)索引采用分流的技術(shù)將索引分成很多類,每一個(gè)類對(duì)應(yīng)一個(gè)存儲(chǔ)區(qū)域,在查詢時(shí)將該存儲(chǔ)區(qū)域的數(shù)據(jù)一次性讀出來進(jìn)行對(duì)比。這種方式很有效地解決讀磁盤的1瓶頸問題,但也帶來了一個(gè)新的問題,由于索引分類較多,在批量寫時(shí)分流到各個(gè)存儲(chǔ)區(qū)域的數(shù)據(jù)將很少,這將導(dǎo)致批量寫時(shí)寫磁盤的次數(shù)非常多而每次寫磁盤的數(shù)據(jù)量很小。故在批量寫時(shí)性能較差。


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

      [0005]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種高效的、異步的、能減少每次讀磁盤的數(shù)據(jù)量及減少索引比對(duì)次數(shù)的基于壓縮合并異步更新的索引讀寫方法。
      [0006]本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):
      [0007]—種基于壓縮合并異步更新的索引讀寫方法,該方法包括:
      [0008]I)將內(nèi)存中緩存的索引分為多個(gè)存儲(chǔ)區(qū)域?qū)懭胨饕龓?kù),按照存儲(chǔ)區(qū)域編號(hào)生成索引緩存文件;
      [0009]2)異步獲取至少一個(gè)索引緩存文件;
      [0010]3)過濾并剔除不完整或正在寫的索引緩存文件;
      [0011]4)判斷當(dāng)前索引緩存文件的總個(gè)數(shù)是否滿足發(fā)起異步更新的條件,若是,則執(zhí)行步驟5),若否,則結(jié)束;
      [0012]5)分別讀取步驟3)中獲取的各索引緩存文件中相同存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù),存儲(chǔ)區(qū)域編號(hào)初始值為O ;
      [0013]6)合并并按索引從小到大排序步驟5)中讀取的數(shù)據(jù);
      [0014]7)讀取步驟5)中當(dāng)前存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù);
      [0015]8)解壓步驟7)中讀取的數(shù)據(jù);
      [0016]9)合并并按索引從小到大排序步驟6)執(zhí)行后的數(shù)據(jù)及步驟8)執(zhí)行后的數(shù)據(jù);
      [0017]10)壓縮步驟9)執(zhí)行后的數(shù)據(jù);
      [0018]11)將步驟10)執(zhí)行后的數(shù)據(jù)覆蓋更新到步驟5)中存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域并更新元數(shù)據(jù);
      [0019]12)判斷步驟5)中的索引緩存文件是否讀到文件尾,若是,則結(jié)束,若否,則執(zhí)行步驟5)并將步驟5)中的存儲(chǔ)區(qū)域編號(hào)加I。
      [0020]所述步驟I)具體為:
      [0021]101)將內(nèi)存中緩存的索引按存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)分流,寫入索引庫(kù);
      [0022]102)對(duì)每一個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的索引按照從小到大的順序排序;
      [0023]103)各個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)排序后的索引序列化成數(shù)據(jù)流;
      [0024]104)步驟103)獲得的數(shù)據(jù)流按存儲(chǔ)區(qū)域編號(hào)從小到大的順序組合成唯一的一個(gè)數(shù)據(jù)流;
      [0025]105)將步驟104)生成的數(shù)據(jù)流寫入磁盤生成一個(gè)索引緩存文件。
      [0026]所述步驟4)中,發(fā)起異步更新的條件為當(dāng)前索引緩存文件的總個(gè)數(shù)大于或等于設(shè)定個(gè)數(shù)η。
      [0027]該方法還包括:
      [0028]刪除步驟3)過濾后更新完成的索引緩存文件及步驟3)過濾掉的不完整索引緩存文件。
      [0029]所述壓縮和解壓采用的算法為snappy算法。
      [0030]與現(xiàn)有技術(shù)相比,本發(fā)明通過壓縮、合并和異步更新,大大減少了批量寫的磁盤1次數(shù)及耗時(shí)并均衡了批量寫時(shí)的磁盤1壓力從而提升索引寫性能,同時(shí)通過壓縮減少每次查詢時(shí)讀取的索引數(shù)據(jù)量并通過排序減少了每次查詢時(shí)索引的比對(duì)個(gè)數(shù)從而大大的提升了索引的查詢性能。

      【專利附圖】

      【附圖說明】
      [0031]圖1為本發(fā)明的流程示意圖。

      【具體實(shí)施方式】
      [0032]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。本實(shí)施例以本發(fā)明技術(shù)方案為前提進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。
      [0033]假設(shè)索引的記錄條數(shù)為10億,索引庫(kù)對(duì)索引按470329分流成470329個(gè)存儲(chǔ)區(qū)域。內(nèi)存中的索引記錄每達(dá)到500萬條即發(fā)起一次批量寫操作,假設(shè)所有的索引緩存文件排除不完整和正在寫的索引緩存文件后的總數(shù)達(dá)到η個(gè)時(shí)則認(rèn)為滿足條件并可以發(fā)起異步更新的操作,本實(shí)施例中,η = 3。壓縮和解壓采用快速壓縮算法snappy。
      [0034]如圖1所示,本發(fā)明實(shí)施例提供的基于壓縮合并異步更新的索引讀寫方法包括如下步驟:
      [0035]步驟Si,將內(nèi)存中緩存的500萬條索引按470329個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)分流,寫入索引庫(kù),對(duì)每一個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的索引按照索引的大小從小到大的順序排序。
      [0036]步驟s2,將各個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)排序后的索引序列化成數(shù)據(jù)流。
      [0037]步驟S3,將獲得的數(shù)據(jù)流按存儲(chǔ)區(qū)域編號(hào)小到大的順序組合成唯一的一個(gè)數(shù)據(jù)流。
      [0038]步驟s4,將步驟S3生成的數(shù)據(jù)流寫入磁盤生成一個(gè)索引緩存文件。
      [0039]步驟s5,異步獲取至少一個(gè)索引緩存文件,該步驟及以下步驟為后臺(tái)異步執(zhí)行。
      [0040]步驟s6,過濾并剔除不完整或正在寫的索引緩存文件。
      [0041]步驟s7,判斷當(dāng)前索引緩存文件的總個(gè)數(shù)是否滿足發(fā)起異步更新的條件,即判斷過濾后的索引緩存文件的總個(gè)數(shù)是否達(dá)到3個(gè),若是,則執(zhí)行步驟s8,若否,則結(jié)束。
      [0042]步驟s8,分別讀取步驟s6中獲取的各索引緩存文件中相同存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù),存儲(chǔ)區(qū)域編號(hào)初始值為0,該步驟的存儲(chǔ)區(qū)域編號(hào)與步驟Si中的存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)。
      [0043]步驟s9,合并并按索引從小到大的順序排序步驟s8中讀取的數(shù)據(jù);
      [0044]步驟slO,讀取步驟s8中當(dāng)前存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù);
      [0045]步驟Si I,解壓步驟s9中讀取的數(shù)據(jù);
      [0046]步驟sl2,合并并按索引從小到大的順序排序步驟s9執(zhí)行后的數(shù)據(jù)及步驟sll執(zhí)行后的數(shù)據(jù);
      [0047]步驟sl3,壓縮步驟sl2執(zhí)行后的數(shù)據(jù);
      [0048]步驟sl4,將步驟sl3執(zhí)行后的數(shù)據(jù)覆蓋更新到步驟s8中存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域并更新元數(shù)據(jù);
      [0049]步驟sl5,判斷步驟s8中的索引緩存文件是否讀到文件尾,若是,則結(jié)束,若否,則執(zhí)行步驟s8并將步驟s8中的存儲(chǔ)區(qū)域編號(hào)加I。
      [0050]在執(zhí)行完步驟sl5后,還可包括步驟sl6:刪除步驟s6過濾后更新完成的索引緩存文件及步驟s6過濾掉的不完整的索引緩存文件。
      【權(quán)利要求】
      1.一種基于壓縮合并異步更新的索引讀寫方法,其特征在于,該方法包括: 1)將內(nèi)存中緩存的索引分為多個(gè)存儲(chǔ)區(qū)域?qū)懭胨饕龓?kù),按照存儲(chǔ)區(qū)域編號(hào)生成索引緩存文件; 2)異步獲取至少一個(gè)索引緩存文件; 3)過濾并剔除不完整或正在寫的索引緩存文件; 4)判斷當(dāng)前索引緩存文件的總個(gè)數(shù)是否滿足發(fā)起異步更新的條件,若是,則執(zhí)行步驟5),若否,則結(jié)束; 5)分別讀取步驟3)中獲取的各索引緩存文件中相同存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù),存儲(chǔ)區(qū)域編號(hào)初始值為O ; 6)合并并按索引從小到大排序步驟5)中讀取的數(shù)據(jù); 7)讀取步驟5)中當(dāng)前存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域的數(shù)據(jù); 8)解壓步驟7)中讀取的數(shù)據(jù); 9)合并并按索引從小到大排序步驟6)執(zhí)行后的數(shù)據(jù)及步驟8)執(zhí)行后的數(shù)據(jù); 10)壓縮步驟9)執(zhí)行后的數(shù)據(jù); 11)將步驟10)執(zhí)行后的數(shù)據(jù)覆蓋更新到步驟5)中存儲(chǔ)區(qū)域編號(hào)在索引庫(kù)中對(duì)應(yīng)的存儲(chǔ)區(qū)域并更新元數(shù)據(jù); 12)判斷步驟5)中的索引緩存文件是否讀到文件尾,若是,則結(jié)束,若否,則執(zhí)行步驟5)并將步驟5)中的存儲(chǔ)區(qū)域編號(hào)加I。
      2.根據(jù)權(quán)利要求1所述的一種基于壓縮合并異步更新的索引讀寫方法,其特征在于,所述步驟I)具體為: 101)將內(nèi)存中緩存的索引按存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)分流,寫入索引庫(kù); 102)對(duì)每一個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)的索引按照從小到大的順序排序; 103)各個(gè)存儲(chǔ)區(qū)域編號(hào)對(duì)應(yīng)排序后的索引序列化成數(shù)據(jù)流; 104)步驟103)獲得的數(shù)據(jù)流按存儲(chǔ)區(qū)域編號(hào)從小到大的順序組合成唯一的一個(gè)數(shù)據(jù)流; 105)將步驟104)生成的數(shù)據(jù)流寫入磁盤生成一個(gè)索引緩存文件。
      3.根據(jù)權(quán)利要求1所述的一種基于壓縮合并異步更新的索引讀寫方法,其特征在于,所述步驟4)中,發(fā)起異步更新的條件為當(dāng)前索引緩存文件的總個(gè)數(shù)大于或等于設(shè)定個(gè)數(shù)η。
      4.根據(jù)權(quán)利要求1所述的一種基于壓縮合并異步更新的索引讀寫方法,其特征在于,還包括: 刪除步驟3)過濾后更新完成的索引緩存文件及步驟3)過濾掉的不完整索引緩存文件。
      5.根據(jù)權(quán)利要求1所述的一種基于壓縮合并異步更新的索引讀寫方法,其特征在于,所述壓縮和解壓采用的算法為snappy算法。
      【文檔編號(hào)】G06F17/30GK104199892SQ201410422587
      【公開日】2014年12月10日 申請(qǐng)日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
      【發(fā)明者】吳植民 申請(qǐng)人:上海愛數(shù)軟件有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1