数据库 – 哪种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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 数据库设计 – 如何为消费者应用程序设计“NOSQL”数据库(例
- sqlserver 系统存储过程 中文说明
- sql – ORA-00932:不一致的数据类型:预期NUMBER变长
- 数据库设计 – ACL的标准Database TABLE设计是什么?
- sql – ORA-01843:不是有效月份:TO_DATE(’12 -JUN-02′,
- sql-server – 如何从db中删除所有表?无法从sys.tables中删
- SQL Server:只有GROUP BY中的最后一个条目
- sql – 用于redshift数据库的数据透视表
- SQL Server sql 修改表的所有者
- sql – 我们可以在BigQuery中的两个不同项目中对表执行连接
