phoenix介绍
Phoenix是HBase的开源SQL中间层,它允许你使用标准JDBC的方式来操作HBase上的数据。在Phoenix 之前,如果你要访问HBase,只能调用它的Java API,但相比于使用一行SQL就能实现数据查询,HBase的API还是过于复杂。Phoenix的理念是we put sql SQL back in NOSQL,即你可以使用标准的SQL就能完成对HBase上数据的操作。
其次,Phoenix 的性能表现也非常优异,Phoenix查询引擎会将SQL查询转换为一个或多个HBase Scan,通过并行执行来生成标准的JDBC结果集。它通过直接使用HBase API以及协处理器和自定义过滤器,可以为小型数据查询提供毫秒级的性能,为千万行数据的查询提供秒级的性能。同时Phoenix还拥有二级索引等HBase不具备的特性,因为以上的优点,所以Phoenix成为了HBase最优秀的SQL中间层。
Phoenix完全使用Java编写,将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的
JDBC结果集。Phoenix主要能做以下这些事情:
●将SQL查询编译为HBase扫描scan
●确定scan的开始和停止位置
●将scan并行执行
●将where子句中的谓词推送到服务器端进行过滤
●通过服务器端挂钩(称为协处理器co-processors)执行聚合查询
除了这些之外,phoenix还进行了一些有趣的增强,以进一步优化性能:
●二级索引,以提高非行键查询的性能(这也是我们引入phoenix的主要原因)
●跳过扫描过滤器来优化IN,LIKE和OR查询
●可选的对行键进行加盐以实现负载均衡,避免热点