数据库 – 哪种DB计算每分钟的统计数据?
我有一个用例要求,我想设计一个hashtag排名系统.应该选择10个最流行的#标签.我的想法是这样的:
[hashtag,rateofhitsperminute,rateofhisper5minutes] 然后我将查询,找出10个最受欢迎的#hashtags,其每分钟的速率最高. 我的问题是,我可以使用哪种数据库来提供像’rateofhitsperminute’这样的统计数据? 计算这样一个细节和存储在db中的好方法是什么?有些DB提供这些功能吗? 解决方法首先,计算“每分钟命中率”:[hits during period]/[length of period] 因此,费率将根据期间的长短而有所不同. (最后一分钟?最后10分钟?自从点击开始被记录以来?首先使用了#标签?) 所以你真正想要存储的是命中数,而不是速率.最好是: >在一段时间内存储主题标签及其命中数(需要更少的内存/ CPU但灵活性更低) 现在需要选择感兴趣的时间段,并查询数据库以查找在此期间内点击率最高的前10个主题标签. 如果您需要显示费率,请使用上面的公式,但请注意它不会更改顶部主题标签的顺序,因为每个主题标签的周期相同. 您可以将上述算法应用于几乎任何数据库.您甚至可以在不使用数据库的情况下执行此操作(只需使用编程语言的内置hashmap). 如果性能是一个问题,并且会有许多不同的主题标签,我建议使用OLAP database. OLAP数据库是专门为这样的top-k查询(在一定时间段内)设计的. 话虽如此,这里是一个如何在Solr:Solr as an Analytics Platform中完成您的用例的示例.Solr不是OLAP数据库,但此示例使用Solr像OLAP DB,似乎是最容易实现并适应您的用例: 您的Solr架构如下所示: <fields> <field name="hashtag" type="string"/> <field name="hit_date" type="date"/> </fields> 示例文档将是: { "hashtag": "java","hit_date": '2012-12-04T10:30:45Z' } 您可以使用的查询是: http://localhost:8983/solr/select?q=*:*&facet=true&facet.field=hashtag&facet.mincount=1&facet.limit=10&facet.range=hit_date&facet.range.end=2013-01-01T00:00:00Z&facet.range.start=2012-01-01T00:00:00 最后,这里有一些与此问题相关的高级资源: >相似的问题:Implementing twitter and facebook like hashtags (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 数据库 – 在Microsoft Access(2010)中计算年和月的年龄
- sql – 如何插入使用顺序GUID作为主键的表?
- sql-server – 有没有人使用(或考虑使用)Sql Server Compac
- SQL Server 2005中的文件和文件组
- GG同步到sqlserver报错一例 Invalid date format
- Redis有序集合类型的操作_动力节点Java学院整理
- 实体框架 – 实体框架 – 基础数据(在数据库中)更改通知
- sqlserver和oracle常用函数对比
- sql-server-2005 – 为什么在视图外部放置一个WHERE子句可能
- sql – 没有重复组合的交叉连接