Re: Atomic read-modify-write: constructing an interesting TimeRange for CheckAndMutateBuilder.timeRange

2019-08-13 Thread Duo Zhang
This is not a typical CAS operation so we are sorry that we missed the
usage when changing the APIs. Modify when there are no new modifications
since the last read sound reasonable, and we should find a way to do this.
But since you can specify the timestamp when modifying the data so I do not
think the solution here is suitable for everyone. Need more discussions.

You are free to use or not use HBase and also DB2 in your company and
announce this decision to the public but I need to say that HBase does not
belong to either MapR, Cloudera or Hortonworks, it is a TLP in the ASF and
controlled by the PMC of HBase, and the PMC members are from lots of
companies.

(Do not consider the role of the PMC Chair of HBase for me, as a normal
software engineer, I suggest you to go to AWS rather than IBM, sincerely)

 于2019年8月14日周三 上午7:39写道:

> Can't wait to tell my boss we need to load a deprecated function to make
> our little hbase work.. Looks like it's time to move back to good ole
> dependable DB2... Too much uncertainty with hadoop... MapR, Cloudera and
> Hortonworks. Seems to me that these companies are trying to be the Uber
> of data... Complete unequivocal failures. Rehash of the internet bubble
> after Y2k
> Going back to IBM.
>
> > On August 13, 2019 at 7:27 PM "Wilson, Huon (Data61, Eveleigh)" <
> huon.wil...@data61.csiro.au mailto:huon.wil...@data61.csiro.au > wrote:
> >
> >
> > Thanks for the feedback. I'll use the deprecated constructors for
> now, and I've filedhttps://jira.apache.org/jira/browse/HBASE-22841 (and
> also submitted a PR for it).
> >
> > Huon
> >
> > On 6/8/19, 7:23 pm, "Anoop John"  anoop.hb...@gmail.com > wrote:
> >
> > We might need a static creator method which takes start and end time
> in TR?
> >
> > Anoop
> >
> > On Tue, Aug 6, 2019 at 9:11 AM OpenInx  open...@gmail.com > wrote:
> > > Hi > I've checked the code, I think you can use the deprecated
> TimeRange(ts+1) > first, also the methods defined in TimeRange > is not
> good enough now, we may need to create an issue to address this > thing.
> > > > Thanks.
> > > > On Tue, Aug 6, 2019 at 10:15 AM Wilson, Huon (Data61, Eveleigh)
> < > huon.wil...@data61.csiro.au mailto:huon.wil...@data61.csiro.au >
> wrote:
> > > > > Hi, > > > > I’m trying to do an atomic read-modify-write where
> a cell is read and > then > > rewritten with an updated value (updated in a
> complicated way, more than > > just incrementing), but only if there’s been
> no writes since it was read, > > otherwise try again from the read. > > > >
> My plan is to use something like > > > > table.checkAndMutate(row,
> family).qualifier(qualifier).timeRange(new > > TimeRange(ts +
> 1)).ifNotExists().put(put) > > > > to insert if the cell
> row/family/qualifier doesn't exist in the range > `[ts > > + 1, infinity)`,
> which I think means no writes after time `ts`. However, > > that TimeRange
> constructor is @Deprecated and @Private, and the only > > remaining ways to
> publicly construct a TimeRange is > `TimeRange.allTime()` > > ([0,
> infinity)) and `TimeRange.at(long ts)` ([ts, ts + 1)), neither of > > which
> are right. > > > > Is there a way to create this time range, or another way
> to achieve this > > RMW operation? > > > > An alternative is to do a value
> comparison with `.ifEquals(...)` but my > > values could be quite large
> (kilobytes), so I was thinking this range > > comparison would be better. >
> > > > --- > > Huon Wilson > > CSIRO | Data61 > >
> https://www.data61.csiro.au > > > > > > > > > >
> > >
> >
>


Re: Atomic read-modify-write: constructing an interesting TimeRange for CheckAndMutateBuilder.timeRange

2019-08-06 Thread Anoop John
We might need a static creator method which takes start and end time in TR?

Anoop

On Tue, Aug 6, 2019 at 9:11 AM OpenInx  wrote:

> Hi
> I've checked the code, I think you can use the deprecated TimeRange(ts+1)
> first,  also the methods defined in TimeRange
> is not good enough now, we may need to create an issue to address this
> thing.
>
> Thanks.
>
> On Tue, Aug 6, 2019 at 10:15 AM Wilson, Huon (Data61, Eveleigh) <
> huon.wil...@data61.csiro.au> wrote:
>
> > Hi,
> >
> > I’m trying to do an atomic read-modify-write where a cell is read and
> then
> > rewritten with an updated value (updated in a complicated way, more than
> > just incrementing), but only if there’s been no writes since it was read,
> > otherwise try again from the read.
> >
> > My plan is to use something like
> >
> > table.checkAndMutate(row, family).qualifier(qualifier).timeRange(new
> > TimeRange(ts + 1)).ifNotExists().put(put)
> >
> > to insert if the cell row/family/qualifier doesn't exist in the range
> `[ts
> > + 1, infinity)`, which I think means no writes after time `ts`. However,
> > that TimeRange constructor is @Deprecated and @Private, and the only
> > remaining ways to publicly construct a TimeRange is
> `TimeRange.allTime()`
> > ([0, infinity)) and `TimeRange.at(long ts)` ([ts, ts + 1)), neither of
> > which are right.
> >
> > Is there a way to create this time range, or another way to achieve this
> > RMW operation?
> >
> > An alternative is to do a value comparison with `.ifEquals(...)` but my
> > values could be quite large (kilobytes), so I was thinking this range
> > comparison would be better.
> >
> > ---
> > Huon Wilson
> > CSIRO | Data61
> > https://www.data61.csiro.au
> >
> >
> >
> >
> >
>


Re: Atomic read-modify-write: constructing an interesting TimeRange for CheckAndMutateBuilder.timeRange

2019-08-05 Thread OpenInx
Hi
I've checked the code, I think you can use the deprecated TimeRange(ts+1)
first,  also the methods defined in TimeRange
is not good enough now, we may need to create an issue to address this
thing.

Thanks.

On Tue, Aug 6, 2019 at 10:15 AM Wilson, Huon (Data61, Eveleigh) <
huon.wil...@data61.csiro.au> wrote:

> Hi,
>
> I’m trying to do an atomic read-modify-write where a cell is read and then
> rewritten with an updated value (updated in a complicated way, more than
> just incrementing), but only if there’s been no writes since it was read,
> otherwise try again from the read.
>
> My plan is to use something like
>
> table.checkAndMutate(row, family).qualifier(qualifier).timeRange(new
> TimeRange(ts + 1)).ifNotExists().put(put)
>
> to insert if the cell row/family/qualifier doesn't exist in the range `[ts
> + 1, infinity)`, which I think means no writes after time `ts`. However,
> that TimeRange constructor is @Deprecated and @Private, and the only
> remaining ways to publicly construct a TimeRange is  `TimeRange.allTime()`
> ([0, infinity)) and `TimeRange.at(long ts)` ([ts, ts + 1)), neither of
> which are right.
>
> Is there a way to create this time range, or another way to achieve this
> RMW operation?
>
> An alternative is to do a value comparison with `.ifEquals(...)` but my
> values could be quite large (kilobytes), so I was thinking this range
> comparison would be better.
>
> ---
> Huon Wilson
> CSIRO | Data61
> https://www.data61.csiro.au
>
>
>
>
>