gpt4 book ai didi

cassandra - 如何存储唯一的 "Likes"或 "Views"或按比例设置?

转载 作者:IT王子 更新时间:2023-10-29 06:11:20 25 4
gpt4 key购买 nike

我想深入了解各种公司如何解决计算/增加“喜欢”/“观看”/“转推”或类似规模的数量的问题。

在超过 5000 万月活跃用户的用户群中,我看到 Redis 和 Cassandra 都用于存储用户 ID 集以快速检索设置的基数(例如,观众人数)。这些解决方案有一些缺点,但效果很好,可以而且正在被扩展。不过,我很好奇其他商店在这种情况下使用什么。

具体解决办法:

  • 使用集合或其他数据结构,还是只是简单的键值对?
  • 准确或近似计数,?
  • 仅在内存中还是混合?
  • 开源解决方案,还是自行开发?
  • 是否有人构建了一个轻量级的仅集合存储系统,并在其之上进行了 hyperloglog 估计?

最佳答案

Use sets, or other data structures, or just plain key-value?

HyperLogLog 是一种强大的算法,可以为您提供具有微小存储空间的唯一用户/ View 的数量,提供一些近似值。

Exact or approximate counts,?

对于这个比例,精确计数是无用的,没有意义。毕竟,当您拥有 5000 万用户时,知道您有 134 万独立访问者访问一个具有 2% 误差率的项目就足够了。

In-memory only, or hybrid?

这取决于您对延迟的要求。在内存中授予非常快速的访问权限,但存在数据丢失的风险。您可以在具有持久存储支持的内存中使用

Open source solution, or home grown?

不要重新发明轮子。使用经过充分验证和战场验证的工具

Has anybody built a lightweight set-only storage system with hyperloglog estimation on top of it?

据我所知,Redis 提供了 HyperLogLog 作为数据结构,因此您可以直接使用它。使用磁盘持久化将 hyperloglog 数据结构频繁检查点到磁盘,以避免在节点宕机时丢失它

否则,您也可以在 Cassandra 中实现 HyperLogLog 算法,因为 Cassandra 使用 max(timestamp) 作为解析规则,因此只需欺骗数据库并将 HyperLogLog 存储桶值存储为时间戳。

但这意味着您需要自己执行 impl,可能会出现错误。

关于cassandra - 如何存储唯一的 "Likes"或 "Views"或按比例设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com