扩展字典的数据更新策略

简介: 扩展字典的数据更新策略

扩展字典支持数据的在线更新,更新后无需重启服务。字典数据的更新频率由配置文件中的 lifetime 元素指定,单位为

<lifetime>
  <min>300</min>
  <max>360</max>
</lifetime>点击复制复制失败已复制


其中, minmax 分别指定了更新间隔的上下限。 ClickHouse 会在这个时间区间内随机触发更新动作,这样能够有效错开更新时间,避免所有字典在同一时间内爆发性的更新。当 minmax 都是 0 的时候,将禁用字典更新。对于 cache 字典而言, lifetime 还代表了它的缓存失效时间


字典内部拥有版本的概念,在数据更新的过程中,旧版的字典将持续提供服务,只有当更新完全成功之后,新版的字典才会替代旧版本。所以更新操作或者更新时发生的异常,并不会对字典的使用产生任何影响。


不同类型的字典数据源,更新机制也稍有差异。总体来说,扩展字典目前不支持增量更新。但部分数据源能够依照标识判断,只有在源数据发生实质变化后才实施更新动作。这个判断源数据是否被修改的标识,在字典内部称为 previous ,它保存了一个用于比对的值。 ClickHouse 的后台进程每隔 5 秒便会启动一次数据刷新的判断,依次对比每个数据字典中前后两次 previous 的值是否相同。若相同,则代表无需更新数据;若不同且满足更新频率,则代表需要更新数据。而对于 previous 值的获取方式,不同的数据源有不同的实现逻辑。


文件数据源

对于文件类型的数据源,它的 previous 值来自系统文件的修改时间,这和 Linux 系统中的 stat 查询命令类似:

$ stat test_flat_dictionary.xml 
  File: test_flat_dictionary.xml
  Size: 814           Blocks: 8          IO Block: 4096   regular file
Device: 45h/69d    Inode: 25821194    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-01 08:08:24.600907513 +0000
Modify: 2022-05-01 08:08:23.580896226 +0000
Change: 2022-05-01 08:08:23.580896226 +0000
 Birth: -点击复制复制失败已复制

当前后两次 previous 的值不同时,才会触发数据更新。


MySQL(InnoDB)、ClickHouse和ODBC

对于MySQL(InnoDB引擎)、ClickHouse和ODBC数据源,他们的previous值类源于invalidate_query中定义的SQL语句。例如在下面的示例中,如果前后两次的updatetime值不同,则会判定源数据发生了变化,字典需要更新。

目录
相关文章
|
17天前
|
存储 开发框架 .NET
C#数据去重的5种方式,你知道几种?
今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。当然欢迎你在评论区留下你觉得更好的C#数据去重的方式。
|
1月前
|
开发框架 .NET C#
C#数据去重的这几种方式,你知道几种?
C#数据去重的这几种方式,你知道几种?
|
3月前
|
XML 存储 JSON
不同类型数据进行批量拆分
经常处理大量的数据,这些数据可能具有不同的类型、格式和结构。批量拆分数据是一个常见的需求,它有助于我们更有效地处理、存储和分析数据
47 1
|
22天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
7天前
|
缓存 架构师 NoSQL
五种更新缓存的组合方式
【4月更文挑战第19天】更新缓存的步骤特别简单,共两步:更新数据库和更新缓存。但这简单的两步中需要考虑很多问题。
|
6天前
|
存储 缓存 自然语言处理
平台设计-字典缓存
字典是软件开发中常用的功能
|
6月前
|
索引
如何在已创建的 es 索引中增加分片
如何在已创建的 es 索引中增加分片
75 0
|
存储 NoSQL JavaScript
分片策略 哈希&范围演示|学习笔记
快速学习分片策略 哈希&范围演示
146 0
分片策略 哈希&范围演示|学习笔记
|
SQL 存储 算法
事务、全局索引、透明分布式,再见,分区健!
在刚刚发布的PolarDB-X 2.1.0版本中,开源了透明分布式能力,能带给用户完全不同的透明分布式数据库使用体验。其中,一个最明显的不同,就是用户不再需要关注分区健这个概念,这也是副标题《再见,分区健》的来由。
1159 0
事务、全局索引、透明分布式,再见,分区健!
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常
125 0
集合或映射迭代过程进行删除或修改操作的时候会导致并发异常