当我用一行中的一些计数器列更新一行时,我需要执行以下操作:

mutator.incrementCounter(rowid1, "cf1", "counter1", value);
mutator.incrementCounter(rowid1, "cf1", "counter2", value);
mutator.incrementCounter(rowid1, "cf1", "counter3", value);


如何在1个更新中完成以上所有这3个?由于我不想访问数据库3次。我只想打一次数据库。另外,我使用crementCounter的原因是要具有很强的一致性(incrementCounter比addCounter更一致)。您能提供一些代码吗?谢谢!

最佳答案

我问你到目前为止做了什么研究,因为在我看来你什么都没做。我通常会在这一点上走开,但是由于某种原因,我还是选择回答。



让我们查找Mutator documentation。它开始于:


Mutator会从集群中插入或删除值。使用变体的主要方法有两种:1.使用insert / delete方法立即插入删除值。或2.使用addInsertion / addDeletion方法调度批处理操作,然后批量执行所有它们。该类不是线程安全的。


该类摘要说,Mutator支持在单个批处理中执行多个操作,并且它指向您执行该操作的add*方法。 (您用“批处理”标记了您的问题,因此您知道这是您需要的功能。)类摘要下的第一件事是addCounter()函数,描述为:


安排由Mutator.execute()以批处理模式插入CounterColumn的增量


问题解决了。

或者,您可以使用IDE来浏览当前的代码,该代码虽然有效,但效率不高。 incrementCounter()调用上的单行摘要说这是一种方便的方法,强烈暗示还有其他增加计数器的方法。即使只有自动完成功能,浏览Mutator界面也会很快将您带到addCounter(),因为只有少数与计数器相关的功能,并且addCounter()排在首位。

如果您希望完全忽略文档,第三个选择是直接转到the incrementCounter() implementationincrementCounter()迅速显示为addCounter(),后跟execute()

这些方法中的任何一种都可以使您得出结论,可以通过多次调用addCounter()后跟一个execute()来一次增加多个计数器。



当然,第四个选择是直接进入Stack Overflow并询问代码。通常,这将使您发送到whathaveyoutried.com,并且仅偶尔获得诸如此类的答案,详细说明了可以回答自己问题的所有方式。我现在以该文章的摘录结束我的回复:


问题在于此人的解决问题的技巧是寻求解决方案。不是要寻求有关如何执行任务的建议,也不是要寻求可能的类的名称或示例的链接-而是索要完全形成并可以使用的代码。这不是解决问题,软件工程完全是解决问题。

09-11 22:26