Apache Phoenix 是 Apache 顶级项目中的数据平台,运行在 HBase 之上,将标准 SQL 和 JDBC 带回 NoSQL 数据环境。它会把 SQL 查询编译为 HBase 扫描,并通过协处理器和自定义过滤器执行,再生成 JDBC 结果集。产品面向 Hadoop 上的低延迟 OLTP 与运营分析,同时保留 NoSQL 的 schema-on-read 灵活性,并与 Spark、Hive、Pig、Flume 和 Map Reduce 集成。它既支持熟悉的关系型查询方式,也覆盖多租户应用、时间序列数据、二级索引和数据集成等场景。
核心功能
标准 SQL 与 JDBC 查询
Phoenix 支持 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等 SQL 语法,并提供完整的 DML 与 DDL 支持。应用可以通过标准 JDBC API 访问 HBase 中的数据,使用 JDBC URL jdbc:phoenix:server1,server2:port 建立连接。查询结果以 JDBC result sets 的形式返回,适合已有 SQL 和 JDBC 使用方式的应用接入。
面向 HBase 的查询执行
Phoenix 会将用户提交的 SQL 查询编译成 HBase scans,并使用协处理器与自定义过滤器完成优化执行。官网将其定位为面向小查询的毫秒级低延迟方案,也支持对数千万行数据在数秒级完成查询。具体执行依赖 HBase 作为 backing store,并利用其底层能力完成数据访问。
ACID 事务与低延迟 OLTP
产品支持完整 ACID 事务能力,可用于具有事务要求的运营数据查询和低延迟 OLTP 工作负载。官网将低延迟事务处理描述为毫秒级响应场景,并强调 full ACID support。对于业务洞察场景,Phoenix 可以在运营数据上执行实时 SQL 查询,同时保留 ACID 保证。
灵活 Schema 与多租户应用
Phoenix 使用来自 NoSQL 世界的 schema-on-read 灵活性,并以 HBase 作为存储后端。对于 SaaS 应用,官网给出的模式是通过 views 和 dynamic columns 实现租户隔离。这样的数据模型同时服务于多租户应用和需要灵活读取结构的数据场景。
二级索引与时间序列数据
Phoenix 支持在非主键列上进行快速查找,并提供 automatic index maintenance。它还支持对时间序列数据执行 SQL 查询,覆盖相应数据的存储与检索模式。官网将二级索引用于加快非主键字段查询,将时间序列能力用于高效存储和读取时间序列数据。
数据集成与近期能力
Phoenix 可与 Spark、Hive、Pig、Flume 和 Map Reduce 集成,用于 ETL pipelines 和综合数据工作流。5.3.1 版本还提供 DynamoDB-compatible REST API,可让 DynamoDB SDK 客户端通过 phoenix-adapters REST service 指向 Phoenix,而无需改写应用;同时支持 BSON 原生二进制 JSON 列类型、服务端投影与过滤、按字段原子更新,以及将行级变更作为有序分区事件读取的 Change Data Capture。对于写入密集型工作负载,Eventually Consistent Indexes 可将全局二级索引维护移出写入路径。
使用方式
使用者可以先下载最新稳定版本并校验 checksums,再阅读集群设置、Schema 设计和运维指南。客户端接入需要配置 JDBC client classpath 与连接 URL,官网给出的标准连接格式为 jdbc:phoenix:server1,server2:port。Phoenix 还提供 phoenix-adapters REST service,使 DynamoDB SDK 客户端能够通过兼容 REST API 访问;正文未说明是否需要注册或自备模型 Key。
适用人群与场景
使用 HBase 和 Hadoop 的数据团队,可以用 Phoenix 通过标准 SQL 访问 NoSQL 数据,并将查询接入现有 JDBC 客户端。需要实时业务洞察的团队,可将它用于带 ACID 保证的运营分析;需要事务型工作负载的应用,可用于低延迟 OLTP。构建 SaaS 应用的开发者可以使用 views 和 dynamic columns 做租户隔离;数据工程团队则可以结合 Spark、Hive 和 Map Reduce 构建 ETL 流程,并处理时间序列数据。
注意事项
Phoenix 以 HBase 作为 backing store,SQL 查询会被编译为 HBase scans,因此使用前需要按照官方指南完成集群设置。官网正文提供了下载、文档和 JDBC 客户端配置路径,但没有给出价格、免费额度或注册要求。