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

一个生产者对象不断产生数据,并对生产的数据进行持续追加方式的存储,那么存储方案如何选择?

  •  
  •   tctc4869 · 2020-12-04 17:08:14 +08:00 · 1393 次点击
    这是一个创建于 1457 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设有生产者对象,

    该生产者对象有一个布尔属性 A,当属性 A 设为 true,该生产者会不断生产数据,生产的数据类型是字符串或 byte 数组。

    当设置属性 A 为 false,会停止生产操作。并会发出一个通知事件

    生产过程中的数据要存起来,存到文件里,或者存到数据库里,但要求存的方式是持续追加的存储。有点就像 StringBuffer 的追加一样。

    假设有 2 个生产者对象实例,2 个生产者对象,都开启生产模式,不断生产数据,直到最终关闭生产模式。 如果是存到文件里,那么最终保存的是两个文件,以生产者对象的 id 和日期作为文件名,

    但如果是存到数据库里,比如 sql 数据库一个表里,每次生产数据,最终保存的不会是每一个生产的数据都对应一行,而是两行记录,和两个文件一样。不过 sql 数据库,有哪个数据类型或 jdbc 操作适合持续追加的存储么?

    堆积追加式的存储,其他类型的数据库,有哪些合适么?

    13 条回复    2020-12-05 08:44:35 +08:00
    faceair
        1
    faceair  
       2020-12-04 17:14:40 +08:00
    列式存储,clickhouse 之类的
    teek
        2
    teek  
       2020-12-04 17:16:39 +08:00
    追加的话,log 也是追加,所以 kafka ?
    tctc4869
        3
    tctc4869  
    OP
       2020-12-04 17:40:24 +08:00
    @faceair 列式存储适合追加存储?
    qiayue
        4
    qiayue  
       2020-12-04 17:41:27 +08:00
    时序数据库
    tctc4869
        5
    tctc4869  
    OP
       2020-12-04 17:41:42 +08:00
    kafka 适合 byte 数组追加么?
    faceair
        6
    faceair  
       2020-12-04 17:47:09 +08:00
    @tctc4869 存到同一列,用的时候单列数据全取出来自己顺序合并就好。
    tctc4869
        7
    tctc4869  
    OP
       2020-12-04 19:32:38 +08:00
    @qiayue 时序数据库种的“时序”一词的代指,用来根据时间标签为中心来优化的吧
    JmmBite
        8
    JmmBite  
       2020-12-04 19:57:49 +08:00
    没提查询要求,就纯文本追加。
    GrayXu
        9
    GrayXu  
       2020-12-04 20:07:25 +08:00
    @JmmBite +1,直接 append 不最快…
    tabris17
        10
    tabris17  
       2020-12-04 20:32:16 +08:00 via iPhone
    @JmmBite 这个防不住掉数据呀
    37Y37
        11
    37Y37  
       2020-12-05 07:01:04 +08:00
    这个跟监控数据一致,可以考虑下时序数据库或者环形数据库呀
    tctc4869
        12
    tctc4869  
    OP
       2020-12-05 08:42:58 +08:00
    @JmmBite ,要说查询要求,其实就跟读取一个文件内容差不多的,但是如果不用文件存,而是数据库存的话,不知道选什么类型的数据库比较合适
    tctc4869
        13
    tctc4869  
    OP
       2020-12-05 08:44:35 +08:00
    @37Y37 时序数据库的本质不是基于“时间”标签来优化数据存储效率的么?也能支持持续追加存储?就像打开一个文件写入流,往文件里持续追加数据,直到最终文件流关闭那样?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.