Cassandra计数用例



我正试图为Casandra的计数器功能找出一个合适的用例。我想到了一个情况,我想知道这是否可行。我不太确定,因为我仍在尝试卡桑德拉,所以任何建议都将不胜感激。

假设你有一个小型视频服务,你在Cassandra中记录观看次数,同时记录播放了什么视频,哪个用户播放了视频,国家,裁判等。你显然想显示视频播放次数的计数,每次插入播放事件时增加计数器是一个很好的解决方案吗?或者会有更好的选择吗。每次计算读取时的所有事件都会对性能造成很大影响,即使缓存了结果,如果站点繁忙,缓存也会很快失效。

任何建议都将不胜感激!

计数器可以用于应用程序中需要计数的任何数据——"前端"数据和"后端"数据。我个人使用它们来存储用户的行为信息(用于后端分析)和前端评级(用户在我的平台中所做的每一项操作都会给用户一些分数)。用例没有真正的限制——限制是由一些技术限制给出的,我想到的更大的限制是:

  1. 计数器cf只能由计数器列组成(显然PK除外)
  2. 计数器无法重置:要将0值设置为计数器,您需要在写入之前读取和计算(不能保证其他人在您之前更新)
  3. 无ttl,无索引/删除

就您的视频服务而言,这完全取决于您选择如何对数据进行建模——如果您在每次写入/读取时都能找到一个有效的模型来访问几个分区,并且您有一个良好的密钥分发,那么在它的实现中我看不到任何真正的问题。

顺便说一句:你标记了Cassandra 2.0,但如果你必须使用计数器,你应该考虑2.1,原因如下

最新更新