Salesforce.comがPhoenixをオープンソース化した。これは開発者が Apache Hbase上でSQLクエリを走らせることができるJava層である。
無数の SQL, NoSQL、NewSQLに加えて、Salesforce.comがアナウンスした のは、プロジェクトPhoenix, Apache HBaseの上のSQL層、で行指向のビッグデータストアである。全てJavaで書かれており、コードはGitHubで入手でき、クライアントに組込み可能なJDBCドライバーを提供している。
Phoenixは Salesforce.com内部で低遅延クエリとして使われており、プロジェクトの記述によれば、単純なクエリを数ミリ秒、あるいは何千万の行を数秒で処理する。Phoenixは、HBaseのように map-reduceジョブ用に使われるのではなく、標準化された言語を介してHBaseにアクセスするのに使われている。
プロジェクトの作成者によると、PhoenixはHiveに対して1つの単純なクエリで1千万から1億の行を処理する。 また、HBaseのAPI、コプロセッサ、カスタムなフィルターを使うことで、同様なクエリを実行する Impala やOpenTSDBよりもずっと高速である。
Phoenixクエリエンジンは、SQLクエリを1つないし複数のHBaseスキャンに変換して、それらの実行を調整し、標準のJDBC 結果セットを生成します。 HBase APIを直接使い、コプロセッサとカスタムなフィルターを併用すると、パフォーマンス が小さなクエリでミリ秒の桁、数千万の行で秒の桁になります。
最も興味のあるフィーチャを以下に列記する。
- 組込まれたJDBCドライバーがメタデータAPIを含んだ、ほとんどの java.sqlインターフェースを実装している。
- 列をマルチパート行キーあるいはキー/値 セルとしてモデル化できる。
- 述語のプッシュダウンと最適なスキャンキー形成を持つ、完全なクエリサポート。
- DDLサポート:列の追加/削除用の CREATE TABLE, DROP TABLE, ALTER TABLE。
- バージョン管理されたスキーマ リポジトリ。スナップショットクエリは、データが書かれた場所のスキーマを使う。
- DMLサポート:UPSERT VALUESで行毎の挿入、 UPSERT SELECTで同一あるいは違うテーブル間の大量データ転送、 DELETEで行の削除。
- クライアント側のバッチにより限定のトランザクションをサポート。
- 1テーブルのみ-ジョインは、まだできない、そしてセカデリインデックスは、開発中である。
- 可能な限り ANSI SQL標準に従っている。
PhoenixのコードはBSD風のライセンス下でオープンソースされた。