服务端一般是怎么处理一些埋点数据的入库呢?

2021-06-08 17:10:10 +08:00
 aladdindingding

用户的数据一个先入到队列里面,一种数据对应一个队列,一张表。然后由脚本 pop 出来,写入数据库。 现在是要收集的数据种类比较多,一个数据添加一个脚本有点不好管理了。有没有什么开源项目是处理这样的情况的。

目前想到的是 python celery,但是好像新增 task 的时候需要重启整个 celery 。会影响别的队列处理。

1303 次点击
所在节点    问与答
6 条回复
Alexf4
2021-06-08 18:07:51 +08:00
kafka 做消息队列呗。
前面生产数据到队列,后面起消费进程,格式化,入库等等,解耦还是挺容易的。
levelworm
2021-06-09 07:48:42 +08:00
我司的思路:

Kafka 进来,按照配置文件进不同的 topic,然后不同的 topic 可能单独进表或者几个 topic 进同一个表,也可能一个 topic 通过变换进不同的表。中间用 Spark 写变换工具,所有的变换用配置文件表示。大致上算是 ELT 的思路?但是这仅仅是 raw data,等进了数据库之后,可以根据分析需求,进一步做变换和聚合,生成有一定延时的数据仓库,供 Power BI/Tableau 等 BI 工具使用。

建议根据业务和分析的需求,好好设计一下数据、topic 和初始的生肉数据库以及后面的数据仓库。
levelworm
2021-06-09 07:51:36 +08:00
刚才忘说了,数据仓库上可能还有一层聚合表或者 View,但是看情况而定,总之就是确保分析的查询越简单越快捷越好。

经常遇到的数据和表的设计问题:

之一:分析需要对两个不同 topic 出来的数据进行 join,但是又没有共同的 field,怎么办?

之二:分析需要实时的聚合数据,但是聚合通常有时间差,怎么办?

之三:分析有时候需要对某一类数据进行分析,但是这一类数据可能散落在很多个 topic 中,怎么办?
levelworm
2021-06-09 07:53:47 +08:00
好吧激动的说了一会,发现好像侧重于数据工程这头,但是题主似乎问的是数据源头的问题。。。不管了。
aladdindingding
2021-06-09 21:01:07 +08:00
@levelworm 多谢老哥 会参考的
levelworm
2021-06-09 23:57:38 +08:00
@aladdindingding 不客气,不知道有没有用

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

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

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

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

© 2021 V2EX