c********u 发帖数: 1177 | 1 假设这个query log分布在很多台机器上
在每个机器上上做词频统计,然后归拢排序起来求出top3, 同时在每个机器上有个线程
每几秒种去踢掉一些expire的词频,同时加入新搜索的词频?大致这么个过程?
请教各位大牛 有什么高招,谢谢 |
c******a 发帖数: 789 | 2 在每个机器上上做词频统计,然后归拢排序起来求出top3---这个同意,但基本可以
确定不能在一台机上归拢,得partition。
每几秒踢这个不同意。超过一小时的都得踢,最少每秒就得踢一次。
但如果这样一直踢又不scalable了,明儿要找2小时、24小时内的top3,你得等1、23个
小时build数据才能做。
我也没有好解法,问了问室友,说拿b tree,一边aggreate很多info在每个节点。想不
通。。。 |
c******a 发帖数: 789 | 3 换个角度想,如果是个sql数据库,5min 10min 任何时段,一个sql就搞定了。
sql的底层数据结构就是b+树,说不定真可以那么搞。。。 |
c********u 发帖数: 1177 | 4 每次查询都要load一次数据库。。。。
更不scalable了啊
【在 c******a 的大作中提到】 : 换个角度想,如果是个sql数据库,5min 10min 任何时段,一个sql就搞定了。 : sql的底层数据结构就是b+树,说不定真可以那么搞。。。
|
A***o 发帖数: 358 | 5 用3个deque, 3个histogram,query来的时候去查histogram,time out 或者 数据来的
时候更新 deque 和 histogram |