WHAT?
This library aids in building and querying indexes on top of HBase, in Google App Engine datastore-style. This basically means querying by range-scanning on specifically constructed index tables.
The goal of this library is to hide the details of playing with HBase's byte[] row keys to construct indexes. Actually pushing data towards the index is not handled by this package.
This library is complementary to the tableindexed contrib module of HBase, which does not do much regarding row key construction, though at this time it was not specifically designed to work together.
Some background on the indexing approach in this package can be found in this blog post.
FEATURES
- define indexes consisting of one or more fields
- fields can be high-level datatypes like strings, integers, floats, decimals, date(time)s
- strings can be indexed as plain UTF8, ASCII-folded (= accents removed), or by collator key
- the entries in the index can be in ascending or descending order
- perform equals and range queries on all or a subset of the fields in the index (fields should be used left-to-right, only for the last used field a range can be used)
- results from multiple indexes can be streamingly merge-joined
- unrestricted scalability due to the automatic sharding (and replication) offered by HBase