Our roadmap is driven by our user community. Below, in prioritized order, is the current plan for Phoenix:
- Stress testing. Open source and automate the running of stress tests that exercise Phoenix and HBase under high load.
- Compatibility testing. Open source and automate the running of backward compatibility tests for Phoenix and HBase, including new server versions of Phoenix working with older client versions and unreleased HBase versions compiling with existing Phoenix versions.
- Apache Calcite adapter. Create a Phoenix adapter for Calcite to increase the breadth of our SQL support, plug into a rich cost-based optimizer framework, and enable potential interop with other adapters. See our calcite branch to try this and track our progress.
- Cost-based Query Optimization. Enhance existing statistics collection by enabling further query optmizations based on the size and cardinality of the data.
- Generate histograms to drive query optimization decisions such as secondary index usage and join ordering based on cardinalities to produce the most efficient query plan.
- Join Improvements. Enhance our join capabilities in a variety of ways:
- Table-stats-guided choice between hash join and sort-merge join. Base hash join versus many-to-many decision on how many guideposts will be traversed for RHS table(s).
- Inlined parent/child joins. Optimize parent/child joins by storing child rows inside of a parent row, forming the column qualifier through a known prefix plus the child row primary key.
- Subquery enhancements, which includes support for correlated subqueries in the HAVING clause and using subqueries as expressions.
- STRUCT type. Allow declarations of multiple fields of different data types that would be packed into a single cell to reduce the per column storage overhead.
- OLAP Extensions. Support the WINDOW, PARTITION OVER, RANK, and other SQL-92 extensions.
- Multi-version Row Queries. Expose the time dimension of rows through a built-in function to allow aggregation and trending over multiple row versions.
- Table Sampling. Support the TABLESAMPLE clause by implementing a filter that uses the guideposts established by stats gathering to only return n rows per region.
- Security Features. A number of existing HBase security features in 0.94 could be leverage and new security features being added to 0.98 could be leveraged in the future.
- Support GRANT and REVOKE. Support the standard GRANT and REVOKE SQL commands through an HBase AccessController.
- Surface support for encryption. Surface specification of what should be encrypted now that HBase supports transparent encryption.
- Support Cell-level security. Surface cell-level security now that HBase supports it.
- Schema Evolution. Phoenix supports adding and removing columns through the ALTER TABLE DDL command, but changing the data type of, or renaming, an existing column is not yet supported.