V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aladdindingding
V2EX  ›  问与答

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

  •  
  •   aladdindingding · 2021-06-08 17:10:10 +08:00 · 1540 次点击
    这是一个创建于 1282 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    6 条回复    2021-06-09 23:57:38 +08:00
    Alexf4
        1
    Alexf4  
       2021-06-08 18:07:51 +08:00
    kafka 做消息队列呗。
    前面生产数据到队列,后面起消费进程,格式化,入库等等,解耦还是挺容易的。
    levelworm
        2
    levelworm  
       2021-06-09 07:48:42 +08:00
    我司的思路:

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

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

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

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

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

    之三:分析有时候需要对某一类数据进行分析,但是这一类数据可能散落在很多个 topic 中,怎么办?
    levelworm
        4
    levelworm  
       2021-06-09 07:53:47 +08:00 via Android
    好吧激动的说了一会,发现好像侧重于数据工程这头,但是题主似乎问的是数据源头的问题。。。不管了。
    aladdindingding
        5
    aladdindingding  
    OP
       2021-06-09 21:01:07 +08:00   ❤️ 1
    @levelworm 多谢老哥 会参考的
    levelworm
        6
    levelworm  
       2021-06-09 23:57:38 +08:00 via Android
    @aladdindingding 不客气,不知道有没有用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.