论坛首页 Java企业应用论坛

hbase轻量级中间件simplehbase v0.1简介

浏览 4213 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-10-09   最后修改:2013-12-20
------------------------------------------------v0.2版本------------------------------------------------
https://github.com/zhang-xzhi/simplehbase/
https://github.com/zhang-xzhi/simplehbase/wiki
------------------------------------------------v0.2版本------------------------------------------------

------------------------------------------------v0.1版本------------------------------------------------
simplehbase尝试简化基于hbase的java应用开发。

Simplehbase主要提供以下功能:
1 POJO和hbase的映射。
2 提供client,简化hbase的数据操作。
3 提供强语义的插入和更新操作。
  Insert操作:只有原数据不存在时,才put成功。
  Update操作:只有原数据存在时,才put成功。

simplehbase的代码,测试(示例)代码,文档见附件。


看一个简单的例子:

1 通过注解标示要保存在hbase中的POJO。该POJO对应hbase的Key-Value中的Value。
@HBaseTable(defaultFamily = MyRecordConstants.ColumnFamilyName, defaultConvertor = DefaultColumnConvertor.class)
public class MyRecord {
    @HBaseColumn(qualifier = "id")
    private int id;
    @HBaseColumn(qualifier = "name")
    private String name;
    @HBaseColumn(qualifier = "date")
    private Date date;
    @HBaseVersion
    @HBaseColumn(qualifier = "version")
    private long version;
}



2 定义RowKey,该类型对应hbase的key-value中的key。
public class MyRecordRowKey implements RowKey {

    private String row;

    public MyRecordRowKey(String row) {
        this.row = row;
    }

    @Override
    public byte[] toBytes() {
        return Bytes.toBytes(row);
    }

    @Override
    public String getTableName() {
        return MyRecordConstants.TableName;
    }
}





3 使用simplehbase的client和hbase进行交互。

保存数据到hbase。
        MyRecord myRecord = new MyRecord();
        myRecord.setId(0);
        myRecord.setName("allen1");
        myRecord.setDate(new Date());
        myRecord.setVersion(0L);
        MyRecordRowKey myRecordRowKey = new MyRecordRowKey("key_allen1");
        simpleHbaseClient.putObject(myRecordRowKey, myRecord);



删除数据

        MyRecordRowKey myRecordRowKey = new MyRecordRowKey("key_allen1");
        simpleHbaseClient.deleteObject(myRecordRowKey);



按照key查找数据
                MyRecord myRecord2 =  simpleHbaseClient.findObject(myRecordRowKey,
                MyRecord.class);



按照startKey和endKey查找列表
        MyRecordRowKey startRowKey = new MyRecordRowKey("key_allen1");
        MyRecordRowKey endRowKey = new MyRecordRowKey("key_allen8");
        List<MyRecord> list = simpleHbaseClient.findObjectList(startRowKey,
                endRowKey, MyRecord.class);




   发表时间:2013-10-10  
提两点建议吧
1.个人更喜欢约定大于配置,所以不太想用注解
2.代码建议放到github上
0 请登录后投票
   发表时间:2013-10-10  
1 原本是想搞一套注解的,一套xml配置的。约定这种策略也可以考虑。
2 目前筹备中,希望能得到更多的反馈。
0 请登录后投票
   发表时间:2013-12-20  
目前已经有了v0.2版本
https://github.com/zhang-xzhi/simplehbase/
https://github.com/zhang-xzhi/simplehbase/wiki

simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。

    数据类型映射:java类型和hbase的bytes之间的数据转换。
    简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。
    hbase query封装:封装了hbase的filter,可以使用sql-like的方式操作hbase。
    动态query封装:类似于myibatis,可以使用xml配置动态语句查询hbase。
0 请登录后投票
   发表时间:2013-12-20  
finallygo 写道
提两点建议吧
1.个人更喜欢约定大于配置,所以不太想用注解
2.代码建议放到github上


你这个建议不错,照做了。thx。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics