Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于通知提要和Cassandra的流框架问题_Cassandra_Cassandra 2.0_Stream Framework - Fatal编程技术网

关于通知提要和Cassandra的流框架问题

关于通知提要和Cassandra的流框架问题,cassandra,cassandra-2.0,stream-framework,Cassandra,Cassandra 2.0,Stream Framework,对于任何使用python流框架包的人,我想知道您对使用Cassandra的想法。我目前正在尝试基于Cassandra构建一个通知提要,它支持未读计数,并将整个提要标记为已读。基本流框架似乎只支持Redis的NotificationFeed 1) 对于框架的作者来说,这可以用Cassandra实现吗 2) 对于其他人,这里是我正在处理的通知提要的精简模型: feed_id = columns.Ascii(primary_key=True, partition_key=True) activity_

对于任何使用python流框架包的人,我想知道您对使用Cassandra的想法。我目前正在尝试基于Cassandra构建一个通知提要,它支持未读计数,并将整个提要标记为已读。基本流框架似乎只支持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+中,无法将整个提要的活动更新为read(因为您必须提供完整的主键,并且不能使用辅助索引)。(注意:在cassandra 3.0中,似乎可以对集群键使用In运算符,因此您可以通过两个步骤完成此操作:使用辅助索引查找活动\u id,其中read=False,然后通过使用In的单个查询使用结果来更新它们)


我希望这是有意义的,如果没有,我将提供所需的任何澄清。

带有Cassandra的通知提要不捆绑在流框架上,而是可以重用现有基类来实现。为此,您需要实现以下类:

  • BaseNotificationFeed
  • 基线存储
并将ListsStorage实现配置为由通知源使用(请参见此处:)

关于实施,我有几点建议:

    如果可以,您应该考虑使用ReDistListStor存储
  • 考虑将未读和不可见的活动ID存储为静态列
例如:

unread_ids set<text> static
unseen_ids set<text> static
未读\u id设置为静态
不可见的\u id设置为静态

免责声明:我是流框架的维护者之一

谢谢Tommaso!我刚开始阅读关于静态列的内容,我在考虑它们的计数,但它们会保存未读/未看活动的列表,这是有道理的。然后,将所有标记为已读与清除列表一样简单。你说“考虑使用RedistsStorage”。。。这是否意味着与卡桑德拉合作?这可能行得通,但我宁愿避免使用多个数据库(我仍然使用redis,但用于临时数据)。是的,我是说redis用于计数器,Cassandra用于提要