hbase phoenix sql入门.pdfVIP

  • 99
  • 0
  • 约4.51千字
  • 约 8页
  • 2017-08-10 发布于河南
  • 举报
hbase phoenix sql入门

Phoenix sql 入门 整理:风轻扬 qq:412664502 一.Phoenix 介绍 近日,S 开源了Phoenix,这是一个Java 中间层,可以让开发者在Apache HBase 上执行 SQL 查询。InfoQ 有幸采访到了S 的主开发者James Taylor 以了解关于Phoenix 的更多信息。 除了无数的SQL、NoSQL 与NewSQL 数据库,S 又宣布了Phoenix 项目,这是构建在Apache HBase (列式大数据存储)之上的一个SQL 中间层。Phoenix 完全使用Java 编写,代码位于GitHub 上,并 且提供了一个客户端可嵌入的JDBC 驱动。 根据项目所述,Phoenix 被S 内部使用,对于简单的低延迟查询,其量级为毫秒;对于百万 级别的行数来说,其量级为秒。Phoenix 并不是像HBase 那样用于map-reduce job 的,而是通过标准化的 语言来访问HBase 数据的。 根据项目创建者所述,对于10M 到100M 的行的简单查询来说,Phoenix 要胜过Hive。对于使用了HBase API 、协同处理器及自定义过滤器的Impala 与OpenTSDB 来说,进行相似的查询Phoenix 的速度也会更快 一些。 Phoenix 查询引擎会将SQL 查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC 结果集。 直接使用HBase API 、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级 别的行数来说,其性能量级是秒。 Phoenix 最值得关注的一些特性有: 嵌入式的JDBC 驱动,实现了大部分的java.sql 接口,包括元数据API 可以通过多部行键或是键/值单元对列进行建模 完善的查询支持,可以使用多个谓词以及优化的扫描键 DDL 支持:通过CREATE TABLE 、DROP TABLE 及ALTER TABLE 来添加/删除列 版本化的模式仓库:当写入数据时,快照查询会使用恰当的模式 DML 支持:用于逐行插入的UPSERT VALUES 、用于相同或不同表之间大量数据传输的UPSERT SELECT、用于删除行的DELETE 通过客户端的批处理实现的有限的事务支持 单表——还没有连接,同时二级索引也在开发当中 紧跟ANSI SQL 标准 Phoenix 代码基于BSD 许可开源。 下面是InfoQ 采访Phoenix 主开发者James Taylor 的访谈内容。 InfoQ:为何要为Non-SQL 数据存储提供SQL 接口?现在已经有很多其他的SQL 解决方案了。 JT :现有的SQL 解决方案通常都不是水平可伸缩的,因此当数据量变大时会遇到阻碍。至于我们为何在 NoSQL 数据存储HBase 上提供SQL 接口,有如下几个原因: 使用诸如SQL 这样易于理解的语言可以使人们能够更加轻松地使用HBase。相对于学习另一套私有 API ,人们可以使用熟悉的语言来读写数据。 使用诸如SQL 这样更高层次的语言来编写减少了你所需编写的代码量。比如说,使用Phoenix,你可以 编写下面这样的查询来获取Web 的统计数据(我不想说使用原生的HBase API 会有多少行代码,但肯定 少不了): SELECT TRUNC(DATE,DAY) DAY, SUM(CORE) TOTAL_CPU_Usage, MIN(CORE) MIN_CPU_Usage, MAX(CORE) MAX_CPU_Usage FROM WEB_STAT WHERE DOMAIN LIKE Salesforce% GROUP BY TRUNC(DATE,DAY); 执行查询时,在数据访问与运行时执行之间加 SQL 这样一层抽象可以进行大量优化。比如说,对于 GROUP BY 查询来说,我们可以利用HBase 中协同处理器这样的特性。借助于该特性,我们可以在 HBase 服务器上执行Phoenix 代码。因此,聚合可以在服务端执行,而不必在客户端,这么做会极大减少 客户端与服务端之间传输的数据量。此外,Phoenix 还会在客户

文档评论(0)

1亿VIP精品文档

相关文档