我只想澄清一下HBASE checkAndPut的工作原理,基于HBASE文档,"Atomically"检查是否存在一个行/列族/限定符值与期望值匹配。如果是,它就会添加这个put。如果传递的值为空,则检查是否缺少列(即:不存在)。当它说“Atomically”时,我认为它会锁定并隔离该行,在对其进行比较之前执行put,以防止该行的任何其他操作。另外,checkAndPut可以用于检查不存在情况,如果行键不存在,它会隔离/锁定什么?
我有两种理论:
要么HBASE checkAndPut不会隔离任何不存在的行,这是否意味着在同时对同一行进行checkAndPut操作时,两者都会成功处理?
或者它会通过行键隔离?
我只是想确认哪种实现是正确的,但对我来说,理想情况应该是第二种。或者,HBASE checkAndPut在检查行的存在性时并不理想?也许只有在行存在且仅检查家族/限定符时才理想使用?因为JAVA API看起来像这样。
我有两种理论:
要么HBASE checkAndPut不会隔离任何不存在的行,这是否意味着在同时对同一行进行checkAndPut操作时,两者都会成功处理?
或者它会通过行键隔离?
我只是想确认哪种实现是正确的,但对我来说,理想情况应该是第二种。或者,HBASE checkAndPut在检查行的存在性时并不理想?也许只有在行存在且仅检查家族/限定符时才理想使用?因为JAVA API看起来像这样。