2014-10-05 81 views
1

我想弄清楚Casandra的计数器功能的适当用例。我想到了一种情况,我想知道这是否可行。我不太确定,因为我仍在尝试使用Cassandra,所以我们将不胜感激。卡桑德拉计数用例

假设你有一个小视频服务,你记录卡桑德拉的视图日志,同时记录播放的视频,哪个用户播放它,国家,引用等。你显然要显示的次数每次插入播放事件时播放的视频都会增加一个计数器是一个很好的解决方案?或者会有更好的选择。对每次读取的所有事件进行计数将会带来相当大的性能下降,即使缓存了结果,如果您的网站很繁忙,缓存也会很快失效。

任何意见将不胜感激!

回答

2

计数器可用于任何需要在应用程序中统计的数据 - “前端”数据和“后端”数据。我个人使用它们来存储用户的行为信息(用于后端分析)和前端评级(用户在我的平台中进行的每项操作都向用户提供了一些要点)。有上使用的情况下,没有真正的限制 - 该限制是由几个技术限制给出更大的来到我的脑海里:

  1. 计数器CF只能通过柜台列进行(除了PK,很明显)
  2. 计数器不能复位:0值设置为你需要阅读和计算的反写(没有的事实保证别人在你面前更新)
  3. 没有TTL和无索引/删除之前

至于你的视频服务,这一切都取决于你如何选择模式l数据 - 如果你发现一个有效的模型在每次你写/读的时候击中几个分区,并且你有一个很好的密钥分发,我没有看到它的实现有任何真正的问题。

顺便说一句:你标记的卡珊德拉2.0,但如果你必须使用计数器,你应该想到的理由约2.1描述here

+0

感谢卡罗,最后一两件事。你有没有在柜台的完整性问题。防爆。如果我记录每个事件的日志并在写入时增加计数器,我应该关心计数器值最终不正确吗?如果我正在寻找准确度,应该使用cassandra计数器吗?另外对于视频用例,有没有更好的方法可以让你知道保持精确的计数而不会影响性能,我真的不希望依赖读取,因为我希望拥有数百万的日志。 Redis想到了吗? – 2014-10-05 12:09:28

+0

杰西我到目前为止没有任何关于柜台的问题(我已经使用了至少3年) - 但我严格遵守有关柜台的规则。在Cassandra 2.1中,您可以调整它们以获得更好的性能。对于您的使用情况,为了更好地实施,您应该提供您需要保存的准确数据以及您想要执行的查询(统计用户看到的视频,统计有多少用户看过视频等) 。我建议你在一个关于数据模型的新干净文章中这样做。问候,卡罗 – 2014-10-05 12:35:43

+0

是的,我刚刚阅读2.1计数器的文章,这听起来像一个重大的改进。我的查询是非常简单的,我只想每个项目准确的全球统计。没有奇特的疑问。如果你能回答我会很感激,但非常感谢卡罗的洞察力。 – 2014-10-05 12:40:26