标准 SQL 与 JDBC
支持 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等完整查询构造,以及 DML 和 DDL。可连接 jdbc:phoenix:server1,server2:port 这类标准 JDBC URL。官网明确列出暂不支持 INTERSECT、MINUS 关系运算符。
拖动滑块完成拼图,通过后发送验证码
独立第三方 AI 评测平台 · 只用实测数据
运行在 HBase 上的 SQL 层,用标准 SQL 与 JDBC 查询 NoSQL
Apache Phoenix 是 Apache 基金会旗下的顶级项目,为 HBase 提供标准 SQL 与 JDBC 接口,把 SQL 查询编译成 HBase 扫描后执行。官网定位为 Hadoop 上的 OLTP 与运营分析数据平台,支持完整 ACID 事务、二级索引,小查询毫秒级返回、千万行级查询秒级返回,并与 Spark、Hive、Pig、Flume、MapReduce 集成。最新版本为 5.3.1,新增 DynamoDB 兼容 REST API、BSON 文档类型、变更数据捕获(CDC)与最终一致性索引。官网未公开定价与商用授权方式。
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。
支持 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等完整查询构造,以及 DML 和 DDL。可连接 jdbc:phoenix:server1,server2:port 这类标准 JDBC URL。官网明确列出暂不支持 INTERSECT、MINUS 关系运算符。
SQL 查询被编译成 HBase 扫描,配合协处理器与自定义过滤器执行。官网给出的性能口径为:小查询毫秒级,千万行级别查询秒级完成。
在 HBase 之上提供完整 ACID 事务能力,用于 OLTP 事务型负载与需要一致性保证的运营分析场景。
5.3.0 引入的原生二进制 JSON 列类型,可在服务端读取、过滤和原子更新单个字段,无需把整个文档回传到客户端。支持字符串、数字、日期、二进制、布尔、null、数组和嵌套对象。
官方说明 ↗5.3.1 提供 phoenix-adapters REST 服务,可把现有 DynamoDB SDK 客户端直接指向 Phoenix,无需改写应用。
把行级变更以有序、分区的事件流形式输出,可用标准 SQL 读取,并保留完整的 split/merge 血缘信息。
支持在非主键列上建立索引并自动维护。5.3.1 提供最终一致性索引,把全局二级索引维护从写路径移出,提升写入吞吐,代价是有界的数据陈旧。
通过视图和动态列构建 SaaS 应用,实现租户隔离。每个租户的视图共享底层物理表,降低多租户场景的存储与运维开销。
与 Spark、Hive、Pig、Flume 和 MapReduce 完全集成,可用于构建 ETL 管道与跨组件的数据工作流。
已有 HBase 集群、希望用 SQL 和 JDBC 替代原生 API 的开发团队。可直接沿用标准 JDBC URL 接入,5.3.1 的 DynamoDB 兼容 REST API 还能让现有 DynamoDB SDK 客户端直接指向 Phoenix。
需要在 Spark、Hive、Pig、Flume、MapReduce 之间搭建 ETL 管道,同时希望用 SQL 做运营分析的团队,与现有 Hadoop 组件集成度较高。
用视图和动态列实现租户隔离,适合需要在一套物理表上支撑多客户的后端架构,但仍需以 HBase 作为底层存储。
Phoenix 以 HBase 为底层存储,需要先具备 HBase 集群。没有 HBase 环境、数据量也不大的项目接入成本不划算。
Phoenix 把 SQL 查询编译成 HBase 扫描,再配合协处理器和自定义过滤器执行,最后返回标准 JDBC 结果集。开发者不用直接调用 HBase API,就能用 SQL 完成查询和数据操作,同时保留 HBase 作为底层存储。
支持。明确写有 full ACID transaction capabilities,用于 OLTP 事务型负载和需要一致性保证的运营分析场景。
包括的不支持项包括 INTERSECT 和 MINUS 两个关系运算符,以及部分内置函数。SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等标准查询构造以及完整的 DML、DDL 均在支持范围内。
适合每行文档结构不固定、且需要在服务端读取、过滤或更新单个字段的场景,例如 DynamoDB 风格的业务对象、逐行差异较大的配置或偏好文档、需要过滤特定字段的事件负载,以及要求原子更新的计数器。如果结构稳定就用普通关系列,如果服务端从不检查文档内容则用 VARCHAR 或 VARBINARY 存原始 JSON。
5.3.1 加入四项:DynamoDB 兼容 REST API、BSON 文档列类型、变更数据捕获(以有序分区事件流输出行级变更)、以及最终一致性索引(把全局二级索引维护移出写路径以提升写入吞吐)。其中 BSON 类型在 5.3.0 引入,对应 PHOENIX-7330。
通过标准 JDBC 驱动连接,URL 形如 jdbc:phoenix:server1,server2:port。客户端需要配置 JDBC 客户端 classpath,官方文档提供了从下载、集群与 schema 设计到客户端接入的完整入门步骤。
| 工具 | 编辑评分 | 价格 | 核心功能 | 平台 |
|---|---|---|---|---|
| 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 |