[系统设计] 广告系统的统计数据该怎么设计?

2020-02-21 16:39:46 +08:00
 zealinux

广告系统会跟踪一些数据(类似 log ),这些数据专门用来做统计的。

但是由于以后可能量比较大,不想着存数据库( MySQL )。

现在一般是怎么好做法?


比如,现在想到的比较笨的方法:

系统会有频繁跟踪数据传过来, 那么我就在 DB 里 [跟踪日志表] 里新建一条记录。

然后定时每 10 分钟汇总一些。记录在 [分小时统计表] 里。 然后再定时从 [分小时统计表] 算出总量,存放 [总量表] 的。

现在是 3 张表。

A - 跟踪记录表
B - 分小时统计表
C - 每个广告的统计总量表

感觉这种方法不好, A 表应该算是非主业务的,不应该与业务表们放在一起。 A 表也会越来越庞大。(大表做统计的话,可能会把 MySQL 搞崩溃掉) 其余两个表是由于 A 来算出来的。

应该会有更好的解决方法,求教

5660 次点击
所在节点   Big Data
5 条回复
liprais
2020-02-21 16:42:54 +08:00
日志隔一段时间汇总之后存 s3,统计用 hive 或者 spark
或者日志直接写 kafka,后面跑个 spark streaming 写成 parquet 或者 orc,然后用 spark 或者 hive 做统计
统计结果写 mysql 完事
cabing
2020-02-21 16:47:55 +08:00
广告数据分很多种。

比如结算日志,访问记录。

楼上说的包括历史数据 hive,实时 spark 或者 flink,mysql 只存结果
zealinux
2020-02-22 08:37:22 +08:00
有人说,可以 ELK 来做?不知是否合适?
awanganddong
2020-07-11 15:56:46 +08:00
现在也在做该相关场景的业务,隐约感觉这种日志流,其实最需要的数据,不超过 7 天,也就是对底层数据进行抽取,然后汇总到上层表,然后底层数据进行定期归档就可以。


这里边一个点,就是对热点数据的不停机归档。
还有一个点,就是对数据的聚合。
fucUup
2021-02-28 21:52:52 +08:00
clickhouse 我兄弟开发的

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

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

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

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

© 2021 V2EX