当前位置:首页 > 天道酬勤 > 正文内容

数据库database(hbase数据库)

张世龙2021年12月20日 15:09天道酬勤1340

作者:端庄的摩托车

编辑:大东BE

导读

TP与AP融合的HTAP数据库已成为行业发展趋势。 但是,在大数据场景中,由于TP和AP系统本身的复杂性,不容易将两种使用场景的功能融合到一个数据库系统中。 汹涌澎湃的HTAP数据库ZNBase采用多模式存储引擎的方案实现HTAP特性,基于OLTP引入列存储引擎支持OLAP场景。 本文介绍了列存储引擎技术在HTAP数据库ZNBase中的重要作用。

OLTP 与 OLAP

名词释义

OLTP,全名在线事务处理,翻译为在线事务处理

OLAP,全名在线分析处理,在线分析处理和翻译

从20世纪60年代开始,计算机系统被用于执行薪资结算、会计、计费等领域的任务。 那时,早期的OLTP是用户输入数据,计算机系统处理数据,完成了一系列增删操作。 随着计算机技术和数据库技术的进一步发展,OLTP在政府、银行和企业信息系统中得到广泛应用。 目前,OLTP被认为是低延迟、大容量、高并发工作负荷,通常用于订单和履行、发货、向顾客收费、收款等业务。

OLAP被认为是分析工作负载的。 OLAP面临的情况是相对较高的延迟、较低的数量和较低的并发工作负载。 这些负荷通常通过运营、分析历史和大数据、制定战略决策和措施,用于提高公司业绩、提高产品质量、提高客户满意度、市场预测等。 随着近年来大数据技术的兴起,企业对数据分析场景在时效性上有了更高的要求,大数据下的OLAP也开始成为许多企业的刚需。

互联网流量爆发后,面对大量的数据时,OLTP和OLAP系统的信息架构和基础架构各不相同,而且各自有各自的复杂性,因此这两个APP场景有各自不同的产品这个时期,企业通常采用“事务型数据库系统分析型数据库系统ETL工具”的组合方案,以实现大数据存储事务分析的业务需求。

HTAP 的出现

这样采用不同系统对不同场景进行数据处理的方案也带来了相应的课题。 由于TP和AP是跨平台的,组合使用会有数据传输的过程,带来数据同步、数据冗余两个难题。

数据同步的中心是数据的时效性问题,过时的数据往往失去价值。 在以往方法中,OLTP系统中的数据变化以日志的形式暴露; 由通过消息队列解除绑定传输的后端ETL消费者引出,使数据与OLAP同步,形成TP到AP的数据传输链。 由于整个链条很长,对要求时效性的场景提出了考验。

另一方面,数据在链条中流动,多个数据被冗余地保存。 在典型的高可用性环境中,数据还可以存储多个数据。 结果是更大的技术、人工成本和数据同步成本。 同时,跨越这么多技术栈、数据库产品,每个技术栈背后都需要个别团队的支持和维护,如DBA、大数据、基础设施等,这些都是巨大的人力、技术、时间、运输成本。

2014年,Gartner的目的是为了打破OLTP和OLAP系统之间的隔阂,避免ETL跨平台数据传输带来的高昂成本,将两者合并为一个数据库系统

随着软硬件基础设施和数据库技术的发展,考虑OLTP和OLAP负载的HTAP数据库系统逐渐代替了传统的“事务型数据库系统分析型数据库系统ETL工具”方案

ZNBase 和列存引擎

ZNBase是近期开源的HTAP分布式数据库,也是首个被开放原子开源基金会接受的国产数据库项目。 该数据库系统是为了应对日益增长的混合负载场景而开发的,可以混合事务和分析场景,以满足更多的数据APP需求。 为了实现HTAP的特性,这个数据库系统内的列存储引擎子系统遍布整个系统

架构中扮演了重要的角色。

支撑 ZNBase 的 HTAP 功能的是多模存储引擎,在其中结构化数据的处理上,存储可以分成行存和列存,是分别针对 OLTP 和 OLAP 场景的优化,而支撑 OLAP 场景的就是的列存引擎。

列存引擎是 ZNBase 数据库系统 HTAP 形态的核心组件,用于存储和管理数据的列存副本,是行存引擎的扩展,列存引擎在提供良好隔离性的同时,也兼顾了读时强一致性。列存副本通过 Raft Learner 协议异步复制,但是在读取的时候通过 Raft 校对索引方式达到 Learner 和 Leader 的同步。这个架构很好地解决了 HTAP 场景的隔离性以及列存同步的问题。

列存引擎架构介绍

列存引擎逻辑架构

列存引擎逻辑架构包含四个部分:

1) DDL 模块;

2) SQL 层矢量计算模块;

3) 副本层 Raft 协议模块;

4) 存储层的透明访问模块和列存数据库模块。

DDL 模块负责对表的列存副本进行管理,它驱动元数据模块、Raft 协议模块和列存数据库模型协同工作。

矢量计算模块负责从列存副本中读取数据并进行矢量计算,它读取元数据模块,从合适的列存副本中读取数据,完成计算并返回结果。

Raft 协议模块负责处理行列副本一致性问题。

透明访问模块负责对上层提供统一存储访问接口,并屏蔽下层异构存储引擎的差异,实现上层与存储引擎的解耦;列存数据库是列存引擎最底层存储组件,负责以列存格式实际存储列存副本数据。

列存引擎物理架构

列存引擎的物理架构分为三层:

1) 应用层:包括所有调用数据库服务的客户端应用程序;

2) 网关层:数据库网关负责通过优化 SQL 路由,提升集群整体执行性能。数据库集群采用全对等网络拓扑,集群中的任何一个节点实例都可以处理 SQL,数据库网关根据节点实例负载和数据分布情况对 SQL 路由进行优化,将 SQL 发送给较为合适的节点实例,例如将纯 OLAP 负载发送到某一组列存节点上。

3) 集群层:集群由角色和作用相同的多个节点实例组成,接收 SQL 的实例节点临时充当 Master 的角色,负责驱动 SQL 的执行流程,与其他节点实例交互,并返回计算结果。每个节点实例可拥有多个 Store,每个 Store 可以被标记为不同的类型,目前可标记行存 Store 或列存 Store。列存 Store 底层采用列存数据库,只能存储列存副本。如果节点实例拥有的 Store 均为列存,则成为列存节点实例。从资源隔离的角度出发,可以将所有列存节点实例组成一个虚拟 OLAP 数据库集群,专门负责处理 OLAP 负载,且不对其他行存节点实例造成过大影响。

列存引擎的功能特性

列存引擎有几大功能特性,矢量计算、计算下推、列式存储和异步复制。

在具体实现上,列存引擎采用了 Clickhouse 并在其基础上进行吸收优化。ClickHouse 本身是一套高效的列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据 Sharding、数据 Partitioning、TTL 等丰富功能。

总结

作为一款新型的 HTAP 分布式数据库系统,ZNBase 可以同时满足事务、分析场景,避免繁琐且昂贵的 ETL 操作。而列存引擎技术在这其中发挥了重要的作用。

列存引擎作为实现 HTAP 的关键技术,其异步复制功能可以在保证事务处理性能的基础上,达到分析场景准实时的效果,满足用户需求,优化用户体验。列存引擎植根于 ZNBase 数据库中,继承其强大的产品特性,使得其在原有高性能的 OLTP 能力基础上,增强了对 OLAP 场景的处理能力,丰富了产品功能。

对于大部分数据库用户来说,最好的产品体验就是开箱即用,无论是 TP 还是 AP 场景,如果能够在同一个黑盒系统中完成所有操作,就能降低用户心智负担和运维成本。所以不难理解为何统一 TP 和 AP 处理的 HTAP 数据库能够成为受市场和用户追捧的产品趋势。

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/25707.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。