No, you need to count them. The exist therefore they count. ;-) But that doesn’t answer the question about the expected behavior of TTL.
> On Apr 17, 2015, at 3:09 PM, Jean-Marc Spaggiari <jean-m...@spaggiari.org> > wrote: > > Maybe we should just not counts the cells with TTL when counting for the > versions? That way, what ever we do we always keep the initial value? > > Better to have an extra version and have a consistent behaviour I think... > > JMS > Le 2015-04-17 15:28, "Michael Segel" <michael_se...@hotmail.com> a écrit : > >> I think you misunderstood the question(s). >> >> How do you define the meaning of the TTL attribute? >> >> Is the TTL a special form of the delete tombstone? >> >> The reason I ask this is that if we look at your example you’ve stated >> that if a compaction occurred prior to the end of life of cell 2, cell 1 >> would be destroyed. >> That doesn’t make sense as an expected result. >> >> This is why I am asking what is the defined contract of the TTL feature. >> >> Cell 1 should never be deleted. (unless you explicitly state the number of >> versions to be 1 then it would be marked for deletion when you insert cell >> 2.) >> >> Thx >> >> -Mike >> >> >>> On Apr 13, 2015, at 6:12 PM, Cosmin Lehene <cleh...@adobe.com> wrote: >>> >>> The ambiguity seems to lie at the intersection of TTL and version >> "garbage collection" during compactions. >>> >>> Major compactions can lead to nondeterministic results when multiple >> versions are involved (slightly captured in the book >> http://hbase.apache.org/book.html#versions and >> http://www.ngdata.com/bending-time-in-hbase/ ) >>> TTL expirations don't result in deletes (at least not in the classical >> sense with a tombstone). >>> >>> Cosmin >>> >>> _______________________________________ >>> From: Michael Segel <michael_se...@hotmail.com> >>> Sent: Friday, April 10, 2015 8:35 AM >>> To: dev@hbase.apache.org >>> Subject: Re: Nondeterministic outcome based on cell TTL and major >> compaction event order >>> >>> Interesting. >>> There seems to be some ambiguity in what happens between a TTL and a >> deletion. >>> >>> Is the TTL a delete or is it a separate type of function? >>> >>> That is to say when you inserted version 2 of the cell, did you intend >> to just have version 2 exist for a little while and then default to version >> 1 or did you mean that when you inserted version 2, you wanted to delete >> everything prior to version 2 and then when version 2 expires, it then goes >> away? >>> >>> The documentation isn’t clear on this point. >>> >>> To give you an example where you wouldn’t want to have the TTL on a cell >> also delete prior versions… >>> >>> Suppose you’re storing map data in HBase. You have an attribute (speed) >> associated to a road link. >>> >>> If the road is a 65 MPH highway, then the base speed (default speed) is >> 65MPH. However if there’s construction planned for the road then you need >> to reset the speed to 45 mph while there is construction. You know that >> the construction is supposed to last X months, so you reset the speed limit >> to 45 with a TTL on that cell version only. >>> >>> Another example is if you’re storing price for a given sku in a given >> region of your retail chain. So you want to reduce the price by 20% for a >> 2 week period. >>> Again, you set that discount to live for 2 weeks with a TTL, then revert >> back to original price. >>> >>> So I guess there should be a clarification as to what is intended for >> the TTL to do? >>> >>> Does that make sense? >>> >>> >>> >>> >>> >>>> On Apr 10, 2015, at 9:26 AM, Cosmin Lehene <cleh...@adobe.com> wrote: >>>> >>>> I've been initially puzzled by this, although I realize how it's likely >> as designed. >>>> >>>> >>>> The cell TTL expiration and compactions events can lead to either some >> (the older) data left or no data at all for a particular (row, family, >> qualifier, ts) coordinate. >>>> >>>> >>>> >>>> Write (r1, f1, q1, v1, 1) >>>> >>>> Write (r1, f1, q1, v1, 2) - TTL=1 minute >>>> >>>> >>>> Scenario 1: >>>> >>>> >>>> If a major compaction happens within a minute >>>> >>>> >>>> it will remove (r1, f1, q1, v1, 1) >>>> >>>> then after a minute (r1, f1, q1, v1, 2) will expire >>>> >>>> no data left >>>> >>>> >>>> Scenario 2: >>>> >>>> >>>> A minute passes >>>> >>>> (r1, f1, q1, v1, 2) expires >>>> >>>> Compaction runs.. >>>> >>>> (r1, f1, q1, v1, 1) remains >>>> >>>> >>>> >>>> This seems, by and large expected behavior, but it still seems >> "uncomfortable" that the (overall) outcome is not decided by me, but by a >> chance of event ordering. >>>> >>>> >>>> I wonder we'd want this to behave differently (perhaps it has been >> discussed already), but if not, it's worth a more detailed documentation in >> the book. >>>> >>>> >>>> What do you think? >>>> >>>> >>>> Cosmin >>>> >>>> >>>> >>>> >>> >>> The opinions expressed here are mine, while they may reflect a cognitive >> thought, that is purely accidental. >>> Use at your own risk. >>> Michael Segel >>> michael_segel (AT) hotmail.com >>> >>> >>> >>> >>> >>> >> >> The opinions expressed here are mine, while they may reflect a cognitive >> thought, that is purely accidental. >> Use at your own risk. >> Michael Segel >> michael_segel (AT) hotmail.com >> >> >> >> >> >> The opinions expressed here are mine, while they may reflect a cognitive thought, that is purely accidental. Use at your own risk. Michael Segel michael_segel (AT) hotmail.com