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

      一種分布式存儲(chǔ)器哈希索引方法及系統(tǒng)的制作方法

      文檔序號(hào):6539483閱讀:172來(lái)源:國(guó)知局
      一種分布式存儲(chǔ)器哈希索引方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明屬于數(shù)據(jù)庫(kù)、分布式信息處理【技術(shù)領(lǐng)域】,尤其涉及一種分布式存儲(chǔ)器哈希索引方法及系統(tǒng)。在本發(fā)明中,將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中,主節(jié)點(diǎn)計(jì)算鍵key的哈希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào);然后根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入、讀取、或刪除操作,由于通過(guò)多個(gè)存儲(chǔ)器節(jié)點(diǎn)擴(kuò)充了存儲(chǔ)器容量,同時(shí)通過(guò)基于鍵值(key-value)分布式哈希查找,提高了數(shù)據(jù)庫(kù)系統(tǒng)的讀寫(xiě)性能。
      【專利說(shuō)明】一種分布式存儲(chǔ)器哈希索引方法及系統(tǒng)

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明屬于數(shù)據(jù)庫(kù)、分布式信息處理【技術(shù)領(lǐng)域】,尤其涉及一種分布式存儲(chǔ)器哈希 索引方法及系統(tǒng)。

      【背景技術(shù)】
      [0002] 在科技快速發(fā)展的今天,社會(huì)各個(gè)領(lǐng)域中的需要統(tǒng)計(jì)的數(shù)據(jù)都飛速增長(zhǎng),海量數(shù) 據(jù)的記錄、查找為計(jì)算機(jī)技術(shù)帶來(lái)新的發(fā)展方向,提供新的技術(shù)課題。傳統(tǒng)基于磁盤的哈希 表,每一次磁盤I/O都要耗費(fèi)大量的時(shí)間,很難滿足現(xiàn)代交易系統(tǒng)(如股票等)對(duì)實(shí)時(shí)回應(yīng)時(shí) 間的要求。此外對(duì)于海量數(shù)據(jù),單機(jī)節(jié)點(diǎn)由于存儲(chǔ)器容量的限制無(wú)法將全部索引保存在內(nèi) 存中。


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

      [0003] 本發(fā)明的目的在于提供一種基于多存儲(chǔ)節(jié)點(diǎn)以及key-value的分布式存儲(chǔ)器哈 希索引方法,旨在解決現(xiàn)有的磁盤哈希表I/O耗時(shí)長(zhǎng)以及單機(jī)節(jié)點(diǎn)由于存儲(chǔ)器容量的限制 無(wú)法將全部索引保存在內(nèi)存中的問(wèn)題。
      [0004] 本發(fā)明是這樣實(shí)現(xiàn)的,一種分布式存儲(chǔ)器哈希索引方法,包括:
      [0005] 將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中;
      [0006] 主節(jié)點(diǎn)計(jì)算鍵key的哈希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編 號(hào);
      [0007] 根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地 址,所述存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系存儲(chǔ)在路由表中,所述路由表存儲(chǔ)在 主節(jié)點(diǎn)中;
      [0008] 對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入、讀取、或刪除操作。
      [0009] 進(jìn)一步的,所述的根據(jù)計(jì)算得到的鍵值的哈希值獲取節(jié)點(diǎn)編號(hào),具體為:
      [0010] 將計(jì)算得到的key的哈希值的前m位作為節(jié)點(diǎn)編號(hào),所述m為存儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。 [0011] 進(jìn)一步的,所述方法還包括:
      [0012] 磁盤節(jié)點(diǎn)通過(guò)基于磁盤的哈希表保存存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像,對(duì)磁盤節(jié)點(diǎn) 進(jìn)行寫(xiě)入或刪除操作。
      [0013] 本發(fā)明還提供了一種分布式存儲(chǔ)器哈希索引系統(tǒng),包括:映射模塊、計(jì)算模塊、第 一獲取模塊、第一查找模塊、寫(xiě)入模塊、讀取模塊、刪除模塊;
      [0014] 所述映射模塊,用于將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中;
      [0015] 所述計(jì)算模塊,用于主節(jié)點(diǎn)計(jì)算鍵key的哈希值;
      [0016] 所述第一獲取模塊,用于根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào);
      [0017] 所述第一查找模塊,用于根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找 到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,所述存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系存儲(chǔ)在路由 表中,所述路由表存儲(chǔ)在主節(jié)點(diǎn)中;
      [0018] 所述寫(xiě)入模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入操作;
      [0019] 所述讀取模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行讀取操
      [0020] 作;
      [0021] 所述刪除模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行刪除操
      [0022] 作。
      [0023] 進(jìn)一步的,所述第一獲取模塊還包括:
      [0024] 第一獲取子模塊,用于將計(jì)算得到的key的哈希值的前m位作為節(jié)點(diǎn)編號(hào),所述m 為存儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。
      [0025] 進(jìn)一步的,所述系統(tǒng)還包括:存儲(chǔ)模塊,用于磁盤節(jié)點(diǎn)通過(guò)基于磁盤的哈希表保存 存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像;
      [0026] 進(jìn)一步的,所述寫(xiě)入模塊還用于對(duì)磁盤節(jié)點(diǎn)進(jìn)行寫(xiě)入操作;所述刪除模塊還用于 對(duì)磁盤節(jié)點(diǎn)進(jìn)行刪除操作。
      [0027] 在本發(fā)明中,將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中,主節(jié)點(diǎn)計(jì)算鍵key 的哈希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào);然后根據(jù)存儲(chǔ)器節(jié)點(diǎn)編 號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存 儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入、讀取、或刪除操作,由于通過(guò)多個(gè)存儲(chǔ)器節(jié)點(diǎn)擴(kuò)充了存儲(chǔ)器容量,同時(shí) 通過(guò)基于鍵值(key-value)分布式哈希查找,提高了數(shù)據(jù)庫(kù)系統(tǒng)的讀寫(xiě)性能。

      【專利附圖】

      【附圖說(shuō)明】
      [0028] 圖1是本發(fā)明實(shí)施例提供的分布式存儲(chǔ)器哈希索引方法的實(shí)現(xiàn)流程圖;
      [0029] 圖2是本發(fā)明實(shí)施例提供的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行寫(xiě)入操作具體實(shí)現(xiàn)流程圖;
      [0030] 圖3是本發(fā)明實(shí)施例提供的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行讀取操作具體實(shí)現(xiàn)流程圖;
      [0031] 圖4是本發(fā)明實(shí)施例提供的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行刪除操作具體實(shí)現(xiàn)流程圖;
      [0032] 圖5是本發(fā)明實(shí)施例提供的分布式存儲(chǔ)器哈希索引系統(tǒng)的結(jié)構(gòu)框圖;
      [0033] 圖6是本發(fā)明實(shí)施例提供的圖5中的寫(xiě)入模塊55的結(jié)構(gòu)框圖;
      [0034] 圖7是本發(fā)明實(shí)施例提供的圖5中的讀取模塊56的結(jié)構(gòu)框圖;
      [0035] 圖8是本發(fā)明實(shí)施例提供的圖5中的刪除模塊57的結(jié)構(gòu)框圖。

      【具體實(shí)施方式】
      [0036] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
      [0037] 圖1示出了本發(fā)明實(shí)施例提供的一種分布式存儲(chǔ)器哈希索引方法的實(shí)現(xiàn)流程,詳 述如下:
      [0038] 步驟101、將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中。
      [0039] 首先將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中,每個(gè)存儲(chǔ)器節(jié)點(diǎn)存儲(chǔ)相應(yīng)的 哈希表也即保存索引表的一部分。所有的存儲(chǔ)器節(jié)點(diǎn)組成的集群也叫儲(chǔ)存器索引點(diǎn)。
      [0040] 步驟102、主節(jié)點(diǎn)計(jì)算鍵key的哈希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ) 器節(jié)點(diǎn)編號(hào)。
      [0041] -個(gè)key(鍵)應(yīng)該映射到哪個(gè)存儲(chǔ)器節(jié)點(diǎn)有主節(jié)點(diǎn)決定,主節(jié)點(diǎn)計(jì)算鍵key的哈 希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào)。在本發(fā)明實(shí)施例中,根據(jù)計(jì)算 得到的鍵值的哈希值獲取節(jié)點(diǎn)編號(hào),具體為:將計(jì)算得到的key的哈希值的前m位作為節(jié)點(diǎn) 編號(hào),其中m為存儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。
      [0042] 步驟103、根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器 節(jié)點(diǎn)地址。
      [0043] 主節(jié)點(diǎn)獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào)之后,根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射 關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址。存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系事先存 儲(chǔ)在路由表中,而路由表存儲(chǔ)在主節(jié)點(diǎn)中。
      [0044] 步驟104、對(duì)上述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入、讀取、或刪除操作。
      [0045] 主節(jié)點(diǎn)查找到對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)的地址之后,對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn) 行寫(xiě)入(put)、讀?。╣et)、或刪除(delete)操作。
      [0046] 本發(fā)明實(shí)施例,由于通過(guò)多個(gè)存儲(chǔ)器節(jié)點(diǎn)擴(kuò)充了存儲(chǔ)器容量,同時(shí)通過(guò)基于鍵值 (key-value)分布式哈希查找,提高了數(shù)據(jù)庫(kù)系統(tǒng)的讀寫(xiě)性能。
      [0047] 進(jìn)一步的,為了對(duì)索引保持持久化,上述方法還包括:磁盤節(jié)點(diǎn)通過(guò)基于磁盤的哈 希表保存存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像,對(duì)磁盤節(jié)點(diǎn)進(jìn)行寫(xiě)入或刪除操作。具體的,讀取操 作只針對(duì)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行,并不會(huì)查找磁盤節(jié)點(diǎn),而寫(xiě)入與刪除操作會(huì)同時(shí)針對(duì)存儲(chǔ)器節(jié) 點(diǎn)與磁盤節(jié)點(diǎn)進(jìn)行操作,但是,針對(duì)存儲(chǔ)器節(jié)點(diǎn)的操作與針對(duì)磁盤節(jié)點(diǎn)的操作是非同步進(jìn) 行的,存儲(chǔ)器節(jié)點(diǎn)的操作并不需要等待磁盤節(jié)點(diǎn)操作的完成,因此,磁盤節(jié)點(diǎn)的操作并不影 響系統(tǒng)整體性能。加入磁盤節(jié)點(diǎn)的目的是為了對(duì)索引進(jìn)行持久化保存,并不影響系統(tǒng)的處 理速度。
      [0048] 進(jìn)一步的,為了更加詳細(xì)的描述步驟104中的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行寫(xiě)入操 作,本發(fā)明實(shí)施例結(jié)合附圖2做以下具體描述:
      [0049] 步驟201、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行 步驟202,如果否,則同時(shí)執(zhí)行步驟203與204。
      [0050] 在主節(jié)點(diǎn)中存儲(chǔ)了 bloom filter,bloom filter的作用是可以通過(guò)少量的存儲(chǔ)器 來(lái)快速判斷給定key是否不存在。然而,如果bloom filter判定給定key存在,此時(shí)并不 能肯定key確實(shí)存在,需要進(jìn)一步查找存儲(chǔ)器節(jié)點(diǎn)。
      [0051] 步驟202、查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,返回key已經(jīng)存在,如果 否則執(zhí)行步驟203。
      [0052] 步驟203、根據(jù)存儲(chǔ)器節(jié)點(diǎn)地址,將key及對(duì)應(yīng)的值value寫(xiě)入到存儲(chǔ)器節(jié)點(diǎn)中,之 后結(jié)束操作。
      [0053] 如果存儲(chǔ)器節(jié)點(diǎn)有上述key,則將key及對(duì)應(yīng)的值value寫(xiě)入到內(nèi)存節(jié)點(diǎn)中。
      [0054] 步驟204、將key及對(duì)應(yīng)的value發(fā)送到磁盤節(jié)點(diǎn),然后執(zhí)行步驟205。
      [0055] 步驟205、判斷磁盤節(jié)點(diǎn)日志緩存區(qū)log cache是否已滿,若是,則執(zhí)行步驟206后 執(zhí)行步驟207,若否,則直接執(zhí)行步驟207。
      [0056] 步驟206、將當(dāng)前l(fā)og cache的內(nèi)容寫(xiě)入到磁盤中,清空l(shuí)og cache。
      [0057] 步驟207、將key及對(duì)應(yīng)的value寫(xiě)入log cache中,之后結(jié)束操作。
      [0058] 這樣就完成了對(duì)存儲(chǔ)器節(jié)點(diǎn)以及磁盤節(jié)點(diǎn)的寫(xiě)入操作?;趉ey-value模式的查 找與與入操作,有效提1? 了與入效率。
      [0059] 進(jìn)一步的,為了更加詳細(xì)的描述步驟104中的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行讀取操 作,本發(fā)明實(shí)施例結(jié)合附圖3做以下具體描述:
      [0060] 步驟301、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行 步驟302,如果否,則執(zhí)行步驟304。
      [0061] 同樣,在主節(jié)點(diǎn)中存儲(chǔ)了 bloom filter, bloom filter的作用是可以通過(guò)少量的 存儲(chǔ)器來(lái)快速判斷給定key是否不存在。然而,如果bloom filter判定給定key存在,此 時(shí)并不能肯定key確實(shí)存在,需要進(jìn)一步查找存儲(chǔ)器節(jié)點(diǎn)。
      [0062] 步驟302、根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,則執(zhí) 行步驟303,如果否,則執(zhí)行步驟304。
      [0063] 步驟303、返回key及對(duì)應(yīng)的值value。
      [0064] 當(dāng)存儲(chǔ)器節(jié)點(diǎn)查找key在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,則返回key及對(duì)應(yīng)的值value。
      [0065] 步驟304、返回key不存在。
      [0066] 這樣就完成了對(duì)存儲(chǔ)器節(jié)點(diǎn)的讀取操作。同樣,基于key-value模式的查找與讀 取操作,有效提高了讀取效率。
      [0067] 進(jìn)一步的,為了更加詳細(xì)的描述步驟104中的對(duì)節(jié)點(diǎn)地址對(duì)應(yīng)節(jié)點(diǎn)進(jìn)行讀取操 作,本發(fā)明實(shí)施例結(jié)合附圖4做以下具體描述:
      [0068] 步驟401、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行 步驟402,如果否,則執(zhí)行步驟405。
      [0069] 同樣,在主節(jié)點(diǎn)中存儲(chǔ)了 bloom filter, bloom filter的作用是可以通過(guò)少量的 存儲(chǔ)器來(lái)快速判斷給定key是否不存在。然而,如果bloom filter判定給定key存在,此 時(shí)并不能肯定key確實(shí)存在,需要進(jìn)一步查找存儲(chǔ)器節(jié)點(diǎn)。
      [0070] 步驟402、根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,則同 時(shí)執(zhí)行步驟403以及步驟404,如果否,則執(zhí)行步驟405。
      [0071] 步驟403、刪除存儲(chǔ)器節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value。
      [0072] 步驟404、刪除磁盤節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value。
      [0073] 步驟405、返回key不存在。
      [0074] 本發(fā)明實(shí)施例,通過(guò)主節(jié)點(diǎn)的bloom filter以及基于key-value模式的查找與讀 取操作,有效提高了刪除操作效率。
      [0075] 需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列 的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)?依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。
      [0076] 圖5為本發(fā)明實(shí)施例提供了一種分布式存儲(chǔ)器哈希索引系統(tǒng),該系統(tǒng)能實(shí)現(xiàn)前述 實(shí)施例所述的方法。為了便于說(shuō)明,僅示出了與本實(shí)施例相關(guān)的部分。如圖5所示,所述系 統(tǒng)包括:映射模塊51、計(jì)算模塊52、第一獲取模塊53、第一查找模塊54、寫(xiě)入模塊55、讀取 模塊56、刪除模塊57。
      [0077] 映射模塊51,用于將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中;
      [0078] 計(jì)算模塊52,用于主節(jié)點(diǎn)計(jì)算鍵key的哈希值;
      [0079] 第一獲取模塊53,用于根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào)。進(jìn) 一步的,第一獲取模塊53還包括:第一獲取子模塊531,用于將計(jì)算得到的key的哈希值的 前m位作為節(jié)點(diǎn)編號(hào),所述m為存儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。
      [0080] 第一查找模塊54,用于根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到 對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,所述存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系存儲(chǔ)在路由表 中,所述路由表存儲(chǔ)在主節(jié)點(diǎn)中。
      [0081] 寫(xiě)入模塊55,用于對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入操作。
      [0082] 讀取模塊56,用于對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行讀取操作。
      [0083] 刪除模塊57,用于對(duì)存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行刪除操作。
      [0084] 進(jìn)一步的,上述系統(tǒng)還包括:存儲(chǔ)模塊58,用于磁盤節(jié)點(diǎn)通過(guò)基于磁盤的哈希表 保存存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像。
      [0085] 進(jìn)一步的,寫(xiě)入模塊55還用于對(duì)磁盤節(jié)點(diǎn)進(jìn)行寫(xiě)入操作;刪除模塊57還用于對(duì)磁 盤節(jié)點(diǎn)進(jìn)行刪除操作。
      [0086] 在本發(fā)明實(shí)施例中,由于通過(guò)多個(gè)存儲(chǔ)器節(jié)點(diǎn)擴(kuò)充了存儲(chǔ)器容量,同時(shí)通過(guò)基于 鍵值(key-value)分布式哈希查找,提高了數(shù)據(jù)庫(kù)系統(tǒng)的讀寫(xiě)性能。
      [0087] 圖6為本發(fā)明實(shí)施例中提供的圖5中寫(xiě)入模塊55的結(jié)構(gòu)框圖,寫(xiě)入模塊55包括 第二查找模塊551、第三查找模塊552、第一寫(xiě)入子模塊553、第一發(fā)送模塊554、第一判斷模 塊555、第二寫(xiě)入子模塊556、第三寫(xiě)入子模塊557、第一返回模塊558。
      [0088] 第二查找模塊551,用于在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在。
      [0089] 第三查找模塊552,用于在第二查找模塊551查找到key存在時(shí),查找key是否在 當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中。
      [0090] 第一寫(xiě)入子模塊553,用于在第三查找模塊552在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中沒(méi)有查找 到key時(shí),根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP地址,將key及對(duì)應(yīng)的值value寫(xiě)入到存儲(chǔ)器節(jié)點(diǎn)中。
      [0091] 第一發(fā)送模塊554,用于在第三查找模塊552在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)沒(méi)有查找到key 時(shí),將key及對(duì)應(yīng)的value發(fā)送到磁盤節(jié)點(diǎn)。
      [0092] 第一判斷模塊555,用于判斷磁盤節(jié)點(diǎn)日志緩存區(qū)log cache是否已滿。
      [0093] 第二寫(xiě)入子模塊556,用于在第一判斷模塊555判斷磁盤節(jié)點(diǎn)日志緩存區(qū)log cache已滿時(shí),將當(dāng)前l(fā)og cache的內(nèi)容寫(xiě)入到磁盤中,并清空l(shuí)og cache。
      [0094] 第三寫(xiě)入子模塊557,用于將key及對(duì)應(yīng)的value寫(xiě)入log cache中。
      [0095] 第一返回模塊558,用于在第三查找模塊552在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中查找到key 時(shí),返回key以及存在。
      [0096] 圖7為本發(fā)明實(shí)施例中提供的圖5中讀取模塊56的結(jié)構(gòu)框圖。讀取模塊56,包括 第四查找模塊561、第五查找模塊562、第二返回模塊563。
      [0097] 第四查找模塊561,用于在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在。
      [0098] 第五查找模塊562,用于在第四查找模塊561查找到key存在時(shí),查找key是否在 當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中。
      [0099] 第二返回模塊563,用于在第五查找模塊562查找key在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中時(shí), 返回key及對(duì)應(yīng)的值value。第二返回模塊563還用于在第四查找模塊561查找到key不 存在或者第五查找模塊562查找key不在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中時(shí),返回key不存在。
      [0100] 圖8為本發(fā)明實(shí)施例中提供的圖5中刪除模塊57的結(jié)構(gòu)框圖。刪除模塊57包括: 第六查找模塊571、第七查找模塊572、第一刪除子模塊573、第二刪除子模塊574以及第三 返回模塊575。
      [0101] 第六查找模塊571,用于在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在。
      [0102] 第七查找模塊572,用于在第六查找模塊571查找到主節(jié)點(diǎn)的bloom fiIter的key 存在時(shí),根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中。
      [0103] 第一刪除子模塊573,用于第七查找模塊572查找key在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中時(shí), 刪除存儲(chǔ)器節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value。
      [0104] 第二刪除子模塊574,用于第七查找模塊572查找key在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中時(shí), 刪除磁盤節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value。
      [0105] 第三返回模塊575,用于第六查找模塊571查找到key不存在或者第七查找模塊 572查找key不在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中時(shí),返回key不存在。
      [0106] 本發(fā)明實(shí)施例,通過(guò)主節(jié)點(diǎn)的bloom filter以及基于key-value模式的查找與寫(xiě) 入、讀取、刪除操作,有效提高了操作效率。
      [0107] 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1. 一種分布式存儲(chǔ)器哈希索引方法,其特征在于,包括: 將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中; 主節(jié)點(diǎn)計(jì)算鍵key的哈希值,根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào); 根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì)應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,所 述存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系存儲(chǔ)在路由表中,所述路由表存儲(chǔ)在主節(jié) 占中. ;、、、I ? 對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入、讀取、或刪除操作。
      2. 如權(quán)利要求1所述的方法,其特征在于,所述的根據(jù)計(jì)算得到的鍵值的哈希值獲取 節(jié)點(diǎn)編號(hào),具體為: 將計(jì)算得到的key的哈希值的前m位作為節(jié)點(diǎn)編號(hào),所述m為存儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。
      3. 如權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括: 磁盤節(jié)點(diǎn)通過(guò)基于磁盤的哈希表保存存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像,對(duì)磁盤節(jié)點(diǎn)進(jìn)行 寫(xiě)入或刪除操作。
      4. 如權(quán)利要求3所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié) 點(diǎn)進(jìn)行寫(xiě)入操作,具體以下步驟: 步驟A1、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行步驟 A2,如果否,則同時(shí)執(zhí)行步驟A3與A4 ; 步驟A2、查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,則執(zhí)行步驟A5,如果否則執(zhí)行 步驟A3 ; 步驟A3、根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP,將key及對(duì)應(yīng)的值value寫(xiě)入到存儲(chǔ)器節(jié)點(diǎn)中,之后結(jié)束 操作; 步驟A4、將key及對(duì)應(yīng)的value發(fā)送到磁盤節(jié)點(diǎn),然后執(zhí)行步驟A5 ; 步驟A5、判斷磁盤節(jié)點(diǎn)日志緩存區(qū)log cache是否已滿,若是,則執(zhí)行步驟A6后執(zhí)行 步驟A7,若否,則直接執(zhí)行步驟A7 ; 步驟A6、將當(dāng)前l(fā)og cache的內(nèi)容寫(xiě)入到磁盤中,清空l(shuí)og cache ; 步驟A7、將key及對(duì)應(yīng)的value寫(xiě)入log cache中,之后結(jié)束操作。
      5. 如權(quán)利要求3所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié) 點(diǎn)進(jìn)行讀取操作,具體以下步驟: 步驟B1、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行步驟 B2,如果否,則執(zhí)行步驟B4 ; 步驟B2、根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,則執(zhí)行步驟 B3,如果否,則執(zhí)行步驟B4 ; 步驟B3、返回key及對(duì)應(yīng)的值value; 步驟Μ、返回key不存在。
      6. 如權(quán)利要求3-5之一所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存 儲(chǔ)器節(jié)點(diǎn)進(jìn)行刪除操作,具體以下步驟: 步驟C1、在主節(jié)點(diǎn)的bloom filter中查找所述的key是否存在,如果是,則執(zhí)行步驟 C2,如果否,則執(zhí)行步驟C5 ; 步驟C2、根據(jù)存儲(chǔ)器節(jié)點(diǎn)IP查找key是否在當(dāng)前的存儲(chǔ)器節(jié)點(diǎn)中,如果是,則同時(shí)執(zhí)行 步驟C3以及步驟C4,如果否,則執(zhí)行步驟C5 ; 步驟C3、刪除存儲(chǔ)器節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value; 步驟C4、刪除磁盤節(jié)點(diǎn)中的key及對(duì)應(yīng)的值value ; 步驟C5、返回key不存在。
      7. -種分布式存儲(chǔ)器哈希索引系統(tǒng),其特征在于,包括:映射模塊、計(jì)算模塊、第一獲 取模塊、第一查找模塊、寫(xiě)入模塊、讀取模塊、刪除模塊; 所述映射模塊,用于將哈希表的地址范圍映射到多個(gè)存儲(chǔ)器節(jié)點(diǎn)中; 所述計(jì)算模塊,用于主節(jié)點(diǎn)計(jì)算鍵key的哈希值; 所述第一獲取模塊,用于根據(jù)計(jì)算得到的鍵key的哈希值獲取存儲(chǔ)器節(jié)點(diǎn)編號(hào); 所述第一查找模塊,用于根據(jù)存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系查找到對(duì) 應(yīng)的存儲(chǔ)器節(jié)點(diǎn)地址,所述存儲(chǔ)器節(jié)點(diǎn)編號(hào)與存儲(chǔ)器節(jié)點(diǎn)IP的映射關(guān)系存儲(chǔ)在路由表中, 所述路由表存儲(chǔ)在主節(jié)點(diǎn)中; 所述寫(xiě)入模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行寫(xiě)入操作; 所述讀取模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行讀取操 作; 所述刪除模塊,用于對(duì)所述存儲(chǔ)器節(jié)點(diǎn)地址對(duì)應(yīng)存儲(chǔ)器節(jié)點(diǎn)進(jìn)行刪除操 作。
      8. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一獲取模塊還包括: 第一獲取子模塊,用于將計(jì)算得到的key的哈希值的前m位作為節(jié)點(diǎn)編號(hào),所述m為存 儲(chǔ)器節(jié)點(diǎn)的個(gè)數(shù)。
      9. 如權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括:存儲(chǔ)模塊,用于磁盤 節(jié)點(diǎn)通過(guò)基于磁盤的哈希表保存存儲(chǔ)器節(jié)點(diǎn)中的哈希表的鏡像。
      10. 如權(quán)利要求9所述的系統(tǒng),其特征在于,所述寫(xiě)入模塊還用于對(duì)磁盤節(jié)點(diǎn)進(jìn)行寫(xiě)入 操作;所述刪除模塊還用于對(duì)磁盤節(jié)點(diǎn)進(jìn)行刪除操作。
      【文檔編號(hào)】G06F17/30GK104156380SQ201410077069
      【公開(kāi)日】2014年11月19日 申請(qǐng)日期:2014年3月4日 優(yōu)先權(quán)日:2014年3月4日
      【發(fā)明者】許志良, 王寅峰, 賴紅, 張運(yùn)生 申請(qǐng)人:深圳信息職業(yè)技術(shù)學(xué)院
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1