V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Saurichthys
V2EX  ›  Java

[不懂就问] 这样子的数据采集方案需要设计

  •  
  •   Saurichthys · 2020-06-17 12:45:47 +08:00 · 1264 次点击
    这是一个创建于 1380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数量在消息队列 mq 上,大概一天产生有 1000 万左右,需要读取入库,插入时差不能大于 20 分钟 1.数据库可以用 mysql 或者 postgresql 吗,单库能不能支撑 2.如果开发语言使用的是 java 或者 php,请问需要什么样子的部署结构 3.另外数据只存留三天,能否使用类似 mysql 的 event 事件机制,2 秒执行一次删除动作这样子,会不会影响数据性能

    5 条回复    2020-06-18 15:44:05 +08:00
    opengps
        1
    opengps  
       2020-06-17 13:01:35 +08:00 via Android
    数据库结构性能,硬盘性能,这俩跟得上,就没问题,至于删除,建议使用查询时间过滤,闲时再执行物理删除
    Saurichthys
        2
    Saurichthys  
    OP
       2020-06-17 14:30:12 +08:00
    @opengps 单线程采集估计会很慢吧
    saulshao
        3
    saulshao  
       2020-06-17 20:48:00 +08:00
    每天 1000 万,这是指行吗? 1000 万行数据,大概会有多少个 iDoc,每个 iDoc 包含多少行数据?
    理论上一天插入 1000 万行数据,对于任何数据库都不是什么很大的负载。一天有 3600X24 = 86400 秒,平均算下来每秒才写入 116 行.......
    从 MQ 采集数据,一般也就是单线程,除非你有很多个可以并发访问的 MQ 服务器。又或者你的数据被放在多个 Queue 队列里。
    至于保留数据,3 天清除一次一般建议选择负载比较小的时间段,集中删除,不要搞 2 秒删除一次这种动作,这会带来比较大的负担。
    Saurichthys
        4
    Saurichthys  
    OP
       2020-06-17 22:19:59 +08:00
    @saulshao 谢谢大佬,这个 mq 是这样子的,只提供一个接口让我们订阅数据,但是这个数量比较大,这个用单线程,订阅在进行同步数据库处理这样子的方式可行吗,或者有其他的流程方式!
    saulshao
        5
    saulshao  
       2020-06-18 15:44:05 +08:00
    这个大体上是可行的,虽然实操可能还会有一些问题,但是应该都可以遵循基本的逻辑来处理。如果不是让你直接访问队列,而是提供一个类似于 Rest API 的方式,那么从 MQ 读取数据的方式你自己并不能决定是多 /单线程。
    通常这个 Rest API 还会给你弄个多久调用一次,以防止自己挂掉......
    总而言之,数量不是问题,一个标准的数据库,就算只有最基本能运行的硬件配置,一天插入个 1000 万行都没什么问题。
    按照最普通的 Web 应用程序架构来做就行。只是你这个东西没有 UI 层就好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1198 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:20 · PVG 07:20 · LAX 16:20 · JFK 19:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.