欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務(wù)器

綠色數(shù)據(jù)中心

hbase orm ORM-HBASE一個輕量級映射框架

背景 HBase在處理billion級別的能力是毫無質(zhì)疑的,目前優(yōu)于其他的nosql數(shù)據(jù)庫,如mongodb、cassandra、redis等, 配合它強大的rowkey查詢,fileter,協(xié)處理器等,在海量數(shù)據(jù)庫中發(fā)揮了強大的功能。但是HBase因為滿足的是CAP原則中C和P,所以在查詢過程中語句支持較弱,使用過程較為復(fù)雜。存在下面的一些痛點。 痛點 首先HBase只能存儲byte數(shù)組的數(shù)據(jù),數(shù)據(jù)存入到hbase中時都需要做相應(yīng)的轉(zhuǎn)換,讀取的數(shù)據(jù)的時候也要相應(yīng)的轉(zhuǎn)換回來,使用麻煩。 第二,HBase在使用過程中,涉及到filter、協(xié)處理的使用,如果對API不熟悉,無法下手。 第三,hbase本身不提供分頁的功能,每次分頁需要在代碼中記錄當(dāng)前讀取的rowkey,在使用PageFilter讀取一定數(shù)量的rowkey,然后繼續(xù)讀取,編程復(fù)雜度高。 最后,不熟悉hbase的開發(fā)人員,無法理解nosql、hbase的no schema,期望還是用關(guān)系數(shù)據(jù)庫的方式操作hbase。 HBase ORM框架 基于以上的原因,所以我有了想寫一個類似于hibernate那種對象關(guān)系映射框架(ORM)的想法,像操作對象一樣方便的操作HBase數(shù)據(jù)庫,但是它要是輕量級的,無侵入的,只提供CURD、分頁、映射功能的一個簡單功能。 一些特性: 使用注解的方式,將PO(Persistent Object)映射成HBase對應(yīng)的表 提供CRUD的方法:create esearchupdatedelete 提供分頁查詢的功能 提供類似于hibernate中Criteria 風(fēng)格的操作方式 Demo: 1、在po對象上添加相應(yīng)的注解:@Table@RowKey@Column @Table(name = "user")
public class User { @RowKey private int id; @Column(family = "info") private int userId; @Column(family = "info", name = "user_name1") private String userName; @Column(family = "info") private long age; 2、使用HBaseColumnarClient實例操作PO對象 " hljs axapta"> HBaseColumnarClient client = new HBaseColumnarClient(scanCaching, scanBatch); DataSourceConfig config = new DataSourceConfig("hbase.properties"); HBaseSource source = new HBaseSource(config.getProperties()); client.setHBaseSource(source); //create client.putObject(user); //delete client.deleteObject(user); //query User user = client.findObject(Bytes.toBytes(1), User.class); 3、提供類似于Hibernate Criteria的風(fēng)格操作hbase // count the data Filter[] filters = null; long count = Criteria.aggregate(User.class).fromRow(startRow).toRow(endRow) .filters(filters).build().count(client); // sum the column value long sum = Criteria.aggregate(User.class).fromRow(startRow).toRow(endRow) .filters(filters).propertyName("age").build().sum(client); // query by rowKey User queryUser = Criteria.find(User.class).byRowKey(Bytes.toBytes(id)).build().query(client); // query from startRow to endRow List queryList = Criteria.find(User.class).fromRow(startRow).toRow(endRow).build() .queryList(client); // query by page PageBean pageBean = new PageBean() {}; pageBean.setPageSize(10); pageBean.setStartRow(startRow); pageBean.setStopRow(endRow); PageBean queryPage = Criteria.find(User.class).pageBean(pageBean).build().queryPage(client); // delete data byte[] rowKey = Bytes.toBytes(id); Criteria.delete(User.class).byRowKey(rowKey).build().excute(client);
騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務(wù)器租用 夢飛云服務(wù)器租用 版權(quán)所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 独山县| 宜兰市| 西峡县| 乐亭县| 乌兰浩特市| 汕尾市| 翁源县| 太康县| 双鸭山市| 宝应县| 台南县| 道真| 丹江口市| 平陆县| 虹口区| 来安县| 安化县| 宽甸| 福州市| 伊金霍洛旗| 当雄县| 济宁市| 杭锦后旗| 杂多县| 浮山县| 武宁县| 崇明县| 天祝| 日喀则市| 昌吉市| 巫溪县| 长宁区| 六盘水市| 定陶县| 如皋市| 汝城县| 抚州市| 安溪县| 临泉县| 大石桥市| 恩平市|