SlideShare une entreprise Scribd logo
1  sur  60
https://github.com/zhang-xzhi/simplehbase
https://github.com/zhang-xzhi/simplehbaseviewer
xinzhi.zhang
简介
小例子
Simplehbase技术依赖
Simplehbase架构与组件
Simplehbase数据映射
code test doc
simplehbaseviewer
提纲
simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。
1. 数据类型映射:java类型和hbase的bytes之间的数据转换。
2. 简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作
方式。
3. hbase query封装:封装了hbase的filter,可以使用sql-like的方式操作
hbase。
4. 动态query封装:类似于myibatis,可以使用xml配置动态语句查询
hbase。
5. insert,update支持: 建立在hbase的checkAndPut之上。
6. hbase多版本支持:提供接口可以对hbase多版本数据进行查询,映射。
7. hbase原生接口支持。
简介
小例子 - put
小例子 - search
小例子 - dynamic query
小例子 - delete
小例子 - POJO
小例子 - rowkey
小例子 - simplehbaseclient
小例子 – config file
Simplehbase技术依赖
xml
Spring
Resource
anltr4 annotation
tomcat
Hbase
client
API
maven reflection
simplehbaseviewer
Simplehbase架构
hbase
simplehbaseclient
Java appJOPO config
Client configRowKey
Simplehbase架构
hbase
simplehbaseclient
Java appJOPO config
Client configRowKey
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
TableSchema
定义htable的schema。
tableName 必填 表名。
defaultFamily 选填 默认family名。
rowKeyHandlerName 选填 rowkey由bytes转为Java object的handler类名。
默认值为BytesRowKeyHandler。
HBaseColumnSchema中
family
如果指定了defaultFamily,则可以不填该列的family,如果未指定defaultFamily,则必填。
qualifier
列名 必填
typeName
java类型 必填
handler
java类型和bytes之间的数据转换handler,选填,不填则使用默认的handler。
TableSchema
typeName对于普通java类型需要使用全类名。
对于以下类型可以使用缩写。
byte short int long char float double boolean
Byte Short Int Long Char Float Double Boolean
string String date Date
TableSchema
当不指定handler时,使用如下默认handler。
boolean Boolean BooleanHandler 1 byte 保存。
byte Byte ByteHandler 1 byte 保存。
char Character CharacterHandler 2 bytes 保存。
double Double 8 bytes 保存。
float Float 4 bytes 保存。
int Integer 4 bytes 保存。
long Long 8 bytes 保存。
short Short 2 bytes 保存。
String utf-8编码后保存。
Date DateHandler 8 bytes 保存。保存getTime值。
Enum name utf-8编码后保存。
TypeHandler
自定义typehandler。
可以通过实现TypeHandler来自定义TypeHandler。 推荐直接extends
AbstractTypeHandler实现。TypeHandler定义如下
TypeHandler
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
hbase query language
HQL
目前simplehbase支持以下查询语句。
Select条件语句
Count条件语句
HQL
列名 二元比较符 比较值
lessequal less greaterequal greater notequal equal
String类型特有的二元比较符
notmatch match
包含操作符
in notin
in ( 常量 , 常量 , 常量 )
in 变量 变量必须为列表
notin ( 常量 , 常量 , 常量 )
notin 变量 变量必须为列表
between操作符
between 常量 and 常量
between 变量 and 变量
notbetween 常量 and 常量
notbetween 变量 and 变量
HQL - 二元操作符
列名 isnull
列名 isnotnull
列名 ismissing
列名 isnotmissing
HQL – 单目操作符
逻辑连接符
and or
优先级符
小括号()
HQL – 其他操作符
常量使用字符串外包双引号的形式。如"1","2011-10-10"。
目前支持的常量类型。
String,Boolean,Byte,Short,Character,Integer,Long,Float,Double。
Date 支持格式
yyyy-MM-dd_HH:mm:ss:SSS
yyyy-MM-dd_HH:mm:ss
yyyy-MM-dd_HH:mm
yyyy-MM-dd_HH
yyyy-MM-dd
Enum支持name的字符串表示。
HQL – 常量
另外,支持用户自定义常量解释器。
具体请参考SimpleHbaseRuntimeSetting和LiteralInterpreter。
HQL – 常量
变量使用字符串外包#的形式。如#name#,#age#。
由查询时的Map对象传入。#key#自动解析参数map中的value。
HQL – 变量
DHQL
dynamic hbase query language
simplehbase支持动态查询,动态查询可以避免应用代码大量if-else之类的
判断,拼接查询条件,提高代码质量。
DHQL
DHQL -单目动态语句
DHQL -双目动态语句
DHQL - Dynamic
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
Rowkey字符串函数。
转换string为RowKey对象。
主要为simplebaseviewer中使用。
RowKeyTextFunc
Client config
Client config
HBaseDataSource
Hbase,zk config
自定义配置:
HTABLE_POOL_SIZE
HBaseTableConfig
Table schema
HQL
SimpleHbase
RuntimeSetting
Scan caching size
Delete batch size
RowKeyTextFunc
LiteralInterpreter
支持用户自定义常量解释器。
上下文自动类型感知。
如 id equal “abc” 当id的java类型设为A时(simplehbase默认不支持的类型),
需要自定义常量解释器来解释”abc”的含义,转换”abc”为A类型的实例。
LiteralInterpreter
Simplehbase架构
hbase
simplehbaseclient
Java appJOPO config
Client configRowKey
转换java对象为hbase的rowkey。
框架提供了一些简单的实现。
RowKey
Simplehbase架构
hbase
simplehbaseclient
Java appJOPO config
Client configRowKey
JOPO
config
@HBaseColumn
@HBaseTable@HBaseVersion
JOPO config
Simplehbase架构
hbase
simplehbaseclient
Java appJOPO config
Client configRowKey
simplehbaseclient
分层服务
BasicService
AggregateService
SimpleHbaseVersionedService
HbaseMultipleVersionService
HbaseRawService
HbaseService
HBaseDataSourceAware
HBaseTableConfigAware
SimpleHbaseRuntimeSettingAware
BasicService
AggregateService
SimpleHbaseVersionedService
HbaseMultipleVersionService
HbaseRawService
HbaseService
Simplehbase数据映射
Rowkey bytes
Cf:column bytes
Cf:column bytes
HBase
RowKeyObject JAVATYPE
HQL rowkey 字符串 HQL 中常量字符串
LiteralInterpreter
大量默认实现
TypeHandler
大量默认实现
RowKeyTextFunc
少量默认实现
RowKey
少量实现
RowKeyHandler
少量实现
https://github.com/zhang-xzhi/simplehbase
https://github.com/zhang-xzhi/simplehbase/wiki
https://github.com/zhang-xzhi/simplehbaseviewer
https://github.com/zhang-xzhi/simplehbaseviewer/wiki
Code test doc
simplehbaseviewer是基于simplehbase的web操作界面.
目前提供以下功能:
htable插入数据,指定时间戳。
htable查询数据,SQL-Like,可以指定maxversion,时间戳范围,limit分
页查询。
htable删除数据。
自定义rowkey生成函数,方便查询。
例子: 月账单rowkey设计如下: md5(userId)前4位userId反转账单周期反
转 自定义一个rowkey生成函数billCategoryRowKey,配置在
simplehbaseviewer中,可以使用如下方式查询。
select * from billCategory rowkey is billCategoryRowKey
("2088123456781234_20140401")
simplehbaseviewer
htable查看功能:
查看htable信息。
查看htable数据列的配置信息。
查看该表上的rowkey函数。
查看该表上的字面常量解释器
simplehbaseviewer
simplehbaseviewer
simplehbaseviewer
simplehbaseviewer
END

Contenu connexe

Tendances

用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
J2ee面试知识
J2ee面试知识J2ee面试知识
J2ee面试知识yiditushe
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期frogd
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复Lixun Peng
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记yiditushe
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料yiditushe
 
Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作zhubin885
 
Hbase拾荒者
Hbase拾荒者Hbase拾荒者
Hbase拾荒者chernbb
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)frogd
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Hadoop基线选定
Hadoop基线选定Hadoop基线选定
Hadoop基线选定baggioss
 
MySQL源码分析.02.Handler API
MySQL源码分析.02.Handler APIMySQL源码分析.02.Handler API
MySQL源码分析.02.Handler APILixun Peng
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构Louis liu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题WASecurity
 

Tendances (18)

用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
J2ee面试知识
J2ee面试知识J2ee面试知识
J2ee面试知识
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期
 
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
MySQL源码分析.03.InnoDB 物理文件格式与数据恢复
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料
 
Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作
 
Hbase拾荒者
Hbase拾荒者Hbase拾荒者
Hbase拾荒者
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Hadoop基线选定
Hadoop基线选定Hadoop基线选定
Hadoop基线选定
 
MySQL源码分析.02.Handler API
MySQL源码分析.02.Handler APIMySQL源码分析.02.Handler API
MySQL源码分析.02.Handler API
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题A.oracle 查询结果的缓存问题
A.oracle 查询结果的缓存问题
 

Similaire à Hbase orm framework simplehbase0.5 introduction

Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践Li Map
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享bluedavy lin
 
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)yiihsia
 
HFile,Compact And Split of HBase
HFile,Compact And Split of HBaseHFile,Compact And Split of HBase
HFile,Compact And Split of HBasejhao niu
 
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pubAn introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pubjiangxu
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成wait4friend
 
Hbase性能测试文档
Hbase性能测试文档Hbase性能测试文档
Hbase性能测试文档baggioss
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践Min Zhou
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509tidesq
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
 
Google protocol buffers简析
Google protocol buffers简析Google protocol buffers简析
Google protocol buffers简析wavefly
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.pptjames tong
 

Similaire à Hbase orm framework simplehbase0.5 introduction (20)

Hbase架构简介、实践
Hbase架构简介、实践Hbase架构简介、实践
Hbase架构简介、实践
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享
 
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)
 
HFile,Compact And Split of HBase
HFile,Compact And Split of HBaseHFile,Compact And Split of HBase
HFile,Compact And Split of HBase
 
An introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pubAn introduce to n hibernate (part 1) pub
An introduce to n hibernate (part 1) pub
 
Hbase
HbaseHbase
Hbase
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成
 
Hbase性能测试文档
Hbase性能测试文档Hbase性能测试文档
Hbase性能测试文档
 
Hibernate教程
Hibernate教程Hibernate教程
Hibernate教程
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
Zh tw introduction_to_h_base
Zh tw introduction_to_h_baseZh tw introduction_to_h_base
Zh tw introduction_to_h_base
 
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 
Hibernate
HibernateHibernate
Hibernate
 
Google protocol buffers简析
Google protocol buffers简析Google protocol buffers简析
Google protocol buffers简析
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
Cassandra简介.ppt
Cassandra简介.pptCassandra简介.ppt
Cassandra简介.ppt
 

Hbase orm framework simplehbase0.5 introduction