【发布时间】:2015-04-10 02:58:39
【问题描述】:
我是 Cassandra 的新手,有时会遇到计数器重复计数的问题。我正在尝试跟踪某些事件的每日事件计数。这是我的表结构:
create table pipes.pipe_event_counts (
count counter,
pipe_id text,
event_type text,
date text,
PRIMARY KEY ((pipe_id, event_type, date))
);
我正在使用的驱动程序是 Datastax Java 驱动程序,我正在编译并将参数绑定到以下准备好的语句:
incrementPipeEventCountStatement = CassandraClient.getInstance().getSession().prepare(
QueryBuilder.update("pipes", PIPE_EVENT_COUNT_TABLE_NAME).with(incr("count")).
where(eq("pipe_id", "?")).and(eq("date", "?")).and(eq("event_type", "?")).
getQueryString()
);
incrementPipeEventCountStatement.bind(
event.getAttrubution(Meta.PIPE_ID), dateString, event.getType().toString()
)
这个问题很奇怪。有时,当我处理单个事件时,计数器会正确递增 1。但是,大多数情况下,它会加倍。我已经查看我的代码一段时间了,找不到任何会导致第二次增量的问题。
我在 Cassandra 中的计数器实现是否适合我的用例?我想是的,但我可能会失去理智。我希望有人能帮我确认一下,这样我就可以专注于正确的领域来找到我的问题。
重要编辑:这是我正在运行的查询,以检查事件后的计数:
select count from pipes.pipe_event_counts where pipe_id = 'homepage' and event_type = 'click' and date = '2015-04-07';
【问题讨论】:
-
什么版本的 cassandra? datastax.com/dev/blog/…
-
我使用的是 2.1。感谢您的链接 - 我会检查一下。
-
我还没有弄清楚是什么原因造成的,但这只是我的开发环境中的一个问题。我正在使用 Play Framework 来托管应用程序,并且它在本地处于开发模式(如预期的那样)。大概与此有关。无论哪种情况,都不是生产问题,所以我暂时忽略它。