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

求推荐高压缩比的时序数据库(避雷 Tdengine)

  •  
  •   CraxClive · 2024-06-16 10:17:59 +08:00 · 3317 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用了 Tdengine 2.x 近三年的时间,但是最近遇到严重的 BUG ,现在需要考虑迁移至其他数据库。

    最好符合以下要求(按优先级排列,最少满足 1 和 2 即可)

    1. 开源
    2. 高压缩比
    3. 允许冷热分级
    4. 允许按照时间间隔查询数据

    最后再吐槽一下 Tdengine ,删除数据后居然无法释放硬盘空间,还妄图让用户买企业版,真是滑稽至极...

    Issue 1 Issue 2

    29 条回复    2024-07-22 09:30:58 +08:00
    rrfeng
        1
    rrfeng  
       2024-06-16 11:14:02 +08:00 via Android
    开源的不就那几个…
    opentsdb ( hdfs 上太重了)
    influxdb (集群模式好像也要付费?)
    prometheus 及其衍生物 好像不能直接当存储,可以把核心拆出来搞一下
    RedisMasterNode
        2
    RedisMasterNode  
       2024-06-16 11:20:53 +08:00   ❤️ 1
    VictoriaMetrics ,参考 Grammly 使用的数据: https://victoriametrics.com/case-studies/grammarly/
    youngce
        3
    youngce  
       2024-06-16 11:27:05 +08:00
    小项目单机 influxdb 也不是不能用,大项目 MongoDB (好像只有 3 需要自己实现),也不是不能用🤣
    codegenerator
        4
    codegenerator  
       2024-06-16 11:50:18 +08:00
    2.高压缩比 这个是跟你的数据强相关的,没有算法能够随便做到高压缩比

    如果资金充足的话可以考虑定制,本人提供优质服务
    fds
        5
    fds  
       2024-06-16 11:59:59 +08:00
    项目里用 https://github.com/etcd-io/bbolt 也是删除后不释放空间的,所以每天新建一个文件存放,要删除时直接删文件😅
    nuII
        6
    nuII  
       2024-06-16 12:28:15 +08:00
    今天刚看到去哪儿网的监控技术详解,选的是 VictoriaMetrics
    waising
        7
    waising  
       2024-06-16 13:52:11 +08:00
    目前小型化用的 timescaledb 数据大的 抽到 ck 然后走 ck
    CraxClive
        8
    CraxClive  
    OP
       2024-06-16 16:09:20 +08:00
    @nuII
    @RedisMasterNode
    好的,我了解一下 VictoriaMetrics
    chutianyao
        9
    chutianyao  
       2024-06-16 16:27:20 +08:00
    “妄图”....
    人家程序员不吃饭么, 总不能一直靠爱发电吧
    zhouxiajie86
        10
    zhouxiajie86  
       2024-06-16 17:19:55 +08:00 via iPhone
    iotdb
    chonanlee
        11
    chonanlee  
       2024-06-16 17:35:57 +08:00
    CraxClive
        12
    CraxClive  
    OP
       2024-06-16 19:11:19 +08:00
    @chutianyao 开源版连最基本的 CRUD 都实现不了有什么脸让别人付费用企业版?但凡把这个特性在文档里写清楚,我都自认倒霉是我自己没做好调研,关键是他一点都没写,并且这个问题还是我删数据的时候发现不对劲的时候去查 issues 才发现的
    yinheli
        13
    yinheli  
       2024-06-16 23:09:46 +08:00
    我最近对存储有兴趣,简单的看过几个 rust 相关的,你可能还是要实际的调研使用一番。

    influxdb 老牌,但是大部分场景需要买商业版,比较推荐
    greptimeDB 坑点未知,但是代码质量看着还是比较舒服
    cnosdb 还比较新,issue 也不少,大概率要折腾,他们 B 站几乎每周都有分享


    Tdengine 我之前通过给他们处理 issue ,参加他们 open day 活动拿到面试机会,经历 3 轮技术面试,可惜挂了,我面试的 rust 的岗位,但是问了很多 java ,kafka 和 go 的问题…… 据说技术团队都是 985

    我对 TD 的感觉是:

    - 整体代码没有 cnosdb/influxdb 这种读起来舒服……
    - 虽然开源,但是大部分 issue 管理在内部,一些 PR 还与之关联,不知所云
    - 版本有一些 break change 但是文档不够明确,比如 go 和 rust 驱动维护了多个版本和特性在独立的模块/分支中
    keakon
        14
    keakon  
       2024-06-17 00:17:12 +08:00
    之前测了一圈然后选择了 ClickHouse ,不过要通过 kafka 来批量插入。
    tairan2006
        15
    tairan2006  
       2024-06-17 07:56:20 +08:00 via Android
    opengemini 还不错
    hongye
        16
    hongye  
       2024-06-17 09:11:49 +08:00
    你的这些要求 ClickHouse 都满足。
    Geekerstar
        17
    Geekerstar  
       2024-06-17 09:14:50 +08:00
    @CraxClive 我也遇到同样的问题,把文档翻烂都没找到说法,删除数据居然不释放空间
    CraxClive
        18
    CraxClive  
    OP
       2024-06-17 09:23:00 +08:00
    @Geekerstar 看 issue 有人说删对应数据库能释放空间,但是我删了一个测试环境的数据库还是不行。。。
    Geekerstar
        19
    Geekerstar  
       2024-06-17 10:18:53 +08:00
    @CraxClive 删数据库代价太大,比如我想删除指定日期的数据,文档上都有相关语法,能删除成功,但是却没有释放空间
    CraxClive
        20
    CraxClive  
    OP
       2024-06-17 10:23:26 +08:00
    @Geekerstar 如果有删除指定日期的数据的需求但是不想付费的话的话建议还是换数据库吧。。。太坑了,或者你试试调整 KEEP 参数,调整 KEEP 参数的话是可以释放空间的
    qieqie
        21
    qieqie  
       2024-06-17 10:33:59 +08:00
    因为存储引擎限制和避免 compaction 额外性能开销原因,分析型数据库一般不会支持实时的点删。
    高效的方法一般是通过 TTL 异步淘汰,或者 drop partition 删除物理上连续的大批量数据。
    NoobPhper
        22
    NoobPhper  
       2024-06-17 10:50:43 +08:00
    搜了下代码 好像还真没有 storage gc compaction 的代码...
    superliy
        23
    superliy  
       2024-06-17 13:46:50 +08:00
    @hongye 请教一下 ClickHouse 是不是只能少量连接,然后批量操作?不能像 mysql 这样实时有并发请求的场景?
    @keakon
    superliy
        24
    superliy  
       2024-06-17 13:49:20 +08:00
    怎么没人说 starrocks
    keakon
        25
    keakon  
       2024-06-17 14:04:58 +08:00   ❤️ 1
    @superliy 写统一写到 Kafka ,由它写到 ClickHouse 。如果是国产操作系统等需要 ARM 架构,又不想自己编译支持 Kafka 的,可以自己写个程序收集消息到内存,每秒写入到 ClickHouse ;如果每秒的量在内存中存不下,也可以读 Kafka 然后写到 ClickHouse 。
    读没啥限制,但是有一定延迟,可以认为是准实时的吧。
    hongye
        26
    hongye  
       2024-06-17 14:21:07 +08:00   ❤️ 1
    @superliy #23 ClickHouse 使用的 LSM-Tree 顺序操作磁盘,因此并发写的能力很强悍,我们 iot 场景有 1w 多个节点并发写入 kafka 然后吐到 ClickHouse ,几乎没有啥延迟,但是并发读取能力不好,这点需要考虑。
    sangshuduo
        27
    sangshuduo  
       2024-06-24 20:09:01 +08:00
    因为 V2EX 帐号不好注册,我替同事转发一下。建议到 TDengine 官方微信群或者 github issue 讨论。
    --

    首先,2.x 开源版绝大多数版本都不支持 delete 功能,所以不知道你说的删除数据无法释放空间指的是什么,这个描述问的题不清晰。

    接着,如果你指的是 drop table 之类不释放的话,2.x 版本提供了有 compact 功能可以重组数据从而释放空间,文档上有这个功能的使用方法。

    其次,如果你说的是删库不能释放空间,文档上也写明白了,或者你注意观察下,被删除的数据就在 vnode_bak 目录下,清空就可以释放空间了。

    最后,时序数据的清理是依靠 keep 参数按照固定时间段清理的,过期数据视为冷数据会自动清理。因此,即时释放空间作为高阶功能放在了企业版里,开源版用户只要耐心等待数据过期删除即可,只要稍微做好存储规划,不会有任何问题,没有强迫任何用户去买企业版。
    Ibrahimovic
        28
    Ibrahimovic  
       2024-07-22 09:28:17 +08:00
    推荐 OceanBase ,刚好能很好地满足你的前两个需求,github 上 OceanBase 的项目地址详见: https://github.com/oceanbase/oceanbase/blob/develop/README_CN.md
    Ibrahimovic
        29
    Ibrahimovic  
       2024-07-22 09:30:58 +08:00
    如果是要求时序数据库,再推荐一个 CeresDB (基于 OceanBase 分布式存储引擎设计的),官网链接详见: https://www.oceanbase.com/product/ceres
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2902 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:51 · PVG 21:51 · LAX 06:51 · JFK 09:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.