如何在Cassandra中进行轮询?

5

我希望找到一种在cassandra数据库上进行轮询的方法,但我对此很陌生,不知道该如何操作。

假设我有一个名为“users”的表格,如下所示:

-> users
    -> user_name
    -> gender
    -> state

我希望能够不断地进行轮询,以便知道是否向表中添加了新用户。我该怎么做?

1个回答

1
在关系型数据库中,标准方法涉及使用SELECT语句并按时间相关的ID降序排列,以便最新的行始终被首先返回,因此您可以查看它是否与您的上一个“最新行”匹配并确定更改 - 在Cassandra中,这种方法行不通,因为如果没有WHERE子句,则结果会按分区令牌排序,该令牌(几乎肯定)是随机的。因此,解决方案是创建一个具有分区的表,在给定分区内对用户进行排序。例如:
CREATE TABLE user_buckets (
    bucket text,
    user_timestamp timeuuid,
    user_username text,
    PRIMARY KEY(bucket, user_timestamp)
) WITH CLUSTERING ORDER BY (user_timestamp DESC);

在这种情况下,您需要同时写入用户表和用户桶表,其中“bucket”是一些合理的东西(例如date(YYYY)-其中每个分区包含在该年注册的所有用户,或date(YYYYMMDD)-其中每个分区包含在该日注册的所有用户),然后使用SELECT ... FROM user_buckets WHERE bucket=(current-bucket)AND user_timestamp >(您看到的最后一个时间戳)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接