Apache Phoenix
Apache Phoenix は、Apache HBase をストレージとして使用する HadoopでOLTP をサポート可能な、オープンソースでマッシブパラレルなリレーショナルデータベースエンジンです。Phoenix によって開発者は、使い慣れた SQL インターフェースを使って、大規模なデータセットにリアルタイムにアクセスすることができます。
- 標準 SQL と完全な ACID トランザクション機能を持つ JDBC API
- 既存の HBase データに対する late-bound および 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 は、リージョンのバウンダリを使ってクエリを分割し、それを設定可能な数のスレッドを使って、クライアント上で並行稼動させます
- 結果については、すべてクライアント側に返すのではなく、サーバーのコプロセッサーでデータの集約を行ってから、クライアント側に返します。