Our roadmap is driven by our user community. Below, in prioritized order, is the current plan for Phoenix:
- Stress and chaos testing. Open source and automate the running of stress and chaos tests that exercise Phoenix and HBase under high load and failure conditions.
- Security Features. A number of existing HBase security features could be surfaced and leveraged at the Phoenix level.
- 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.
- 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.
- 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.
- 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.
- OLAP Extensions. Support the WINDOW, PARTITION OVER, RANK, and other SQL-92 extensions.
- 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.
- Surface encryption features. Surface specification of what should be encrypted now that HBase supports transparent encryption.