Apache Phoenix
Apache Phoenix는 Apache HBase를 백업 저장소로 사용하여 Hadoop용 OLTP를 지원하는 오픈 소스 대규모 병렬 관계형 데이터베이스 엔진입니다. 따라서 개발자는 친숙한 SQL 인터페이스를 사용하여 대규모 데이터세트에 실시간으로 액세스할 수 있습니다.
- 전체 ACID 트랜잭션 기능이 지원되는 표준 SQL 및 JDBC API
- Hbase의 기존 데이터를 통해 런타임에 바인딩된 읽기 스키마(schema-on-read) 지원
- Spark, Hive, Pig, Flume, MapReduce와 같은 다른 Hadoop 제품에 저장 및 생성된 데이터에 액세스
Phoenix가 수행하는 작업
Apache HBase는 Hadoop의 데이터에 대한 임의적인 실시간 액세스를 제공하며, Hadoop 에코시스템에서 잘 채택됩니다. Apache Phoenix는 JDBC 드라이버를 통해 표준 SQL로 데이터를 쿼리할 수 있도록 기본 데이터 스토어를 추상화합니다. Apache Phoenix는 특정 행 키 설계에 의존하지 않고 쿼리 속도를 높일 수 있도록 보조 인덱스와 같은 기능을 제공합니다.
또한 Apache Phoenix는 데이터가 저장되는 노드에서 집계 쿼리가 실행되는 경우에 대규모 병렬 상태이므로 네트워크를 통해 데이터를 전송할 필요성이 크게 감소합니다.
Feature | Description |
---|---|
Familiar | Query data with a SQL-based language |
Fast | Real-time queries |
Reliable | Built on top of proven data store HBase |
Platform agnostic | Hortonworks’ Phoenix provides ODBC connector drivers, allowing you to connect to your dataset using familiar BI tools. |
Phoenix 작동 원리
Phoenix를 통해 대량의 데이터에 빠르게 액세스할 수 있습니다. 1억 개 행의 전체 테이블 스캔은 대개 20초면 완료됩니다(중간 크기의 클러스터 상의 좁은 테이블). 키 열에 있는 쿼리에 필터가 포함된 경우 이 시간은 몇 밀리초로 단축됩니다. 키가 아닌 열이나 앞에 있지 않는 키 열에 있는 필터의 경우 이 열에 보조 인덱스를 추가할 수 있으며, 이렇게 되면 인덱싱된 키 열 부분이 있는 테이블 사본을 만들어 성능이 키 열의 필터링에 준하게 됩니다.
Phoenix가 전체 스캔 중일 때에도 속도가 빠른 이유:
- Phoenix는 지역 경계를 사용하여 쿼리를 취합하고 구성 가능한 수의 스레드를 사용하여 클라이언트에서 이 쿼리를 병렬로 실행합니다.
- 통합은 서버 측 보조 프로세서에서 수행되므로 데이터를 모두 반환하는 대신 클라이언트로 반환되는 데이터의 양이 감소합니다.