如何在卡桑德拉进行民意调查?

时间:2015-04-24 14:06:11

标签: cassandra polling

我正试图找到一种方法来对cassandra数据库进行轮询,但我是新手,我不知道如何。

假设我有一个“用户”这样的表

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

我想不断进行轮询,所以我知道是否有新用户添加到表中。我怎么能这样做?

1 个答案:

答案 0 :(得分: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);

在这种情况下,您将同时写入users表和user_buckets表,其中'bucket'是合理的(例如date(YYYY)) - 其中每个分区包含在该年或日期注册的所有用户(YYYYMMDD) - 其中每个分区包含当天注册的所有用户),然后使用SELECT ... FROM user_buckets WHERE bucket =(current-bucket)AND user_timestamp> (你见过的上一个时间戳)。