PHOENIX

AI TOOL PROFILE工具资料

运行在 HBase 上的 SQL 层,用标准 SQL 与 JDBC 查询 NoSQL

官网地址 http://phoenix.apache.org/

访问官网
价格官网未标价
平台Web
归类论文与学术
收录2025-01-01
复核2025-01-01
编辑评分 4.2 / 5

PHOENIX编辑总结

EDITOR REVIEW编辑评测

Apache Phoenix 是 Apache 基金会旗下的顶级项目,为 HBase 提供标准 SQL 与 JDBC 接口,把 SQL 查询编译成 HBase 扫描后执行。官网定位为 Hadoop 上的 OLTP 与运营分析数据平台,支持完整 ACID 事务、二级索引,小查询毫秒级返回、千万行级查询秒级返回,并与 Spark、Hive、Pig、Flume、MapReduce 集成。最新版本为 5.3.1,新增 DynamoDB 兼容 REST API、BSON 文档类型、变更数据捕获(CDC)与最终一致性索引。官网未公开定价与商用授权方式。

PHOENIX是什么?

Apache Phoenix 是 Apache 软件基金会的顶级项目,定位为 Hadoop 上的 OLTP 与运营分析数据平台。它把标准 SQL 和 JDBC API 带到 HBase 之上,让原本只能用 HBase API 操作的数据可以用熟悉的 SQL 语句访问。

它的工作方式是把用户提交的 SQL 查询编译成一系列 HBase 扫描,配合协处理器和自定义过滤器在服务端执行,再以标准 JDBC 结果集返回。因此小查询延迟在毫秒级,千万行级别的查询在秒级完成。它同时保留 NoSQL 的 schema-on-read 灵活性,以 HBase 作为底层存储,并支持完整 ACID 事务。

从使用角色看:应用开发者可以沿用 JDBC 驱动和 SQL 语法接入,不用重写数据访问层;数据工程师可以用它做 ETL 管道,与 Spark、Hive、Pig、Flume 和 MapReduce 打通;面向 SaaS 场景的团队可以用视图和动态列实现多租户隔离。5.3.1 版本还加入了 DynamoDB 兼容的 REST API,让原有 DynamoDB SDK 客户端可以直接指向 Phoenix。

PHOENIX核心功能

CAPABILITIES工具标签

标准 SQL 与 JDBC

支持 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等完整查询构造,以及 DML 和 DDL。可连接 jdbc:phoenix:server1,server2:port 这类标准 JDBC URL。官网明确列出暂不支持 INTERSECT、MINUS 关系运算符。

毫秒级查询性能

SQL 查询被编译成 HBase 扫描,配合协处理器与自定义过滤器执行。官网给出的性能口径为:小查询毫秒级,千万行级别查询秒级完成。

ACID 事务

在 HBase 之上提供完整 ACID 事务能力,用于 OLTP 事务型负载与需要一致性保证的运营分析场景。

BSON 文档列类型

5.3.0 引入的原生二进制 JSON 列类型,可在服务端读取、过滤和原子更新单个字段,无需把整个文档回传到客户端。支持字符串、数字、日期、二进制、布尔、null、数组和嵌套对象。

官方说明 ↗

DynamoDB 兼容 REST API

5.3.1 提供 phoenix-adapters REST 服务,可把现有 DynamoDB SDK 客户端直接指向 Phoenix,无需改写应用。

变更数据捕获

把行级变更以有序、分区的事件流形式输出,可用标准 SQL 读取,并保留完整的 split/merge 血缘信息。

二级索引

支持在非主键列上建立索引并自动维护。5.3.1 提供最终一致性索引,把全局二级索引维护从写路径移出,提升写入吞吐,代价是有界的数据陈旧。

多租户支持

通过视图和动态列构建 SaaS 应用,实现租户隔离。每个租户的视图共享底层物理表,降低多租户场景的存储与运维开销。

Hadoop 生态集成

与 Spark、Hive、Pig、Flume 和 MapReduce 完全集成,可用于构建 ETL 管道与跨组件的数据工作流。

PHOENIX适合谁用?

WHO IS IT FOR工具标签

HBase 上的应用开发者

推荐

已有 HBase 集群、希望用 SQL 和 JDBC 替代原生 API 的开发团队。可直接沿用标准 JDBC URL 接入,5.3.1 的 DynamoDB 兼容 REST API 还能让现有 DynamoDB SDK 客户端直接指向 Phoenix。

Hadoop 数据工程师

推荐

需要在 Spark、Hive、Pig、Flume、MapReduce 之间搭建 ETL 管道,同时希望用 SQL 做运营分析的团队,与现有 Hadoop 组件集成度较高。

SaaS 多租户架构团队

推荐

用视图和动态列实现租户隔离,适合需要在一套物理表上支撑多客户的后端架构,但仍需以 HBase 作为底层存储。

只有单机数据库的小型项目

不推荐

Phoenix 以 HBase 为底层存储,需要先具备 HBase 集群。没有 HBase 环境、数据量也不大的项目接入成本不划算。

PHOENIX优点和缺点

PROS & CONS工具标签

优点

  • 完整支持标准 SQL 与 JDBC,HBase 数据不必改用原生 API 访问
  • 给出的性能口径为小查询毫秒级、千万行级查询秒级
  • 在 HBase 之上提供完整 ACID 事务能力
  • 5.3.1 新增 DynamoDB 兼容 REST API,现有 SDK 客户端无需改写
  • 与 Spark、Hive、Pig、Flume、MapReduce 生态完全集成
  • 二级索引自动维护,5.3.1 可选用最终一致性索引提升写入吞吐

缺点

  • 明确说明暂不支持 INTERSECT 与 MINUS 关系运算符
  • 需要自备 HBase 集群,接入门槛高于普通关系型数据库
  • 未公开定价与免费额度,也未说明商用授权范围
  • 未说明国内可用性,需自行确认下载与部署条件

PHOENIX常见问题

FAQ工具标签
Phoenix 和直接写 HBase API 有什么差别?

Phoenix 把 SQL 查询编译成 HBase 扫描,再配合协处理器和自定义过滤器执行,最后返回标准 JDBC 结果集。开发者不用直接调用 HBase API,就能用 SQL 完成查询和数据操作,同时保留 HBase 作为底层存储。

Phoenix 支持事务吗?

支持。明确写有 full ACID transaction capabilities,用于 OLTP 事务型负载和需要一致性保证的运营分析场景。

哪些 SQL 语法不支持?

包括的不支持项包括 INTERSECT 和 MINUS 两个关系运算符,以及部分内置函数。SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等标准查询构造以及完整的 DML、DDL 均在支持范围内。

BSON 列类型适合什么场景?

适合每行文档结构不固定、且需要在服务端读取、过滤或更新单个字段的场景,例如 DynamoDB 风格的业务对象、逐行差异较大的配置或偏好文档、需要过滤特定字段的事件负载,以及要求原子更新的计数器。如果结构稳定就用普通关系列,如果服务端从不检查文档内容则用 VARCHAR 或 VARBINARY 存原始 JSON。

5.3.1 相比之前有哪些新能力?

5.3.1 加入四项:DynamoDB 兼容 REST API、BSON 文档列类型、变更数据捕获(以有序分区事件流输出行级变更)、以及最终一致性索引(把全局二级索引维护移出写路径以提升写入吞吐)。其中 BSON 类型在 5.3.0 引入,对应 PHOENIX-7330。

怎么连接 Phoenix?

通过标准 JDBC 驱动连接,URL 形如 jdbc:phoenix:server1,server2:port。客户端需要配置 JDBC 客户端 classpath,官方文档提供了从下载、集群与 schema 设计到客户端接入的完整入门步骤。

PHOENIX竞品对比

COMPARISON工具标签
工具编辑评分价格核心功能平台
PHOENIX本工具 4.2 未标价 标准 SQL 与 JDBC;毫秒级查询性能;ACID 事务;BSON 文档列类型 Web
Hadoop — 未标价 mapreduce 官网,mapreduce 是什么,原理,编程,说明手册 mapreduc —
Hive — 未标价 Hadoop 生态系统中的第一个 SQL 框架 Web / API
HAWQ — 未标价 一个原生的 SQL-on-Hadoop 引擎 Web
Trafodion — 未标价 一个针对大数据应用的成熟的 SQL-on-Hadoop 的数据库管理系统 Web / API
Impala — 开源,Apache License 一个开源的 MPP SQL 引擎,作为 Hive 的高性能替代品 Web