统计每个用户的每个文章的阅读数和时间,如何设计数据表比较合适?通过 mysql

2019-03-20 10:47:57 +08:00
 hoythan
4265 次点击
所在节点    MySQL
5 条回复
Andata
2019-03-20 10:55:50 +08:00
Emmm,序号,文章 id,用户名,开始时间,结束时间 这样子吧
hoythan
2019-03-20 11:10:40 +08:00
@Andata 一千个用户阅读一千个文章就有 100 万条记录,我担心这样设计会不会造成性能问题。
baojiweicn2
2019-03-20 11:42:05 +08:00
elk 不就可以了,明天定时脚本拉一下数据。如果是实时的话,数据允许可丢的风险的话,数据缓存一下,周期性入库就成,查询也是,热点查询放到缓存。
Andata
2019-03-20 11:48:25 +08:00
@hoythan 看你要怎么用,如果是生产要插入数据,怕数据太多影响性能的话,可以定时归档数据,几天归档一份这样子。
cs8814336
2019-03-25 09:22:00 +08:00
可以采用 hash(id) 进行分表或者分区, 分区的话开发容易. 这样尽管 1000 个用户 1000 个文章 100w 条还可以实现.

假如你单纯只是用来统计总阅读数和总时间,是否可以加上通过定时脚本定时合并数据库的数据, 例如你 mysql:
创建时间 文章 id 用户 id 阅读数 阅读时间
18 号 1 2 1 2m
19 号 2 2 1 7m
20 号 3 2 1 6m

定时脚本 20 号合并后产生汇总数据:
创建时间 文章 id 用户 id 阅读数 阅读时间
20 号 -1 2 3 15m
21 号 5 2 1 30m


这样类似定时清理旧数据. 类似 elasticsearch 之类的数据库都有隐藏后台合并数据的操作,elasticsearch 的是每个 index segement 是不可变的,然后会有很多,后台进程会自动错峰合并. 或者说是 lsm tree?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/546486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX