存算分离:数字化转型的新动向及发展趋势


早期的数据库系统往往是存算一体的,这意味着存储和计算功能在同一设备中集成。而现今常见的数据库系统,如Oracle、MySQL和MPP数据库,仍然属于存算一体的数据库系统。然而,为什么会有存算分离的架构发展呢?本文将详细阐述存算分离的定义和原理,并探讨存算分离的发展情况、优势和挑战,以及未来的趋势。尽管目前我们常用的数据库系统仍是存算一体的,但存算分离的架构设计在数字化转型中发挥着重要作用。


01

存算分离的定义和原理


时间进入本世纪, 随着用户数据的快速膨胀, 用户对海量数据的分析需求越来越明显, 各行各业都在搭建自己的数据仓库和商业智能系统, 这时用户面临的最大挑战第一是成本, 第二是性能。

传统的Unix主机和高端存储设备价格昂贵,因此搭建一个用于决策支持的数据仓库系统需要大量的投资。此外,在处理海量数据时,系统往往运行缓慢,可能是因为磁盘转速、网络传输或CPU处理能力不足。问题的根本原因在于存储和计算单元的分离,数据必须从存储中逐块读取,无法准确确定计算单元所需的数据。在传统的行存储中,即使一个决策查询只需要少量字段,也需要将所有数据都提取到计算单元,然后在计算单元内部处理和筛选。这导致了大量IO浪费。此外,由于计算单元内存有限,在连接大表时会产生大量临时数据,这些临时数据需要在存储中临时存放,并在需要时取出,进一步浪费资源。

基于这样的成本和资源浪费的问题,于是产生了存算分离的架构,存算分离的架构是一种将计算和存储分离的设计理念。它的核心思想是将数据存储和处理逻辑分开,将计算任务从数据存储层中分离出来,分别进行处理。

传统的计算架构中,数据存储和计算是集中在一起的,计算任务需要直接从存储中读取数据并进行处理。但随着数据量的不断增大和计算任务的复杂性提高,这种集中式的架构面临着性能瓶颈和扩展性问题。而存算分离的架构可以解决这些问题,通过将计算任务从数据存储中分离出来,实现更高效的计算和存储。

在存算分离的架构中,数据存储层通常采用分布式存储系统,可以水平扩展以应对大规模的数据存储需求。计算任务则在独立的计算层中进行,可以根据实际需求进行弹性扩缩容,提高计算性能。

存算分离的架构可以实现数据的实时处理和分析,支持大规模数据的并发计算,为数字化转型提供了更高效的技术基础。以Snowflake的湖仓一体种的存算分离架构中来说明存算分离的本质:

Snowflake内核组件从底向上可以分为三个层次:

1、数据存储层,Snowflake的数据存储是构建在Amazon S3对象存储上,主要用来存储表数据和查询结果。

2、计算层-虚拟仓库,虚拟仓库构建在Amazon EC2虚拟机组成的弹性集群之上,负责执行用户的查询请求。

3、调度云服务层,云服务组件包括并发访问控制、基础设施管理、优化器、事务管理、安全管理、元数据管理,其中元数据包含schema信息、表信息、权限认证信息、秘钥、统计信息。

在存算分离的架构下,不同的工作负载可以通过创建不同的虚拟仓库来实现计算的灵活调配。在每次计算过程中,计算层通过网络直接从存储层获取数据,并在虚拟数据仓库中进行计算。对于负载比较高的工作负载,可以创建较大的虚拟仓库,而对于普通查询,则可以创建较小的虚拟仓库。同时,用户还可以通过调整虚拟仓库中单节点的CPU和节点数量来平衡计算复杂性和并发性。

在存算分离的架构中,不同虚拟仓库之间通过占用不同的硬件节点或者计算层中的资源调度来实现隔离。由于整个虚拟仓库是无状态的,因此用户可以随时创建和销毁虚拟仓库。这也意味着,用户可以通过增加计算层的实例数量来实现计算层的横向扩展。

通过这种虚拟仓库的概念,存算分离架构提供了更大的灵活性和可伸缩性。用户可以根据实际需求动态调整虚拟仓库的规模和计算资源,从而更好地适应不同的工作负载。同时,通过横向扩展计算层,还可以进一步提高计算性能和吞吐量。

总的来说,存算分离架构的本质是通过构建虚拟仓库可以有效实现不同工作负载的灵活调配和隔离,提供了更高效的计算和临时数据存储能力。而对于永久存储的数据则采用分布式存储系统来提供存储,这种架构的优点在于可伸缩性强、灵活性高,为用户提供了更好的计算资源管理和利用方式。

这里特别需要说明的是存算分离,在算的虚拟仓库中是存储本计算单元需要计算的数据,该数据缓存在当前的虚拟仓库中,所以也就是说在计算服务器中并不是完全不存储数据,而是存储和当前计算单元计算任务相关联的数据。而这里就需要从永久存储的数据中抽取数据到虚拟仓库中。



02

存算分离的在金融行业发展情况


在金融行业中,数据库在多种场景下被使用,包括核心交易、互联网金融应用、分析应用和办公应用等。虽然金融业各领域的数据库系统正在逐步转向国产数据库,但在核心业务场景中,数据库转型的进展仍然缓慢。这主要是因为国产数据库,特别是国产分布式数据库,大多采用了"存算一体"的架构。

在金融核心业务场景中,对数据库的性能、可扩展性、数据延迟和数据一致性等方面有着严格的要求,而国产数据库的"存算一体"的架构却难以满足这些要求。这主要表现在以下几个方面:

1、服务器可靠性不足:存算一体架构采用了服务器本地磁盘部署方式,但服务器的可靠性有限。服务器故障可能导致硬盘失效、副本冗余度降低,一旦发生问题,数据库将无法访问甚至丢失数据。同时,服务器故障的修复时间也往往很长,运维管理也变得复杂。

2、数据同步难以实现强一致性:由于服务器本地磁盘的可靠性不足,存算一体架构下的数据库通常通过一主多备份的方式提高系统的可用性。然而,在主库和备库之间进行数据同步时,很难同时满足金融核心业务对高性能和强一致性的要求。

3、资源利用率低,无法灵活扩展:由于计算和存储被强相关性绑定,存算一体架构中往往存在CPU资源争夺的问题。在繁忙的业务情况下,有限的CPU往往偏向某一方面而无法充分利用。

在扩容时,计算和存储资源无法按需扩展的同比例消耗,导致一方面资源浪费,无法实现资源的弹性扩张。由于数据库的弹性伸缩能力受到挑战,企业将不得不通过增加节点数量来提高性能和可靠性,从而增加成本。

4、容灾能力不满足行业要求:在金融核心业务场景中,容灾是必不可少的能力。对于五大行或头部股份制金融机构的核心系统而言,容灾要求达到了RTO(恢复时间目标)分钟级和RPO(恢复点目标)为零的最高水平。然而,存算一体架构在主备库之间复制数据时会出现问题,在容灾场景下更突出,因为链路拉远后,故障场景变得更加复杂。

目前,采用存算一体架构的数据库几乎都采用了单集群拉远加异步复制的模式。在核心业务中,很少有多集群数据库实现强一致性容灾的案例,很难满足金融核心系统对容灾的要求。

然而,需要注意的是,在金融和其他行业中,存算一体的国产数据库更多地部署在新兴互联网业务或非核心业务中。对于这些行业来说,并没有像互联网行业那样大的并发访问需求,也不需要存储如此大量的数据。相反,业务连续性和可靠性是首要考虑的因素。这也是为什么金融等行业的核心业务数据库向国产数据库转型总是显得步履维艰的原因。

不过,历史总在轮回。就像过去"IOE"架构让数据库从存算一体向存算分离迈进一样,在企业数字化转型不断深入的过程中,数据库再次走到了存算分离的技术拐点。

目前国产的数据库华为GaussDB、阿里PolarDB、腾讯TDSQL,都在向存算分离的场景靠拢。



04

存算分离的未来发展趋势


当前云原生分布式数据库正经历着快速发展,这必然导致计算和存储的分离。"存算分离"架构已成为网络技术发展和社会经济进步的时代产物,因其适应了当前时代发展需求而备受青睐。

云原生分布式数据库的存算分离具有以下特点:

1、弹性伸缩性:存算分离架构允许计算和存储资源独立扩展,根据需求动态调整资源规模。这种灵活性使得系统可以根据负载的变化自动扩容或收缩,提高了资源利用率和性能。

2、高可用性和容错性:存算分离架构通过数据的冗余备份和分布式部署,提供了高可用性和容错性。即使某个节点或组件出现故障,系统仍然可以继续正常运行,保证业务的连续性。

3、硬件和软件的选择自由度:存算分离允许选择适合具体需求的硬件和软件,例如,可以使用更适合计算密集型任务的硬件加速器,或者选择更适合高容量存储的硬盘。同时,可以使用不同的计算框架和编程模型来处理数据,以满足不同的业务场景需求。

4、数据局部性优化:存算分离架构使得计算节点可以更接近数据存储节点,从而减少数据传输的延迟,提高数据访问效率。这对于处理大规模数据和复杂查询非常重要,可以显著提升应用系统的性能。

5、可扩展性和灵活性:存算分离架构可以实现水平扩展,即通过增加更多的计算或存储节点来提高系统的处理能力。同时,存算分离也支持与其他云原生技术(如容器化、微服务架构)的集成,提供更灵活的部署和管理方式。

其中数据局部优化减少数据传输的延迟,主要采用以下方案:

1)在网络加速方面,各种软件优化可以减少网络传输,同时高速低延迟网络技术如ROCE以及数据中心内部的高速互联网路等,有助于提升存储层到计算层的数据传输效率。

2)在存算分离架构中,数据缓存也起到了重要的作用。类似于Oracle的思路,通过使用缓存可以避免每次数据访问都必须访问磁盘,从而提升系统性能。在存算分离架构中的虚拟仓库层,也会利用缓存来进行数据的缓存,以加快数据访问速度。

3)针对存储层的优化也是存算分离架构中的重要环节。很多云上数仓解决方案都会强化Metadata的作用,对一些基本的聚合操作如sum、max、min等,可以直接从metadata中返回结果,而无需产生磁盘IO。在存储格式上,像ORC、Parquet等存储模式利用列存和SIMD技术,可以实现一次IO返回更多有效数据,同时启用多种索引技术,使得查询定位更加快捷。

这些优化措施的实施,有助于在存算分离架构中提升数据访问的效率和性能。

总而言之,存算分离架构通过弹性伸缩、高可用性、容错性、自由选择硬件和软件、数据局部性优化以及可扩展性和灵活性等特点,为云原生分布式数据库提供了高效、可靠和灵活的数据处理能力。




欢迎加入【数据行业交流群】社群,长按以下二维码加入专业微信群,获取

新的行业信息,商务合作加微信备注商务合作


往期历史热门文章:

基于DataOps的数据开发治理:实现数据流程的自动化和规范化

数据平台:湖仓一体、流批一体、存算分离的核心问题及原因解析

数据治理体系该怎么建设?

实时数仓&流批一体技术发展趋势

数据仓库、数据中台、大数据平台的关系?

数字化转型如何促进业务的发展

数据中台中的核心概念解析

数据治理中的数据标准的作用?

全面数字化转型:打造全新营销模式


请使用浏览器的分享功能分享到微信等