我正试图找到一种方法来对cassandra数据库进行轮询,但我是新手,我不知道如何。
假设我有一个“用户”这样的表
-> users
-> user_name
-> gender
-> state
我想不断进行轮询,所以我知道是否有新用户添加到表中。我怎么能这样做?
答案 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> (你见过的上一个时间戳)。