9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

TiDB 在实时渠道转化分析的应用

  • 2019-11-01
  • 本文字数:1240 字

    阅读完需:约 4 分钟

TiDB 在实时渠道转化分析的应用

TiDB 整体概况


TiDB 在 360 金融主要用来存一些实时数据。历史数据或者数据量很大的数据是存在 Hive 里面。


TiDB 数据主要来源:


  • 通过 DM 从 MySQL 同步过来的数据,可以进行实时的数据监控,和一些即席的数据查询。

  • Kafka 队列里的用户事件数据,总体大概是 3 亿条/天,不过我们会做定时清理,确保数据量在 2 天范围内。

  • 我们自己放到 RocketMQ 里面的一些数据。这个数据是我们有一个 RocketMQ 的 MySQL 插件,也是把 MySQL 的一些 binlog 实时进行处理,经转化为 json 放到 RocketMQ 里面,然后我们再去消费这个数据。


整体数据量:6T,接近 90w region


承载业务:


  • 报表:渠道报表,产品报表,电商业务报表。

  • 实时监控:之前使用 MySQL 做监控,现在通过 DM 同步过来 MySQL 的数据,放在 TiDB 上做实时监控。



目前部署了 5 个 TiDB 节点,10 个 TiKV 节点,运行了大概半年。

渠道实时转化业务


在渠道实时转化业务的设计中主要有四个方面的考虑:


  • 转化漏斗实时查询:之前把渠道转化数据拉出来通过邮件发给大家,比较慢。现在可以做指标对比,同比分析,选择相关查询条件查询不同转化漏斗的数据。

  • 节点流失用户查询:节点间跳转时候流失的用户,查看这些用户的信息,并据此做用户召回。

  • 转化率同比环比分析:将查询的漏斗转化数据与昨日、上周当日做对比,分析问题。

  • 用户事件分析:针对转化一场的流失用户,取这批用户的唯一标识 ID 查询其用户事件,推断异常原因。

数据处理

数据结构设计

当时的设计原则必须要让查询简单,我当时想法是必须要做单表查询。如果把事件分散到不同的表里,然后去查转化率,做表的 Join,性能肯定是非常低的。我们当时设计关键的三个转化率:H5 渠道注册转化,APP 渠道注册转化,渠道完件转化。


  • 渠道完件转化从登录开始算,同一用户每一个环节节点都会写入对应用户记录的节点时间字段,以确保查询过程中不出现表 Join 操作,提高查询效率。

  • 表字段有两种类型:维度字段,包括 H5 指纹,请求 IP 等设备信息;事件发生时间字段,包括看广告的时间,发送短信验证码的时间等。

  • 查询逻辑:依据选择转化业务、渠道和时间范围条件,查询这些条件下的相应事件以用户标示去重的数量即可。


数据处理逻辑

  • 实时消费指定埋点数据写入/更新至 TiDB:根据转化事件基础配置,消费 Kafka 中指定的用户事件,并写入 TiDB 的指定转化表,对于满足时间窗口范围要求的后续事件,一般是更新相应表数据的事件时间字段。

  • 实时消费指定 binlog 数据写入/更新至 TiDB:根据转化事件基础配置,消费 RocketMQ 的 binlog 事件,将其依照配置的规范转化为相应事件,并根据转化事件的时间窗口配置更新相应表数据的事件字段。



如何阐述我们转化率表现的一些数据:


  • H5 渠道注册转化:insert 250w+/天,update 100w+/天

  • APP 渠道注册转化:insert 50w+/天,update 10w+/天

  • 渠道完件转化:insert 20w+/天,update 40w+/天


查询界面展示如下,查询条件略掉:



作者介绍


黄龙,360 金融数据小组负责人,TiDB User Group (TUG) 大使。


本文转载自 AskTUG


原文链接


https://asktug.com/t/tidb/1060


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-11-01 08:001694

评论

发布
暂无评论
发现更多内容

【CSS 学习总结】目录 - CSS 知识点梳理

Brave

CSS 12月日更

[Pulsar] Consumer消费

Zike Yang

Apache Pulsar 12月日更

Python 自动化领域起点篇,Selenium WebDriver 学习第1篇

梦想橡皮擦

12月日更

Kvrocks 在 RocksDB 上的优化实践

Kvrocks

Redis 协议

念叨了一年的游戏叙事书中文版终于出了!

博文视点Broadview

React进阶(十二):HOOK

No Silver Bullet

React Hooks 12月日更

语音信号处理 4:语音信号在时域和频域的表示

轻口味

28天写作 12月日更

Android EventBus 集成问题小结

阿策小和尚

28天写作 Android 小菜鸟 12月日更

面试官:HashSet如何保证元素不重复?

王磊

synchronized源码分析之锁的膨胀

Ayue、

synchronized 锁机制 锁升级

【架构实战营】模块八

Henry | 衣谷

架构实战营

《PyTorch 深度学习实战》复习14

IT蜗壳-Tango

28天写作 12月日更

如何实现Redis限流

喵叔

28天写作 12月日更

dart系列之:手写Library,Library编写最佳实践

程序那些事

flutter dart 程序那些事 12月日更

花一点时间优化一次年迈的后台系统的检索体验

为自己带盐

28天写作 12月日更 ​jQuery

【架构实战营】模块七

Henry | 衣谷

架构实战营

DDD领域驱动设计实战(三)-深入理解实体

JavaEdge

12月日更

Flutter开发小技巧【Flutter专题23】

坚果

flutter 28天写作 12月日更

50 K8S之Contour控制器

穿过生命散发芬芳

k8s 28天写作 12月日更

元宇宙100讲-0x007

hackstoic

元宇宙

如何用Docker Compose部署项目?

秦怀杂货店

Docker springboot

【LeetCode】一年中的第几天Java题解

Albert

算法 LeetCode 12月日更

React进阶(十一):create-react-app脚手架关闭 eslint 提醒

No Silver Bullet

React 12月日更 creat-react-app

怎么活的超脱:把自己的生活看成一场戏

mtfelix

28天写作

开始了解DevSecOps 1

搬砖的周狮傅

DevSecOps

什么是VLAN?如何配置?VLAN间路由又是怎样的?一文了解!

Ethereal

VLAN 网络技术

NGINX从入门到实践-基础篇

小志Codings

nginx Python3

解决:Command ‘mongo‘ not found, but can be installed with

liuzhen007

28天写作 12月日更

Istio的认证授权机制分析

xcbeyond

istio 认证授权 28天写作 12月日更

20《重学JAVA》--集合(二)

杨鹏Geek

Java25周年 28天写作 12月日更

元宇宙地产:品牌和投资者的大好机会?

devpoint

以太坊 NFT 元宇宙 12月日更

  • 扫码添加小助手
    领取最新资料包
TiDB 在实时渠道转化分析的应用_数据库_黄龙_InfoQ精选文章