在“拿来主义”的数据库市场中,天云数据坚定不疑地走硬核路线。十余年沉浸在数据库技术世界里,如今天云数据HTAP数据库Hubble融合了Oracle交易和MPP数仓的数据库替代升级,在新型大数据环境中扮演了越来越重要的角色。
酒香也怕巷子深,细说Hubble数据库硬核技术——混合逻辑时钟。
一、什么是混合逻辑时钟?
混合逻辑时钟即混合了物理时钟PT和逻辑时钟LC,实质上,是对逻辑时钟的增强。
物理时钟是机器本地的时钟,由于系统对时间流逝的感知和度量会出现频率稍高或稍低的状况,因此系统时间会比标准时间稍快或稍慢,一天的误差可能有毫秒甚至秒级。
逻辑时钟是通过happened-before关系确定事件的逻辑时钟,从而确定事件的偏序关系。在分布式场景下,不同机器的时间可能存在不一致,没办法对跨节点的事件确定的先后关系。
二、为什么要用混合逻辑时钟?
在逻辑时钟下,如果a, b是位于一个进程内的顺序事件,且a发生于b之前,那么a happened-before b。
如果a,b事件是位于2个进程内,a为消息的发送事件,b为同一个消息的接收事件,那么同样a happened-before b。
a happened-before b记作:a hb b或者a->b,C(a)<C(b),C表示逻辑时钟。
但在实际中我们不能通过C(a)和C(b)的大小推出a, b事件发生的先后顺序。因为分布式节点间的交互要在事件发生顺序上达成一致, 而不是对于时间达成一致。如何让逻辑时钟和物理时钟达成一致?一种“尽可能”的方式即混合逻辑时钟存在很有必要。
三、Hubble硬核技术价值
Hubble混合逻辑时钟能实现:
满足逻辑时钟的因果一致性happened-before。
尽可能接近物理时钟PT,当物理时钟推进时,逻辑时钟部分被置零。
记录时间的因果关系,保证和物理时钟的偏差是bounded。
消除中心节点,用本地的物理时间加上逻辑时间,为具备数据库定义的因果关系的事务排序。
可以替代wall time使用。
“技术至上,技术人员至上”的理念让天云数据在技术上“开花结果”,述说着属于Hubble的硬核故事。




