8 月 16-18 日,第十四届中国数据库技术大会(DTCC 2023)在北京召开。酷克数据资深解决方案架构师陈义贤在“数据库内核•技术创新”专场发表题为“分布式数仓的 TP 能力摸索—HashData UnionStore”的演讲,介绍 HashData 以 Log is database 的思路在分布式数据仓库晋升 TP 性能革新中的技术计划及将来倒退布局。
演讲精彩观点:
1、在数据业务化的背景下,企业对数仓实时性能力提出越来越高的要求,OLAP 和 OLTP 会产生进一步的交融。
2、存算拆散架构将成为将来数据架构的根本要求,云原生架构的核心理念是将存算拆散,应用对象存储来保留一份全域数据,所有计算集群均为无状态,按需申请应用,也能够兼容各种不同计算引擎,满足各类不同业务的需要。
3、存算解耦后,应用不同引擎离开解决数据成为可能:Log is database 的理念能够大幅优化数仓的 OLTP 能力,通过将数据随机写入的操作剥离,以日志数据为中介载体,缩小了简单的锁定和同步操作,大幅晋升了并发能力,同时缩小随机拜访带来的老本。
以下为本次演讲文字实录(节选):
近些年,随着企业 IT 建设从信息化演进到数字化,企业对数据利用的需要也经验三个阶段:
在 1.0 阶段,以数据统计查问为主,在此基础上构建相应的零碎,服务于部门级的利用。
在 2.0 阶段,企业通过数仓整合远端利用数据,再进一步的进行加工,实现商业智能,为企业决策层提供撑持。
随着大数据技术的倒退,企业数据利用曾经进入 3.0 阶段。在这一阶段,数据利用越来越丰盛,可能更好地服务于企业整体员工。
上述的三个阶段仍是处于信息化阶段,数据只是在业务零碎经营产生的副产品。而随着企业数据衍生的价值越来越大,企业在进行零碎设计之前,就须要思考如何更好地治理数据资产。在这样的的背景下,利用零碎成为了物理世界和数字世界的映射的媒介。
同时,随同着 AI 技术的成熟,将来企业数据利用会越来越智能化和自动化,可能主动优化企业的经营策略和业务流程,达成麻利业务的能力。随着数据业务化的倒退,对数据平台的时效性、准确性和一致性提出了更高的要求,OLTP 和 OLAP 将会进一步地交融。
传统 MPP 分布式数仓晋升 OLTP 能力的尝试
目前,MPP 数仓晋升 OLTP 能力次要分为两个技术路线:第一种是在 TP 利用场景,由 2PC 转为间接派发,缩小 prepare 阶段的实例期待,从而晋升单条数据增删改的性能。这种形式的毛病是随着数据分析负载的减少,会额定加大零碎开销,造成比拟大的提早。
另一种形式是针对单条记录增删改的数据应用行存表,晋升并发性能。
传统分布式 MPP 架构数据库,会将工作并行的散布到多个服务器和节点上,并在实现计算后,将后果返回并汇总,从而实现对海量数据的剖析解决。随着业务的增长,企业须要减少服务器去晋升整个集群的数据处理的能力。
因为传统分布式 MPP 架构计算存储紧耦合,当繁多集群达到肯定的规模时(个别为 200),即便再追加新的计算节点,集群总体性能都会受制于旧的节点,岂但不会回升,反而呈现降落。
存算拆散架构将成为将来数据架构的根本要求
“存算拆散”技术的呈现,很好地解决了传统 MPP 架构数据库的“痛点”。云原生架构的核心理念就是存算拆散,应用对象存储来保留一份全域数据,所有计算集群均为无状态,按需申请应用,也能够兼容各种不同计算引擎,满足各类不同业务的需要。
图 1:HashData 在某国有大行存算拆散落地计划示意图
以 HashData 云数仓为例,多个集群共享对立的元数据、对立的数据存储,由对立的元数据集群提供与数据资产目录的动静连贯。当底层数据发生变化的时候,数据资产目录能够同步进行更新,为企业数据资产经营、数据治理以及数据安全治理提供了相应的撑持能力。
同时,得益于存算拆散的架构,HashData 通过一致性哈希来防止数据从新逻辑分组,通过共享存储防止数据从新物理散布,能够实现集群的秒级主动扩缩容。
HashData UnionStore 技术创新
存算解耦后,应用不同引擎离开解决数据成为可能:“Log is database”(日志即数据库)是一种基于日志的数据库架构思维,它能够晋升 OLTP 零碎的性能。Log is database 通过将数据随机写入的操作剥离,计算集群只将 WAL 日志提交至 HashData UnionStore 集群,由 UnionStore 集群解决日志数据,并重放生成新的页数据,这样缩小了简单的锁定和同步操作,能够大幅晋升并发能力,同时也缩小随机拜访。
Log is database 晋升数仓 TP 性能体现在以下几个方面:
缩小磁盘随机拜访:传统的数据库系统须要将数据写入磁盘的数据文件中,这可能导致频繁的磁盘随机拜访,对性能造成负面影响。而日志数据库将所有的数据更改操作都追加到日志中,这样能够将磁盘写入操作转变为间断的程序写入操作,大大减少了磁盘的随机拜访,进步了性能。
异步提交:传统的数据库系统在每个事务提交时都须要将数据写入磁盘,这会引入较高的提早。而日志数据库采纳异步提交的形式,即先将数据更改操作写入日志,而后异步地将日志中的操作批量写入磁盘。这种形式能够缩小磁盘写入的次数和提早,进一步晋升性能。
并发管制优化:日志数据库能够利用日志记录事务操作的个性来进行并发管制的优化。多个事务能够并发地写入日志,而不须要进行简单的锁定和同步操作。这种并发管制的优化能够进步零碎的并发性能和吞吐量。
批处理优化:日志数据库通常将多个操作合并成批处理操作进行解决。通过批处理操作,能够缩小磁盘写入的次数,进一步提高性能。例如,将多个更新操作合并成一个批处理操作,能够缩小每个操作的开销和磁盘拜访次数。
重放优化:日志数据库能够通过重放日志来复原和重建数据库状态。在系统启动时,能够通过重放日志中的操作,依照程序将数据更改利用到数据库中,从而疾速复原数据库的统一状态,而无需执行大量的随机拜访和数据恢复操作。
图 2:HashData UnionStore 架构图
在内核层面,HashData 对 UnionStore 集群进行了以下优化:
Wal Service:在数据库中,WAL 是一种持久性存储技术,它能够确保数据库在重启或解体时不会失落数据。在 WAL 机制下,数据库在写入数据之前,会首先写入一份日志记录,用于记录写入的数据信息。为了保障日志长久化之后的可靠性,日志通常会保留三正本。由 leader 节点负责接管计算集群申请,本地长久化同时将日志发送到 follower 节点,当所有节点都实现日志长久化之后,leader 节点才会返回给计算集群。
Safekeeper 为每一个租户启动了 Wal Writer 线程,负责进行日志长久化以及状态监控、选举。Safekeeper leader 会为每个 follower 启动一个 Wal Syncer 线程,专门负责同步日志以及发送心跳。
Page Service:次要负责从 Wal Service(safekeeper leader)获取曾经长久化日志并进行解析,通过重放日志去批改 page 数据;此外还会对计算集群提供更新后的 Page 读取服务。
Page 存储模式:引入了快照机制,Page Service 将以后日志作为 page 的 delta log,通过 base page+delta log 形式来构建对应 page 的多版本。Time Travel:HashData 通过 UnionStore 对底层数据存储的快照化设计,联合重做日志,赋予数据仓库“工夫旅行”的能力。比方应用 LSN 700 读取 Page1,则 Page Service 会先获取 base page,而后依据 LSN 700 确定 delta log 范畴,而后将日志按程序 apply 到 base page v2,生成对应 page 版本返回。
图 3:Time Travel 示例图
Time Travel 可广泛应用于以下场景,为数据库的操作治理提供极大的便当:
复原数据库对象:通过追溯 Page 版本和 LSN,能够将数据恢复到任意工夫点。误删除的表,Shcema 和库,能够间接将数据恢复到误操作之前工夫点。
查问历史数据:能够查问任意工夫点的数据,简略疾速。获取数据在某个时间段的变更历史、增量统计用于决策分析;例如通过 CDC 数据入库,能够在不制作拉链表的状况下,间接抉择统计数据的工夫点。
历史数据克隆:创立任意工夫点数据的拷贝,辅助数据模型训练。基于某个工夫点训练后果创立多份数据拷贝,应用不同参数进行训练,比照训练后果。
图 4:HashData 云原生对立架构 HTAP 数据平台
通过以上技术创新和优化,HashData 将能够反对数据跑批、流式计算、混合负载、数据增删改高效转化等利用场景,达成准实时数仓的能力,更好地助力企业构建 onedata 体系。