V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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
Ufo666
V2EX  ›  MySQL

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

  •  
  •   Ufo666 · 2022-07-29 17:06:33 +08:00 · 6247 次点击
    这是一个创建于 882 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    其实 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-07-30 01:35:31 +08:00
    @Features 尾部数据,是单表的指标
    控件 -> 单表最大空间
    lithiumii
        39
    lithiumii  
       2022-07-30 01:40:55 +08:00 via Android
    前司 Matomo 埋点,直接一股脑写 mysql 了,没啥大问题
    westoy
        40
    westoy  
       2022-07-30 03:09:22 +08:00 via Android   ❤️ 1
    es 高可用的运营成本和硬件成本可比 mysql 高的多的多
    documentzhangx66
        41
    documentzhangx66  
       2022-07-30 05:00:30 +08:00
    会不会爆,要通过监控各设备性能,来观察性能是否足够。

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

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

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

    我们的方案
    开一个 office E5,买 25 个手机号, 25 个 onedrive 5T
    每日凌晨 1 点-2 点 cron 生成次日表名
    每日凌晨 3 点-4 点备份昨日数据表 sql,bzip2,删表,rclone 怼 onedrive 备份,联通 onedrive 超快,基本很快就能备份完,删本地文件
    hefish
        47
    hefish  
       2022-07-30 09:05:33 +08:00
    特小的公司还要存着这些数据,一直存到地老天荒啊。。。那恭喜这个特小公司已经一夜变成世界 500 强了。。
    diggzhang
        48
    diggzhang  
       2022-07-30 09:09:57 +08:00
    按日分区归档。
    按周建新库。
    krixaar
        49
    krixaar  
       2022-07-30 09:23:07 +08:00
    @documentzhangx66 #42 用 Oracle 当心哪天 boss 非得要“去 IOE”然后你再搞迁移……
    limbo0
        50
    limbo0  
       2022-07-30 09:42:12 +08:00
    埋点只能是越来越多, 长远考虑还是换离线, 当然如果哦几年内 mysql 能撑住不动也行啊
    MrTLJH
        51
    MrTLJH  
       2022-07-30 10:02:36 +08:00
    @realpg 手机号咋买的,求问
    realpg
        52
    realpg  
       2022-07-30 10:17:45 +08:00
    @MrTLJH
    群里找人,给 50,收个微软验证码,还不容易?
    aheadlead
        53
    aheadlead  
       2022-07-30 10:20:39 +08:00   ❤️ 1
    @documentzhangx66 #41 乐了 36 万行数据你让人上 oracle 合着你给他掏钱还是怎么的?
    caqiko
        54
    caqiko  
       2022-07-30 10:50:50 +08:00
    就你一个写代码的,你部署 es 老板舍得花这个钱吗?
    keymao
        55
    keymao  
       2022-07-30 11:40:06 +08:00
    写个定时任务,检测数据条目超过一定数量就进行归档,按照时间将很久之前的先归档 放到其他数据表
    Yunen
        56
    Yunen  
       2022-07-30 14:28:59 +08:00
    @realpg E5 开子号还需要手机号?这玩意不是想创就创嘛,租户管理员直接新建就完事了...
    knightdf
        57
    knightdf  
       2022-08-01 21:01:56 +08:00
    直接写 csv,tsv 文件就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.