背景
某電信專案中採用hbase來儲存使用者終端明細資料,供前台頁面即時查詢。hbase無可置疑擁有其優勢,但其本身只對rowkey支援毫秒級的快速檢索,對於多字段的組合查詢卻無能為力。針對hbase的多條件查詢也有多種方案,但是這些方案要麼太複雜,要麼效率太低,本文只對基於solr的hbase多條件查詢方案進行測試和驗證。
原理
基於solr的hbase多條件查詢原理很簡單,將hbase表中涉及條件過濾的字段和rowkey在solr中建立索引,通過solr的多條件查詢快速獲得符合過濾條件的rowkey值,拿到這些rowkey之後在hbase中通過指定rowkey進行查詢。
hbase與solr系統架構設計
使用hbase搭建結構資料儲存雲,用來儲存海量資料;使用solrcloud集群用來搭建搜尋引擎,將要查詢的結構化資料的id查詢出來,只配置它儲存id。
wd代表使用者write data寫資料,從使用者提交寫資料請求wd1開始,經歷wd2,寫入mysql資料庫,或寫入結構資料儲存雲中,wd3,提交到solr集群中,從而依據業務需求建立索引。
rd代表使用者read data讀資料,從使用者提交讀資料請求rd1開始,經歷rd2,直接讀取mysql中資料,或向solr集群請求搜尋服務,rd3,向solr集群請求得到的搜尋結果為id,再向結構資料儲存雲中通過id取出資料,最後返回給使用者結果。
實現方法有兩種
手工編碼,直接用hbase的api,可以參考下文: 可以使用hbase/solr的luna介面,就不用自己管理兩者。
朱潔
詳聊單例模式
發布物件 使乙個物件能夠被當前範圍之外的 所使用。物件逸出 一種錯誤的發布。當乙個物件還沒有構造完成時,就使它被其他執行緒所見。安全發布物件的4種方法 author title singletonex1 description 單例 懶漢模式 執行緒不安全 date 2020 4 11 15 16 ...
使用linq實現銷售單查詢
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...
單鏈表上查詢演算法的實現
建立乙個長度為n的帶頭結點的單鏈表,在該表中尋找第i個結點,若找到,則輸出ok,否則輸出error。處理資料型別為整型。輸入第一行為鍊錶的長度n 第二行為鍊錶中的資料元素 第三行為要找的結點i。輸出找到就輸出ok,沒找到就輸出error。樣例輸入 101 2 3 4 5 6 7 8 9 10 5樣例...