Because of the internals it isn't that easy.  The additional versions
of a specific row/column are stored next to each other, and everything
is overall organized by row id.  Thus to get every cell that matches a
specific timestamp we'd have to inspect every row.

Ultimately there is no free lunch in any database system - if you want
fast access, data must be co-located (this is true in RDBMS as well),
either via the primary key or via an index.  Indexes let you create an
different co-location of data (or at least of data location pointers),
and in the end that might be what you want.

The only downside is by default, HBase doesn't do index creation or
maintenance for you. Some people are enjoying using the
Indexed/Transactional contrib, and others like the Indexed HBase
contrib.  The key difference is the former uses a transactional
extension to keep secondary index tables up to date, and the latter
uses in-memory indexes that are built at run time to speed up access.

On Wed, May 5, 2010 at 1:24 AM, TuX RaceR <tuxrace...@gmail.com> wrote:
> Seraph Imalia wrote:
>>
>> Hi Ryan,
>>
>> Thanks for your response - I am also working on this project.
>>
>> I was hoping that hBase perhaps treated the time range differently which
>> would prevent a full table scan.  I suppose our only next option is to
>> implement indexing?
>
> Yes I would say so except if a time-based key can naturally identify a
> record, or if you will always retrieve your records using time queries.
> In that case you could create a key which is a concat of a timestamp and
> your old SQL uid,
>
> cheers
> TuX
>
>
>
>

Reply via email to