Well put, Dave! And yes, same for Phoenix.

HBase provides exactly one "index" (on rowkey). Thus it's the application's responsibility to build other indexes to support different kind of lookups. This is exactly what projects like Trafodian and Phoenix (not to mention, others) do.

On 8/30/17 2:09 PM, Dave Birdsall wrote:
Trafodion (and I think Phoenix also) both support secondary indexes. So you can 
create indexes on any attribute that you wish to search upon.

Trafodion in addition allows one to pack multiple columns (logically speaking) 
into the HBase key. It also has a feature that allows intelligent use of 
multiple-column indexes. For example, if I have an index on STATE, CITY, and I 
have a predicate of the form CITY = 'St. Louis' (without a predicate on STATE), 
Trafodion can implicitly materialize the distinct STATE values efficiently and 
access CITY = 'St. Louis' directly using that index. So one does not have to 
create as many indexes as one might otherwise. This feature is useful when the 
table continues to grow or is updated; fewer indexes requires less overhead for 
index maintenance. But if the data set is static, you may as well just create 
indexes until your heart is content (space permitting of course).

-----Original Message-----
From: Andrzej [mailto:borucki_andr...@wp.pl]
Sent: Wednesday, August 30, 2017 11:03 AM
To: user@hbase.apache.org
Subject: Re: Fast search by any column

W dniu 30.08.2017 o 19:54, Dave Birdsall pisze:
As Josh Elser mentioned, you might try Apache Phoenix.
You could try any SQL-on-HBase solution, actually. Apache Trafodion 
(incubating) is another example.

As I understand, Apache Phoenix and Apache Trafodion are highest layer than 
HBase and both uses HBase. How they can fast seach, since HBase does not allow 
this?

Reply via email to