아파치 피닉스(Apache Phoenix)는 아파치 하둡(Hadoop) 생태계에서 아파치 하베이스(HBase) 위에 SQL 인터페이스를 제공하는 오픈 소스 관계형 데이터베이스 계층이다. 자바(Java) 기반으로 작성되었으며, 하베이스의 키-값 저장소 특성 위에 표준 SQL 쿼리, 인덱스, 트랜잭션, 스키마 관리 등의 관계형 데이터베이스 기능을 매핑한다.
주요 특징은 다음과 같다.
- SQL 지원: ANSI SQL 표준의 상당 부분을 지원하여, 기존 관계형 데이터베이스 사용자나 BI 도구가 하베이스 데이터를 별도의 복잡한 자바 API 없이 익숙한 SQL 문법으로 조회하고 조작할 수 있게 한다.
- 고성능: 하베이스 네이티브 API를 직접 호출하는 방식으로 컴파일되어, 맵리듀스(MapReduce)나 테즈(Tez) 같은 외부 실행 엔진 없이 하베이스 리전 서버(Region Server) 상에서 쿼리를 직접 실행함으로써 낮은 지연 시간(Low Latency)을 구현한다.
- 인덱스 기능: 기본 키(Primary Key) 외에 보조 인덱스(Secondary Index)를 지원하여, 행 키(Row Key) 기반 조회가 아닌 컬럼 값 기반의 빠른 검색을 가능하게 한다.
- 트랜잭션: 로컬 트랜잭션 및 제한적인 분산 트랜잭션(ACID 속성 중 원자성, 일관성, 격리성 지원)을 제공한다.
- 스키마 관리: 테이블 생성, 변경, 삭제(DDL) 및 시퀀스, 뷰(View) 등 데이터베이스 객체 관리가 가능하다.
아파치 피닉스는 세일즈포스(Salesforce) 내부에서 개발되어 2014년 아파치 소프트웨어 재단(ASF) 인큐베이팅 프로젝트로 기증되었으며, 2015년 최상위 프로젝트(Top-Level Project)로 승격되었다. 대용량 시계열 데이터, 로그 분석, 실시간 분석 등 하베이스를 저장소로 사용하면서 SQL 접근이 필요한 워크로드에서 주로 활용된다.