[ 
https://issues.apache.org/jira/browse/HBASE-2265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12881620#action_12881620
 ] 

Kannan Muthukkaruppan commented on HBASE-2265:
----------------------------------------------

Todd:  Jonathan and I discussed essentially the same scheme offline. Basically, 
the extra meta data per HFile serves as a hint to optimize the common case of 
timestamps arriving in order, without sacrificing correctness if they did come 
out of order.

You wrote <<< It may actually be sufficient to just store the max timestamp and 
not the min. I haven't really thought of a great use for min. >>>. For queries 
of the form "get all versions >T" max timestamp would suffice. But for queries 
that look up a specific timestamp, or columns in a time range T1..T2, having 
both the min and max timestamps would be better.


> HFile and Memstore should maintain minimum and maximum timestamps
> -----------------------------------------------------------------
>
>                 Key: HBASE-2265
>                 URL: https://issues.apache.org/jira/browse/HBASE-2265
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>            Reporter: Todd Lipcon
>
> In order to fix HBASE-1485 and HBASE-29, it would be very helpful to have 
> HFile and Memstore track their maximum and minimum timestamps. This has the 
> following nice properties:
> - for a straight Get, if an entry has been already been found with timestamp 
> X, and X >= HFile.maxTimestamp, the HFile doesn't need to be checked. Thus, 
> the current fast behavior of get can be maintained for those who use strictly 
> increasing timestamps, but "correct" behavior for those who sometimes write 
> out-of-order.
> - for a scan, the "latest timestamp" of the storage can be used to decide 
> which cell wins, even if the timestamp of the cells is equal. In essence, 
> rather than comparing timestamps, instead you are able to compare tuples of 
> (row timestamp, storage.max_timestamp)
> - in general, min_timestamp(storage A) >= max_timestamp(storage B) if storage 
> A was flushed after storage B.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to