我试图找出谷歌趋势背后的系统设计(或任何其他像Twitter这样的大规模趋势功能).
挑战:
需要处理大量数据来计算趋势.
过滤支持 - 按时间,地区,类别等
需要一种存储进行存档/离线处理的方法.过滤支持可能需要多维存储.
这就是我的假设(我对MapReduce/NoSQL技术没有实际经验)
来自用户的每个搜索项将维护将被存储并最终处理的一组属性.
以及按时间戳,搜索区域,类别等维护搜索列表.
例:
搜索Kurt Cobain术语:
Kurt-> (Time stamp, Region of search origin, category ,etc.)
Cobain-> (Time stamp, Region of search origin, category ,etc.)
Run Code Online (Sandbox Code Playgroud)
题:
他们如何有效地计算搜索词的频率?
换句话说,给定一个大型数据集,他们如何以分布式可扩展方式找到前10个频繁项目?