写点什么

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:4619256
用户头像

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

关注

评论

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

SMART Utility for mac (磁盘诊断工具) v3.2.7版

Mac相关知识分享

1688商品详情数据接口全面解析,数据驱动决策,精准营销不再是梦!

tbapi

1688商品详情数据接口 1688商品数据采集 1688 API

在线视频下载软件Downie 4 for Mac兼容14系统

Mac相关知识分享

iStat Menus for mac(mac系统状态监控工具) v6.73 (1239)中文版

Mac相关知识分享

金融数据分析优化|实战应用小浣熊

Swift社区

终端仿真软件SecureCRT for Mac

Mac相关知识分享

终端软件

民航业电子签章应用报告:工卡、放行单电子化,飞机维护维修提效

Geek_2a38d5

电子签章

低代码为企业数字化转型提供引擎

快乐非自愿限量之名

低代码 数字化

观测云:全栈监控的先行者

可观测技术

可观测性

【一步到位】怎样免费下载YouTube视频?

Sabrina

youtube视频下载 油管视频下载 下载油管视频 YouTube视频下载工具 油管视频

抖音接口推荐:抖音商品详情数据接口(douyin.item_get)

tbapi

抖音 抖音商品数据采集 抖音商品详情数据接口 抖音API

什么是汽车虚拟仿真vr技术?

3DCAT实时渲染

汽车虚拟仿真 云VR看车 云车展

Pebble 携手 Footprint Analytics:数据领航,重塑区块链游戏领域

Footprint Analytics

链游

解锁京东商品详情数据接口:打造电商智能分析新利器

tbapi

京东商品详情数据接口 京东API

低代码激发数字经济新动能:重塑企业创新与效率

不在线第一只蜗牛

低代码 数字经济

在 Windows 平台搭建 MQTT 服务

EMQ映云科技

mqtt mqtt broker

活动回顾|矩阵起源2024WAIC圆满落幕

MatrixOrigin

人工智能 数据库 WAIC

如何预防外部威胁和内部威胁

麦兜

Turbo Boost Switcher Pro for mac(cpu温度监测工具)

Mac相关知识分享

IoTDB 集群高效管理:一键启停功能介绍

Apache IoTDB

挖掘二手市场的金矿:闲鱼商品详情数据接口策略指南

tbapi

闲鱼API 闲鱼商品详情数据接口 闲鱼商品数据采集

代码数据两不误,小浣熊请求出战

法医

AI

Go语言map并发安全,互斥锁和读写锁谁更优?

秃头小帅oi

中国互联网大会 | 百度智能云千帆大模型数据安全解决方案荣获“金灵光杯”

百度安全

文件同步与对比工具Beyond Compare 4 for Mac

Mac相关知识分享

Mac 软件

VSD Viewer for mac(Visio绘图文件阅读器) v6.16.1版

Mac相关知识分享

软件 Mac软件 软件下载

轻松管理抖音店铺:抖音视频详情数据接口自动化教程

tbapi

抖音API 抖音视频详情接口 抖音视频数据接口 抖音视频数据采集

成本下降50%,腾讯音乐StarRocks存算分离大规模实践!

StarRocks

大数据 Druid 存算分离 湖仓一体 Click house

ShareMouse for mac(鼠标键盘共享工具) v6.0.59版

Mac相关知识分享

快速把握数据要素X战略结构

蛙人族

Data Lake 大数据‘’

真·我的上班搭子之有小浣熊的一天——分分钟完成万条人事数据分析

Geek_cc71cf

办公小浣熊 代码小浣熊 小浣熊家族 小浣熊

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