亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種二級索引建立方法和裝置的制造方法

文檔序號:8512540閱讀:191來源:國知局
一種二級索引建立方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)庫技術領域,特別是涉及一種二級索引建立方法和一種二級索引建立裝置。
【背景技術】
[0002]HBase是一個分布式的、面向列的開源數(shù)據(jù)庫。HBase在根據(jù)rowkey查找數(shù)據(jù)的效率很高,但是根據(jù)column內(nèi)容查找符合條件的行一般采取全表掃描的方式,效率很低。因此需要對HBase建立二級索引加快查找速度。
[0003]現(xiàn)有的一種對HBase建立二級索引的方法是在客戶端實現(xiàn)索引,建立索引的方式包括使用solr/nutch/lucene等開源工具,或者是在HBase中建立一張索引表。該方法中索引的建立和使用是伴隨著客戶端創(chuàng)建索引和寫實際數(shù)據(jù)進行的,在HBase中進行數(shù)據(jù)更新時,例如向HBase中插入新的數(shù)據(jù),除了需要向HBase表中添加數(shù)據(jù)之外,還需要同時對數(shù)據(jù)單獨建立索引。
[0004]雖然,利用上述二級索引可以加快數(shù)據(jù)查找速度,尤其是在根據(jù)column內(nèi)容查找符合條件的行數(shù)據(jù)的時候。然而,上述建立二級索引的方式對于大規(guī)模數(shù)據(jù)的支持能力較低。

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

[0005]本發(fā)明實施例所要解決的技術問題是提供一種二級索引建立方法,能夠提高對大規(guī)模數(shù)據(jù)的支持能力。
[0006]相應的,本發(fā)明實施例還提供了一種二級索引建立裝置,用以保證上述方法的實現(xiàn)及應用。
[0007]為了解決上述問題,本發(fā)明實施例公開了一種二級索引建立方法,包括:
[0008]索引初始化,包括:對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)建立一個索引;
[0009]掃描所述數(shù)據(jù)庫中行數(shù)據(jù)的標記位,所述標記位用于標記其對應行數(shù)據(jù)的變化情況;
[0010]根據(jù)所述行數(shù)據(jù)的標記位處理所述行數(shù)據(jù)的索引。
[0011]進一步,所述根據(jù)所述行數(shù)據(jù)的標記位處理所述行數(shù)據(jù)的索引,包括:
[0012]當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為新增數(shù)據(jù)時,讀取所述行數(shù)據(jù),并添加所述行數(shù)據(jù)的索引。
[0013]進一步,所述根據(jù)所述行數(shù)據(jù)的標記位處理所述行數(shù)據(jù)的索引,包括:
[0014]當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為改動數(shù)據(jù)時,讀取所述行數(shù)據(jù),并更新所述行數(shù)據(jù)對應的索引。
[0015]進一步,所述根據(jù)所述行數(shù)據(jù)的標記位處理所述行數(shù)據(jù)的索引,包括:
[0016]當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為需刪除數(shù)據(jù)時,刪除所述行數(shù)據(jù)對應的索引。
[0017]進一步,所述索引的索引標識為所述索引對應的行數(shù)據(jù)的Rowkey。
[0018]進一步,所述掃描所述數(shù)據(jù)庫中行數(shù)據(jù)的標記位,包括:
[0019]根據(jù)預設時間間隔掃描所述數(shù)據(jù)庫中行數(shù)據(jù)的標記位。
[0020]進一步,所述對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)建立一個索引,包括:
[0021]對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)在elasticsearch中建立一個索引。
[0022]本發(fā)明實施例還公開了一種數(shù)據(jù)查詢方法,所述方法應用于按照前述方法建立的二級索引,所述數(shù)據(jù)查詢方法包括:
[0023]在所述二級索引中搜索滿足指定條件的數(shù)據(jù);
[0024]確定所述滿足指定條件的數(shù)據(jù)對應的索引;
[0025]根據(jù)索引與行數(shù)據(jù)的對應關系,讀取與確定出的索引相對應的行數(shù)據(jù)。
[0026]本發(fā)明實施例還公開了一種二級索引建立裝置,包括:
[0027]初始化單元,用于索引初始化,包括:對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)建立一個索引;
[0028]掃描單元,用于掃描所述數(shù)據(jù)庫中行數(shù)據(jù)的標記位,所述標記位用于標記其對應行數(shù)據(jù)的變化情況;
[0029]索引更新單元,用于根據(jù)所述行數(shù)據(jù)的標記位處理所述行數(shù)據(jù)的索引。
[0030]進一步,所述索引更新單元,具體用于當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為新增數(shù)據(jù)時,讀取所述行數(shù)據(jù),并添加所述行數(shù)據(jù)的索引。
[0031]進一步,所述索引更新單元,具體用于當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為改動數(shù)據(jù)時,讀取所述行數(shù)據(jù),并更新所述行數(shù)據(jù)對應的索引。
[0032]進一步,所述索引更新單元,具體用于當所述行數(shù)據(jù)的標記位表征所述行數(shù)據(jù)為需刪除數(shù)據(jù)時,刪除所述行數(shù)據(jù)對應的索引。
[0033]進一步,所述索引的索引標識為所述索引對應的行數(shù)據(jù)的Rowkey。
[0034]進一步,所述掃描單元,具體用于根據(jù)預設時間間隔掃描所述數(shù)據(jù)庫中行數(shù)據(jù)的標記位。
[0035]進一步,所述初始化單元,具體用于對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)在elasticsearch中建立一個索引。
[0036]本發(fā)明實施例還公開了一種數(shù)據(jù)查詢裝置,所述裝置應用于前述的二級索引建立裝置,所述數(shù)據(jù)查詢裝置包括:
[0037]搜索單元,用于在建立的二級索引中搜索滿足指定條件的數(shù)據(jù);
[0038]索引確定單元,用于確定所述滿足指定條件的數(shù)據(jù)對應的索引;
[0039]數(shù)據(jù)讀取單元,用于根據(jù)索引與行數(shù)據(jù)的對應關系,讀取與確定出的索引相對應的行數(shù)據(jù)。
[0040]與現(xiàn)有技術相比,本發(fā)明實施例包括以下優(yōu)點:
[0041]本發(fā)明實施例通過對數(shù)據(jù)庫中的每行數(shù)據(jù)建立二級索弓丨,尤其通過使用elasticsearch和標記位,在不影響HBase性能和不修改HBase內(nèi)核的前提下,實現(xiàn)了對HBase的二級索引,并實現(xiàn)了對大規(guī)模數(shù)據(jù)的支持。
[0042]并且,現(xiàn)有技術中建立索引的方式往往需要在HBase中插入數(shù)據(jù)的同時建立該數(shù)據(jù)的索引,即需要對數(shù)據(jù)進行“雙寫”,如果其中之一寫數(shù)據(jù)或更改數(shù)據(jù)不成功,就會發(fā)生數(shù)據(jù)不一致的情況,而本發(fā)明實施例通過增設行數(shù)據(jù)的標記位,在向HBase表添加或修改數(shù)據(jù)時對標記位進行標記,并且通過不斷掃描標記位對elasticsearch中的索引進行添加或者更新,使得對HBase表的數(shù)據(jù)修改和對索引的修改可以分開進行,不僅避免了由于寫數(shù)據(jù)失敗造成的數(shù)據(jù)不一致,而且該索引的建立不依賴于HBase的Observer或者其他內(nèi)部模塊,對HBase的不同版本也沒有特殊的要求,適用范圍更廣。
[0043]還可以通過設置對標記位的掃描時間間隔,避免了每次修改HBase的一條數(shù)據(jù)時立即更新elasticsearch而導致的低效問題。
【附圖說明】
[0044]圖1是本發(fā)明的一種二級索引建立方法實施例的步驟流程圖;
[0045]圖2是本發(fā)明的另一種二級索引建立方法實施例的步驟流程圖;
[0046]圖3是本發(fā)明的一種數(shù)據(jù)查詢方法實施例的步驟流程圖;
[0047]圖4是本發(fā)明的一種二級索引建立裝置實施例的結(jié)構(gòu)框圖;
[0048]圖5是本發(fā)明一種數(shù)據(jù)查詢裝置實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0049]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進一步詳細的說明。
[0050]參照圖1,示出了本發(fā)明的一種二級索引建立方法實施例的步驟流程圖,具體可以包括如下步驟:
[0051]步驟101,索引初始化,包括:對數(shù)據(jù)庫全表進行掃描,并對每一行數(shù)據(jù)建立一個索引。
[0052]本發(fā)明實施例中,二級索引建立裝置可以獨立設置,也可以設置在搜索服務器內(nèi),例如elasticsearch服務器內(nèi)。該裝置可以與建立二級索引的數(shù)據(jù)庫進行交互。
[0053]以HBase數(shù)據(jù)庫為例,在建立Hbase的二級索引時,首先進行索引初始化,即對HBase全表進行掃描,讀取每行數(shù)據(jù),并對每行數(shù)據(jù)建立一個索引,也就是二級索引。
[0054]具體地,可以利用elasticsearch來建立二級索引。elasticsearch是一個基于Lucene的開源分布式實時搜索和數(shù)據(jù)分析工具,它可以快速的對數(shù)據(jù)建立倒排索引,進行數(shù)據(jù)分析,并且提供實時的檢索功能。elasticsearch在處理大規(guī)模數(shù)據(jù)方面具有很大優(yōu)勢,已經(jīng)在很多大型網(wǎng)站的搜索方面得到應用,能夠處理TB甚至PB級別的數(shù)據(jù),可擴展能力強。
[0055]本步驟可以對HBase全表進行掃描,將HBase的每行數(shù)據(jù)放入elasticsearch中,并對每一行數(shù)據(jù)在elasticsearch中建立一個索引。
[0056]其中,每個索引對應一個唯一索引標識id,根據(jù)上述對應關系,HBase每行數(shù)據(jù)的
Rowkey與索引標識id--對應。為了便于數(shù)據(jù)更新和查找,可以直接將行數(shù)據(jù)的Rowkey
設置為對應索引的索引標識id。
[0057]步驟102,掃描數(shù)據(jù)庫中行數(shù)據(jù)的標記位,標記位用于標記其對應行數(shù)據(jù)的變化情況。
[0058]本實施例中,對HBase中的每個Rowkey對應維護一塊內(nèi)存區(qū)域,在其中增設Rowkey對應的標記位,該標記位用于標記其對應行數(shù)據(jù)的變化情況,例如,增加數(shù)據(jù),更新數(shù)據(jù),刪除數(shù)據(jù)等。
[0059]對于不同的變化情況可以設置不同的標記位以便于在掃描到行數(shù)據(jù)的標記位時,可以獲知該行數(shù)據(jù)的變化情況具體是哪種情況。例如,標記位為
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1