写点什么

Phoenix:在 Apache HBase 上执行 SQL 查询

  • 2013-02-17
  • 本文字数:1970 字

    阅读完需:约 6 分钟

近日,Salesforce.com 开源了 Phoenix ,这是一个 Java 中间层,可以让开发者在 Apache HBase 上执行 SQL 查询。InfoQ 有幸采访到了 Salesforce.com 的主开发者 James Taylor 以了解关于 Phoenix 的更多信息。

除了无数的 SQL、NoSQL 与 NewSQL 数据库,Salesforce.com 又宣布 Phoenix 项目,这是构建在 Apache HBase (列式大数据存储)之上的一个 SQL 中间层。Phoenix 完全使用 Java 编写,代码位于 GitHub 上,并且提供了一个客户端可嵌入的 JDBC 驱动。

根据项目所述,Phoenix 被 Salesforce.com 内部使用,对于简单的低延迟查询,其量级为毫秒;对于百万级别的行数来说,其量级为秒。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 接口,有如下几个原因:

  1. 使用诸如 SQL 这样易于理解的语言可以使人们能够更加轻松地使用 HBase。相对于学习另一套私有 API,人们可以使用熟悉的语言来读写数据。
  2. 使用诸如 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’);
  1. 执行查询时,在数据访问与运行时执行之间加上 SQL 这样一层抽象可以进行大量优化。比如说,对于 GROUP BY 查询来说,我们可以利用 HBase 中协同处理器这样的特性。借助于该特性,我们可以在 HBase 服务器上执行 Phoenix 代码。因此,聚合可以在服务端执行,而不必在客户端,这么做会极大减少客户端与服务端之间传输的数据量。此外,Phoenix 还会在客户端并行执行 GROUP BY,这是根据行键的范围来截断扫描而实现的。通过并行执行,结果会更快地返回。所有这些优化都无需用户参与,用户只需发出查询即可。
  2. 通过使用业界标准的 API(如 JDBC),我们可以利用现有的工具来使用这些 API。比如说,你可以使用现成的 SQL 客户端(如 SQuirrel, http://squirrel-sql.sourceforge.net/ )连接 HBase 服务器并执行 SQL。感兴趣的读者可以参见入门指南以了解更多信息: https://github.com/forcedotcom/phoenix/blob/master/README.md

InfoQ:有没有性能评估呢?响应时间是否变快了?可伸缩性是否更好了?

JT:可以在这里 https://github.com/forcedotcom/phoenix/wiki/Performance 了解 Phoenix 与其他 NoSQL 产品 / 项目的性能对比。我们并没有发布 Phoenix 与现有的关系型技术之间的基准比较(网上已经有了 HBase 与他们之间的比较),但当行数与行宽增加时,NoSQL 解决方案会更出众。这也取决于你是“如何”使用关系数据库的:是像 Salesforce.com 那样的多租模式抑或单租模式。HBase 非常善于协同定位关系数据,这取决于行键是如何构成的,因此对于某些多租场景来说,其优势是很明显的。

InfoQ:何时才会增加连接支持呢?

JT:连接支持已经在我们的路线图上了,参见 https://github.com/forcedotcom/phoenix/wiki#wiki-roadmap 。我们已经在做一些基础工作了,现在还不能给出准确的时间点,因为有太多事情要做,但我们会尽快的。

查看英文原文: Phoenix: Running SQL Queries on Apache HBase

2013-02-17 22:4619579
用户头像

发布了 88 篇内容, 共 272.5 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

数据资产入表,如何接住这“泼天的富贵”?

奇点云

火山引擎数据飞轮模式下的线上营销:内容产出更智能、人群触达更精准

字节跳动数据平台

大模型 数据飞轮

云消息队列 Kafka 版全面升级:经济、弹性、稳定,成本比自建最多降低 82%

阿里巴巴云原生

kafka 阿里云 云原生

Redis 实现高效任务队列:异步队列与延迟队列详解

左诗右码

从0到1的突破,用户如何借助我们的软件实现企业增长?

天津汇柏科技有限公司

低代码 企业

数据资产入表,如何接住这“泼天的富贵”?

奇点云

数据资产入表

数据湖系列之四 | 数据湖存储加速方案的发展和对比分析

Baidu AICLOUD

分布式缓存 数据湖加速 云原生文件系统

CST教程——如何理解CMA中计算MWC时的MS

思茂信息

cst cst使用教程 CST软件

B端体验深耕-洞察用户需求,打造心有灵犀的使用体验

京东科技开发者

Domino 流计算快速上手 - 1. 扩维

YMatrix 超融合数据库

数据库 数据仓库 YMatrix

软件项目中的合作伙伴和供应商:应对挑战的策略

易成研发中心

项目管理 程序员 软件项目管理

常德等保测评机构有哪些?电话多少?

行云管家

等保 等保测评 常德

通义×Milvus:手把手教你打造专属AI技术顾问

Zilliz

AI Milvus 通义

如何利用1688API:通过商品ID与URL一键接入,高效采集商品详情页实时数据指南

代码忍者

API 接口 pinduoduo API

云真机测试

测试人

软件测试

脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾

声网

UML软件建模器 StarUML for Mac v6.3.0 激活版

Rose

数据资产入表、全面激活数据要素潜能,赋能企业发掘崭新价值!

奇点云

缓存之美——如何选择合适的本地缓存?

京东科技开发者

探索微店API接口:如何获取并解析商品详情数据的Json格式指南

代码忍者

API 接口 pinduoduo API

HyperWorks使用六面体和三棱柱单元进行实体网格剖分

智造软件

CAE软件 Hypermesh hyperworks

字节豆包发布新模型,AI 一句话 P 图;Google 正式推出 Vids,简单提示即可生成视频演示丨 RTE 开发者日报

声网

GitLab 升级如何查看升级路径?

极狐GitLab

速卖通商品详情API实战应用:调用实例与解析

代码忍者

API 接口 pinduoduo API

万界星空科技轮胎行业MES系统数字化解决方案

万界星空科技

mes 万界星空科技mes 汽车轮胎行业 轮胎mes

大模型时代,云原生数据底座的创新和实践

百度Geek说

大数据 百度 智能云

《Django 5 By Example》阅读笔记:p17-p53

codists

Python django

Java定时任务大盘点:发工资也能“指日可待”

京东科技开发者

【CAP评测有奖】邀您共探 AI 应用开发新趋势,赢取多重好礼!

阿里巴巴云原生

阿里云 云原生 CAP

大数据行业数据多样性体现在哪里?用堡垒机可以保障大数据安全吗?

行云管家

大数据 数据安全 数据运维

Phoenix:在Apache HBase上执行SQL查询_Java_Abel Avram_InfoQ精选文章