对于使用 python 流框架包的任何人,我想知道您对使用 Cassandra 的想法。我目前正在尝试构建一个基于 Cassandra 的通知提要,它支持未读计数,并将整个提要标记为已读。IT 似乎基本流框架仅支持 Redis 的 NotificationFeed。
1) 对于框架的作者,这可以使用 Cassandra 完成吗?
2)对于其他任何人,这是我正在处理的通知提要的精简模型:
feed_id = columns.Ascii(primary_key=True, partition_key=True)
activity_id = columns.VarInt(primary_key=True, clustering_order='desc')
created_at = columns.DateTime(required=False)
group = columns.Ascii(required=False)
updated_at = columns.DateTime(required=False)
category_id = columns.Integer(required=False, index=True)
read_at = columns.DateTime(required=False)
seen_at = columns.DateTime(required=False)
read = columns.Boolean(required=False, index=True)
seen = columns.Boolean(required=False, index=True)
提要中的每个活动都有一个已读和已查看标志。对于任何单个活动,通过其主键(特定的提要和给定的活动 ID)很容易找到它,从而更新列。但是,在 cassandra 2.2+ 中,无法将整个提要的活动价值更新为已读(因为您必须提供完整的主键并且不能使用二级索引)。(注意:在 cassandra 3.0 中,您似乎可以将 IN 运算符用于集群键,因此您可以分两步执行此操作:使用二级索引查找 activity_id where read=False,然后通过单个查询使用结果IN 更新它们)。
我希望这是有道理的,如果没有,我会提供任何需要的澄清。