當前位置:
首頁 > 最新 > HBase封裝easy-hbase的原理是怎樣的

HBase封裝easy-hbase的原理是怎樣的

HBase封裝easy-hbase的原理是怎樣的?這是在Hbase使用中常見的問題。基於HBase原生API的封裝,同時可以用Spring和Spring Boot集成,以達到簡化代碼的目的,從而使代碼的復用性和可讀性有所提高,從而達到提高開發效率的目的。

在處理大數據的業務架構中經常會用到HBase,在開發過程中均使用原生的HBase Api來實現邏輯,對於原生API,在業務上實施並不是什麼難事,但存在的問題就是在復用性和可讀性上不是很理想,在此情況下,根據現有業務和現在HBase的常用方式上封裝了這個簡易的ORM,尚學堂?百戰程序員指出其實,稱之為ORM也並不一定十分恰當,也可以理解為一種輕量級的工具框架,也就是我們用到的easy-hbase,這種框架現在也在被廣泛使用。

在設計思路上,它是基於現有HBase存儲業務的邏輯和使用方式來進行設計,因為HBase使用列簇設計不宜過多,所以一般為單個固定列簇。

HBase存儲的基礎數據表,比如某個訂單或者某個帖子之類的,rowKey類似為主鍵,然後固定單個列簇裡面,某個column就是基礎數據的一個欄位,value就是對應的值,這個實際上和關係型資料庫有點類似了,這樣我們需要一個封裝,根據主鍵返回一堆欄位,再映射成我們需要的對象。

由於HBase是非關係型資料庫,它的查詢都是基於rowKey來進行的。一些關聯查詢需要建立相應的索引來實現,比如某個用戶的發帖列表,用戶相關key為rowKey,column為Long最大值-發帖時間,value為帖子rowKey,這部分數據的column和value都不是固定的,區別於2的固定column值。

HBase存儲的基礎單位也是位元組,這點跟redis都是一致的,但是不同於redis客戶端將value固定為String的位元組數組,HBase提供的api是允許不同類型如Integer|Long|String等操作的,為方便管理和代碼封裝,實際業務上會規定盡量使用String來存儲有關數據,特殊情況下用Long(主要是為了計數器的原子操作)。

HBase基礎數據表查詢會返回指定PO,而一些索引表查詢會返回不同的column和value,另外在條件查詢時,我們有時候會限制返回我們需要的column或者是只取指定value(或者別的筆記關係:大於或不等於等)的column,我們需要一個基礎的單元格類來承載這些功能。一般基礎數據相同的屬性,我們可能會放多份,區分正序或者倒敘等,還有複雜索引的數據其也沒特定的table,所以我們設計的時候是將HBase的table以參數的形式傳入,而非註解,建議這些配置在統一的地方維護。

以上就是HBase封裝easy-hbase的原理,這是大致上的一種描述,在實際中的應用也要根據實際的項目需要而定。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技大咖匯 的精彩文章:

淺談SpringMVC和MyBatis在應用方面的優勢

TAG:科技大咖匯 |