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

Clickhouse,你们是怎样防止重复插入数据的呢

  •  
  •   wmhack · 2021-04-10 22:56:24 +08:00 · 3668 次点击
    这是一个创建于 1302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎样防止一条 id 相同的数据重复插入进去呢

    或者能覆盖旧数据也行

    9 条回复    2021-04-13 00:34:27 +08:00
    yuanmomo
        1
    yuanmomo  
       2021-04-10 23:00:37 +08:00 via iPhone
    唯一键
    wmhack
        2
    wmhack  
    OP
       2021-04-10 23:06:12 +08:00
    @yuanmomo 查了一下 clickhouse 手册,没有唯一键的语句额,方便说一下吗
    Evrins
        3
    Evrins  
       2021-04-10 23:06:39 +08:00 via iPhone
    Replacemergingtree
    yuanmomo
        4
    yuanmomo  
       2021-04-11 00:09:56 +08:00 via iPhone
    @wmhack 不好意思,我不知道 clickhouse 是 olap 的数据库,我当成了一个应用。

    看看看这里吧

    https://github.com/ClickHouse/ClickHouse/issues/3386
    Leviathann
        5
    Leviathann  
       2021-04-11 00:58:14 +08:00 via iPhone
    @wmhack replace merging tree 会把 order by 的键作为唯一键,异步把相同唯一键的数据合并
    xx19941215
        6
    xx19941215  
       2021-04-11 14:39:19 +08:00 via iPhone
    club house 一眼看成这个
    iluckypig
        7
    iluckypig  
       2021-04-11 20:05:58 +08:00
    ReplacingMergeTree,原理就是 merge 的时候会把 order by 键相同的数据覆盖掉,https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replacingmergetree/
    RangerWolf
        8
    RangerWolf  
       2021-04-12 10:28:55 +08:00
    上面的 replace merge tree 我觉得都没法达到楼主想要的效果。两个很大的问题:
    1. 及时性,经常会出现重复数据。因为是异步更新( final 性能很低)
    2. 性能,merge 的性能极低
    wmhack
        9
    wmhack  
    OP
       2021-04-13 00:34:27 +08:00
    @RangerWolf 确实是的,我试了一下 replace merge,延迟更新确实挺难受的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1219 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:18 · PVG 02:18 · LAX 11:18 · JFK 14:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.