Ufo666
V2EX  ›  MySQL

小程序埋点上报的数据,往 mysql 存是可以的吗

By Ufo666 at 2022 年 7 月 29 日 · 7623 次点击

公司小程序,加了手动埋点(他们希望数据人性化一点,而不是每个地方都打,打出来的内容很死板),所以在一些关键事件打上上报事件的 api 接口,发到服务器,服务器存入 mysql 。 现在有 38w 行记录了,感觉后面会撑爆,有点担心,要不要换个 es ?(特小一个公司)

57 条回复  •  2022-08-01 21:01:56 +08:00
linauror
   1
linauror  
   2022 年 7 月 29 日
38W 行还好吧,到千万以上可以再考虑使用其他来存储
Ufo666
   2
Ufo666  
OP
   2022 年 7 月 29 日
@linauror 还有其他事件记录的表,300w 了
st2026
   3
st2026  
   2022 年 7 月 29 日
38w 的数据是多久的,日增?还是?
这些数据是必须要永久存在吗,如果类似日志这种,保留几个月即可的,定时归档把.
Ufo666
   4
Ufo666  
OP
   2022 年 7 月 29 日
@linauror 小慌 ヾ(o・ω・)ノ
Ufo666
   5
Ufo666  
OP
   2022 年 7 月 29 日
@dongcxcx 客户那边就说肯定要一直存着...目前日增不多,但是后面用户多了,就...就现在还是要考虑考虑
0703wzq
   6
0703wzq  
   2022 年 7 月 29 日
定时归档,分表存放即可
st2026
   7
st2026  
   2022 年 7 月 29 日
分库分表就够了, 小公司你确定有人手来运维 es?
haya
   8
haya  
   2022 年 7 月 29 日
单机 clickhouse 就行
Ufo666
   9
Ufo666  
OP
   2022 年 7 月 29 日
@dongcxcx 不瞒您说,这里就我一个搞代码的
fiypig
   10
fiypig  
   2022 年 7 月 29 日
其实没做数据分析什么的 ,一般旧数据就是垃圾数据了, 做定时清理是最好的选择
keepeye
   11
keepeye  
   2022 年 7 月 29 日
不是永久保留的可以定期清理,算一下日增长,看看会维持在什么量级,千万级都不用多虑
tomczhen
   12
tomczhen  
   2022 年 7 月 29 日 via Android
小公司资源不足的话,代码和人有一个能跑就行了。
potatowish
   13
potatowish  
   2022 年 7 月 29 日 via iPhone
小公司不用担心,这点数据量 mysql 撑到你跑路都没问题
richzhu
   14
richzhu  
   2022 年 7 月 29 日
也不要直接写 es 吧, 最好是写到 kafka 里, 然后由 logstash 来取数据放入到 es
james2013
   15
james2013  
   2022 年 7 月 29 日
慌啥
另建 1 个表名,专门存这种埋点数据
数据少就每 1 年手动归档一张表,数据多就 3 个月手动归档 1 张表
或者直接分表存也可以
xiangyuecn
   16
xiangyuecn  
   2022 年 7 月 29 日   ❤️ 16
坚持住,再过俩月项目就黄了
brader
   17
brader  
   2022 年 7 月 29 日
就存 mysql 就好了,小项目没必要复杂化,几十万数据不多,你等几千万了再清理都没事,log 型的数据都是有时效性的,太久的清掉就好了,觉得有用,就备份起来就好
PopRain
   18
PopRain  
   2022 年 7 月 29 日
我们一年的日志已经 36G 了。。。。我还没有考虑分表
wjfz
   19
wjfz  
   2022 年 7 月 29 日
小程序官方不是有个事件分析嘛
cameco
   20
cameco  
   2022 年 7 月 29 日 via iPhone
写个定时任务,该表名就好了。最快解决问题。如果要查也可以做处理。
NoString
   21
NoString  
   2022 年 7 月 29 日
mysql 单表千万问题不大,正常分表就行。如果查询有聚合操作或者模糊匹配这些需求的话早点上 ES/Clickhouse 这种,结合你的场景选型就行
Samuelcc
   22
Samuelcc  
   2022 年 7 月 29 日 via Android
可以考虑 hbase
zhuweiyou
   23
zhuweiyou  
   2022 年 7 月 29 日
小程序本来就有埋点功能,非要自己存.
xiaoyangsa
   24
xiaoyangsa  
   2022 年 7 月 29 日
...非要自己存,mysql 挺好。不够就加
learningman
   25
learningman  
   2022 年 7 月 29 日
建议存成 csv 直接写文件
shiny
   26
shiny  
PRO
   2022 年 7 月 29 日 via iPhone
SQL 不复杂的话存上亿条都没事
msaionyc
   27
msaionyc  
   2022 年 7 月 29 日
这种放 mongo 也可以吧,毕竟这个日志你们应该不需要业务上的查询,字段也不需要设计
book1925
   28
book1925  
   2022 年 7 月 29 日
想借楼问下,埋点设计有什么书或者项目可以学习参考下怎么设计怎么埋点吗?
5aSx5Lia
   29
5aSx5Lia  
   2022 年 7 月 29 日
感觉没有太大必要,如果没有对查询有特殊需求,需要聚合数据这样子,没有必要用 ES ,可以通过冷热数据方式进行存储( 38w 真的很少,相信 mysql ,千万级别都顶得住)
cp19890714
   30
cp19890714  
   2022 年 7 月 29 日
mysql 上亿都没事,别太小看它了。只要不做太多查询就可以。
等以后要做数据分析,再考虑把数据复制到其他数据库中。
jasonkayzk
   31
jasonkayzk  
   2022 年 7 月 29 日
埋点上报分库分表就行,周表、月表
em70
   32
em70  
   2022 年 7 月 29 日
mysql 存过几千万的埋点,一点问题都没有,定期归档就是了
Ayanokouji
   33
Ayanokouji  
   2022 年 7 月 29 日
比如按年 /按月建一堆表,写的时候加个路由,实在不行,就每年 /每月发一次版,手动指定表
iseki
   34
iseki  
   2022 年 7 月 29 日 via Android
换 PostgreSQL (暴论
讲真几十几百万行一般情况下都不会有什么问题,只要这一行太大,索引建好
T0m008
   35
T0m008  
   2022 年 7 月 29 日
用什么取决于你需要怎么使用这些数据
Felldeadbird
   36
Felldeadbird  
   2022 年 7 月 30 日
数据不用的话,就是死数据。我公司有上千万的几年数据,但是基本不用。优化都不需要。当时提需求就提得响亮。结果用不响亮。 等数据量上千万,使用量频率在考虑优化。现在就去部署 ES ,我认为纯粹给自己增加工作量。
Features
   37
Features  
   2022 年 7 月 30 日
单独建个库,日志丢里面就行,分表什么的都不用考虑

单独建库主要是为了备份主库方便

其实 100 亿行对于 MySQL 来说也不算什么

MySQL 和其他数据库自身很强大,他们在发展的历程几十年中遇到的问题比我们任何一个人一辈子遇到的问题都要多,他们也有很优雅的方式去解决这些问题

这些问题包含了超大数据
最多行数:There is a limit of (2^32)^2 (1.844E+19) rows in a MyISAM table.
最大控件:256TB
单库最大表数:20 亿
Features
   38
Features  
   2022 年 7 月 30 日
@Features 尾部数据,是单表的指标
控件 -> 单表最大空间
lithiumii
   39
lithiumii  
   2022 年 7 月 30 日 via Android
前司 Matomo 埋点,直接一股脑写 mysql 了,没啥大问题
westoy
   40
westoy  
   2022 年 7 月 30 日 via Android   ❤️ 1
es 高可用的运营成本和硬件成本可比 mysql 高的多的多
documentzhangx66
   41
documentzhangx66  
   2022 年 7 月 30 日
会不会爆,要通过监控各设备性能,来观察性能是否足够。

做好主备节点、UPS 、备份。

进行删、改前,先在实验环境下测试好了后,再去生产环境上做。
documentzhangx66
   42
documentzhangx66  
   2022 年 7 月 30 日
如果为了稳,建议直接上 Oracle ,地球上最强数据库。PG 什么的就免了,最近有团体在各平台鼓吹 PG ,请不要上当。
cheng6563
   43
cheng6563  
   2022 年 7 月 30 日
才 300 万你慌个啥,特小的公司?那等 300 亿再说吧
ychost
   44
ychost  
   2022 年 7 月 30 日
用时序数据库简单点,比如 influxDB ,还能直观看到一个人的操作曲线
dayeye2006199
   45
dayeye2006199  
   2022 年 7 月 30 日 via Android
做成文件存对象存储吧,便宜。

下次要分析的时候再入库
realpg
   46
realpg  
   2022 年 7 月 30 日
日增 oplog 记录条数 1700 万条
MySQL 存储 分表 备份 无压力
这玩意就看你架构设计了

我们的方案
开一个 office E5,买 25 个手机号, 25 个 onedrive 5T
每日凌晨 1 点-2 点 cron 生成次日表名
每日凌晨 3 点-4 点备份昨日数据表 sql,bzip2,删表,rclone 怼 onedrive 备份,联通 onedrive 超快,基本很快就能备份完,删本地文件
hefish
   47
hefish  
   2022 年 7 月 30 日
特小的公司还要存着这些数据,一直存到地老天荒啊。。。那恭喜这个特小公司已经一夜变成世界 500 强了。。
diggzhang
   48
diggzhang  
   2022 年 7 月 30 日
按日分区归档。
按周建新库。
krixaar
   49
krixaar  
   2022 年 7 月 30 日
@documentzhangx66 #42 用 Oracle 当心哪天 boss 非得要“去 IOE”然后你再搞迁移……
limbo0
   50
limbo0  
   2022 年 7 月 30 日
埋点只能是越来越多, 长远考虑还是换离线, 当然如果哦几年内 mysql 能撑住不动也行啊
MrTLJH
   51
MrTLJH  
   2022 年 7 月 30 日
@realpg 手机号咋买的,求问
realpg
   52
realpg  
   2022 年 7 月 30 日
@MrTLJH
群里找人,给 50,收个微软验证码,还不容易?
aheadlead
   53
aheadlead  
   2022 年 7 月 30 日   ❤️ 1
@documentzhangx66 #41 乐了 36 万行数据你让人上 oracle 合着你给他掏钱还是怎么的?
caqiko
   54
caqiko  
   2022 年 7 月 30 日
就你一个写代码的,你部署 es 老板舍得花这个钱吗?
keymao
   55
keymao  
   2022 年 7 月 30 日
写个定时任务,检测数据条目超过一定数量就进行归档,按照时间将很久之前的先归档 放到其他数据表
Yunen
   56
Yunen  
   2022 年 7 月 30 日
@realpg E5 开子号还需要手机号?这玩意不是想创就创嘛,租户管理员直接新建就完事了...
knightdf
   57
knightdf  
   2022 年 8 月 1 日
直接写 csv,tsv 文件就行了
› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
© 2026 V2EX · 129ms · 3.9.8.5