cassandra是否可以用于喜欢/查看计数

cassandra是否可以用于喜欢/查看计数,cassandra,Cassandra,当您存储的数据包含类似于喜欢或视图计数的内容时,cassandra是否可用?在我看来,问题将是: 1) 不断更新行(墓碑) 2) 使用计数器或LWT CAS操作将增加延迟并变得复杂。如果更新视图很重要,这会很麻烦,因为这是最频繁的操作 使用计数器将是对计数器“表”的写入,而读取100条记录将需要100次读取或在计数器表上选择输入 使用LWT将是对行的读取以及比较和设置,直到更新坚持为止。读取100条记录将是正常的计数器是为这些类型的作业构建的。 计数器是一个特殊的列,用于存储增量更改的数字。例如

当您存储的数据包含类似于喜欢或视图计数的内容时,cassandra是否可用?在我看来,问题将是:

1) 不断更新行(墓碑)

2) 使用计数器或LWT CAS操作将增加延迟并变得复杂。如果更新视图很重要,这会很麻烦,因为这是最频繁的操作

使用计数器将是对计数器“表”的写入,而读取100条记录将需要100次读取或在计数器表上选择输入


使用LWT将是对行的读取以及比较和设置,直到更新坚持为止。读取100条记录将是正常的

计数器是为这些类型的作业构建的。

计数器是一个特殊的列,用于存储增量更改的数字。例如,您可以使用计数器列计算页面的浏览次数。
阿帕奇·卡桑德拉™ 2.1计数器列改进了计数器的实现,并提供了许多用于优化计数器的配置选项

您可以创建一个计数器表,如下所示:

CREATE TABLE video_counter (
    video_id uuid PRIMARY KEY,
    like_count counter,
    view_count counter
);
每当收到类似或查看视频的请求时,增加计数

//Like
UPDATE video_counter SET like_count = like_count + 1 WHERE video_id = ? ;

//View
UPDATE video_counter SET view_count = view_count + 1 WHERE video_id = ? ;
现在,您可以非常高效地获得视频的相似和查看次数

SELECT * FROM video_counter WHERE video_id = ? ;

来源:

计数器是为这些类型的作业构建的。

计数器是一个特殊的列,用于存储增量更改的数字。例如,您可以使用计数器列计算页面的浏览次数。
阿帕奇·卡桑德拉™ 2.1计数器列改进了计数器的实现,并提供了许多用于优化计数器的配置选项

您可以创建一个计数器表,如下所示:

CREATE TABLE video_counter (
    video_id uuid PRIMARY KEY,
    like_count counter,
    view_count counter
);
每当收到类似或查看视频的请求时,增加计数

//Like
UPDATE video_counter SET like_count = like_count + 1 WHERE video_id = ? ;

//View
UPDATE video_counter SET view_count = view_count + 1 WHERE video_id = ? ;
现在,您可以非常高效地获得视频的相似和查看次数

SELECT * FROM video_counter WHERE video_id = ? ;

来源:

假设我需要返回1000个视频的列表-是否会选择*在(1…1000)中的视频id的执行位置?我想是的,因为所有1000个视频记录都在同一个节点上。我现在正在设置计数器表来尝试此操作。不要使用in子句,而是使用单独的查询并使用executeAsync执行。检查此计数器更新非常快,它设计为经常更新。LWT非常慢,同一分区中的select小于1000行,因为我的计数器表平均响应2ms,这比我的主表上的单个select要少,所以还不错。我没有尝试LWT作为我的项目的计数器,现在cassandra处理我的所有查询。谢谢。我想知道OP是否真的用计数器实现了最终的解决方案。如果有,陷阱是什么。假设我需要返回1000个视频的列表-会选择*在(1…1000)中视频id的位置执行吗?我想是的,因为所有1000个视频记录都在同一个节点上。我现在正在设置计数器表来尝试此操作。不要使用in子句,而是使用单独的查询并使用executeAsync执行。检查此计数器更新非常快,它设计为经常更新。LWT非常慢,同一分区中的select小于1000行,因为我的计数器表平均响应2ms,这比我的主表上的单个select要少,所以还不错。我没有尝试LWT作为我的项目的计数器,现在cassandra处理我的所有查询。谢谢。我想知道OP是否真的用计数器实现了最终的解决方案。如果有,陷阱是什么。