Hi Ryan, Thanks a lot for your feedback, please find some clarifications and queries inline below.
On Wed, Oct 20, 2010 at 6:41 AM, Ryan Rawson <[email protected]> wrote: > One should never* call lockRow(), and prefer to do something else > instead. CheckAndPut works like CompareAndSet (we just call it Put > since that is what you are doing in our API, putting), and there is > also the incrementColumnValue() call. > I did see the incrementColumnValue in HTableInterface, but I wanted to avoid needing to perform an additional operation on HBase for an insert not knowing its performance issues; have you used it and would you recommend it? Singleton with AtomicLong would solve the problem without any HBase operation being needed, what do you think about that? > I'm not really following your code (I'm also sick), but why not just > do something like this: Praying for your speedy recovery. > - Table: Sequences > rowid: table_name column: id value: sequence > > So you just call: > table.incrementColumnValue("Sequences", > tableNameThatYouWantSequenceFor, "id", 1); > > and the result is your sequence id to use as a primary key. No need > to worry about non-existant values, the call creates the value, so the > sequence starts at 1 always. > > -ryan > > * ok you can call lockRow, but be aware that your milage may vary, you > reduce the performance of HBase, and generally can cause a lot of > problems. Eg: you can DOS yourself! > Yes the DOS is a worrying issue, since I faced it due a bug in my code in test where I did not unlock a row upon PUT, so planning to avoid it all together. Thank you, Imran > On Tue, Oct 19, 2010 at 12:39 PM, tsuna <[email protected]> wrote: >> I would like to add that you can probably get rid of RowLock and use >> checkAndPut instead to atomically create the row if it doesn't already >> exist. This would probably solve the last problem I outlined where 2 >> different instances of your web service attempt to assign the same ID >> at the same time. The code would also be simpler and more efficient. >> >> -- >> Benoit "tsuna" Sigoure >> Software Engineer @ www.StumbleUpon.com >> > -- Imran M Yousuf Entrepreneur & CEO Smart IT Engineering Ltd. Dhaka, Bangladesh Twitter: @imyousuf - http://twitter.com/imyousuf Blog: http://imyousuf-tech.blogs.smartitengineering.com/ Mobile: +880-1711402557
