Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Plain View
HBase >> mail # user >> How to implement this check put and then update something logic?


+
Liu, Raymond 2013-05-08, 07:22
+
Liu, Raymond 2013-05-08, 07:38
Copy link to this message
-
RE: How to implement this check put and then update something logic?
Any suggestion?

>
> Hi
>
> Say, I have four field for one record :id, status, targetid, and count.
> Status is on and off, target could reference other id, and count will record
> the number of "on" status for all targetid from same id.
>
> The record could be add / delete, or updated to change the status.
>
> I could put count in another table, or put it in the same table, it doesn't
> matter. As long as it can work.
>
> My question is how can I ensure its correctness of the "count" field when
> run with multiple client update the table concurrently?
>
> The closet thing I can think of is checkAndPut, but I will need two steps to
> find out the change of count, since checkAndPut etc can only test a single value
> and with EQUAL comparator, thus I can only check upon null firstly, then on or
> off. Thus when thing change during this two step, I need to retry from first step
> until it succeed. This could be bad when a lot of concurrent op is on going.
>
> And then, I need to update count by checkAndIncrement, though if the
> above problem could be solved, the order of -1 +1 might not be important for
> the final result, but in some intermediate time, it might not reflect the real
> count of that time.
>
> I know this kind of transaction is not the target of HBASE, APP should take
> care of it, then , what's the best practice on this? Any quick simple solution for
> my problem? Client RowLock could solve this issue, But it seems to me that it is
> not safe and is not recommended and deprecated?
>
> Btw. Is that possible or practice to implement something like PutAndGet
> which put in new row and return the old row back to client been implemented?
> That would help a lot for my case.
>
> Best Regards,
> Raymond Liu
+
Mike Axiak 2013-05-10, 02:58
+
Liu, Raymond 2013-05-10, 08:47
+
Asaf Mesika 2013-05-11, 08:39
+
Liu, Raymond 2013-05-13, 07:42
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB