随着云计算和大数据技术的发展,存储与计算分离(Separation of Storage and Compute,简称存算分离)逐渐成为数据库和大数据处理系统的主流架构。这一架构的核心思想是将数据存储与计算资源解耦,以便在需要时能够独立扩展。这种方式极大地提高了资源的利用率和系统的灵活性,成为云原生数据库设计中的重要趋势。

传统的存算一体架构通常要求计算和存储资源紧密耦合在一起,导致计算和存储资源必须同时进行扩展,即便其中一种资源未达到上限也可能需要整体扩展,这在很大程度上增加了成本,且无法灵活应对变化的负载需求。而存算分离架构通过解耦存储与计算,允许它们根据实际需要独立扩展,带来了更高的资源利用率、灵活性以及更低的运营成本。

在云原生和大数据应用的推动下,越来越多的数据库系统转向存算分离架构。Databend 作为一款新兴的云原生数据仓库,采用了完全的存算分离架构,旨在为用户提供弹性扩展和按需使用的能力。本篇文章将深入探讨 Databend 存算分离架构的设计思路、优势,并通过用户案例展示这一架构为实际业务带来的收益。

大数据为什么要采用存算分离架构?

随着数据量的快速增长,企业对存储和计算的需求也在不断增加。然而,传统的存算一体架构已难以应对现代化的数据处理需求,其局限性在以下几个方面愈发明显:

  1. 扩展性问题

在传统架构中,存储和计算资源是紧密耦合的,通常需要同时扩展。这意味着即便计算能力仍充足,但存储资源不足的情况下,企业仍需扩展计算资源,导致资源浪费。对于大规模数据处理场景,尤其是需要动态应对峰值负载的业务场景,这种扩展方式难以做到高效且经济。

  1. 成本问题

云计算的兴起让企业更加注重资源的按需使用与灵活扩展。传统的架构在应对资源弹性方面表现不佳,往往需要预留大量冗余资源来应对突发需求,从而推高了整体运营成本。而存算分离架构的出现,使得企业能够灵活分配计算和存储资源,降低了不必要的资源占用,极大地减少了运维成本。

  1. 高并发和海量数据的挑战

现代化的数据分析和处理场景往往需要应对海量的数据和高并发请求。传统架构在面对海量数据时,数据分片与计算资源的协调调度往往会遇到瓶颈,无法有效地并行处理大规模数据。而存算分离架构则通过独立扩展存储和计算资源,能够更好地应对这些挑战。

基于以上背景,存算分离架构逐渐成为现代数据库系统的主流选择。它允许企业根据实际业务需求灵活调整计算和存储资源,极大地提高了资源利用效率,满足了云原生场景下的弹性扩展需求。

Databend 的存算分离设计

在深入了解 Databend 的存算分离架构之前,我们先来看看市面上一些主流数据库和大数据产品的架构设计演进,以及它们在存算分离方面的实践。

  1. 传统存算一体架构的局限性

传统的数据库,如早期的关系型数据库(如 MySQL、PostgreSQL),通常采用存算一体的架构设计。在这种架构中,数据存储和计算资源紧密耦合在同一节点上,数据的读取、写入、计算等操作都依赖于该节点的资源。这种架构虽然适合较小规模的数据处理任务,但随着数据量和查询复杂度的增加,系统扩展的难度显著上升。例如,数据量过大时,单个节点的存储和计算能力很容易达到瓶颈,这时即使计算资源充足,系统依然因为存储限制无法处理更多数据。

  1. Hadoop 和 HDFS 的早期大数据架构

在大数据处理领域,早期的 Hadoop 架构也是存算一体的。Hadoop 使用 HDFS(Hadoop Distributed File System)来管理数据存储,同时通过 MapReduce 进行分布式计算。虽然 Hadoop 实现了数据的分布式存储和并行计算,但其存储和计算依然耦合在一起,节点的计算能力和存储容量必须同步扩展。对于现代大数据应用场景而言,这种模式在资源利用率、扩展性、灵活性上都有明显的不足,且计算性能受限于磁盘 I/O 的瓶颈。

  1. 云原生数据库的崛起:Snowflake 和 BigQuery 的存算分离架构

云原生数据库的出现彻底改变了存算架构的设计模式,Snowflake 和 Google BigQuery 是其中的典型代表。

  • Snowflake

    •   Snowflake 是首个从头设计的云原生数据仓库,其核心特性之一就是存算分离架构。Snowflake 将数据存储在云端对象存储(如 AWS S3)中,计算资源则由虚拟仓库提供。不同计算任务可以独立扩展所需的计算资源,而无需扩展存储资源。这一设计让用户能够根据不同的工作负载动态调整资源,避免了传统存算一体架构下资源浪费和扩展成本高的问题。
  • Google BigQuery

    •   BigQuery 是 Google 的云原生数据分析平台,也采用了存算分离的架构。BigQuery 将数据存储在 Google 的分布式文件系统中,而计算资源由 Dremel 引擎负责。通过这种架构,BigQuery 能够快速处理 PB 级的数据分析请求,同时通过独立扩展计算节点,满足高并发查询的需求。
  • Amazon Redshift

    •   Amazon Redshift 最早也是采用传统存算一体的架构,但随着用户对灵活扩展的需求增加,AWS 推出了 Redshift Spectrum,它允许用户将数据存储在 S3 中,而通过 Redshift 的计算节点进行分析。通过这种方式,用户可以同时享受对象存储的弹性和计算节点的强大性能,进一步实现了计算和存储的解耦。

Databend 与上述云原生数据库类似,采用了存算分离的设计思路,但在架构细节上进行了优化,以更好地适应大规模、动态变化的云端环境。

Databend 的存算分离架构设计

在分析了市面上典型的存算分离架构后,Databend 的设计则有其独特之处。Databend 在设计之初就全面拥抱云原生理念,将存储和计算完全解耦。

  • 云原生对象存储作为核心数据存储

    •   与 Snowflake 类似,Databend 在创立之初就将对象存储作为存储层,使用云对象存储(如 S3)来持久化数据。这种设计不仅提升了系统的弹性和可扩展性,同时也降低了存储成本,你只要付出普通盘八分之一的价格。云对象存储提供的高可用性、数据冗余等特性进一步增强了系统的可靠性。
    •   在对象存储支撑方面,Databend 支持了包括 S3、Blob、MiniIO、HDFS、IPFS 在内的 20 多种对象存储协议,并且将这种能力开源了一个 OpenDAL 项目,捐给了 Apache 基金会,现在已经成为 Apache 毕业项目。很多金融公司、大企业都在使用 OpenDAL 做对象存储的访问。
  • 无状态计算节点

    •   Databend 的计算层由无状态的计算节点组成,每个计算节点可以独立扩展或回收。无状态的设计不仅简化了系统的故障恢复流程,也增强了系统在高并发场景下的响应速度。通过无状态的设计,Databend 能够轻松实现快速扩展,满足不同业务场景下的计算需求。
  • 列式存储与元数据管理

    •   为了提升查询性能,Databend 使用了列式存储格式,并通过高效的元数据管理系统来实现数据的快速定位和访问。这使得 Databend 能够在处理大规模数据分析时保持较高的吞吐量,同时支持多租户场景下的隔离和资源分配。

通过上述设计,Databend 实现了存算分离架构的所有核心优势,同时进一步优化了云原生环境下的性能与成本控制。

Databend 存算分离架构优势

Databend 的存算分离架构不仅继承了上述主流云原生数据库的设计思路,还在一些关键方面进行了创新和优化,使其在资源利用率、性能、扩展性等方面表现出色。

  1. 资源利用率提升

相比传统的存算一体架构,Databend 通过独立扩展存储和计算资源,使得系统能够根据实际业务需求分配资源。这一设计特别适用于数据量增长迅速但计算负载相对稳定的场景。举例来说,一些企业的数据存储需求可能每年成倍增长,但数据分析任务的复杂性和数量却并没有同比增加。Databend 的存算分离架构能够让这些企业根据需要仅扩展存储资源,而不会为未使用的计算资源支付额外的费用,从而大大提高了资源利用率。

  1. 降低运营成本

存算分离架构的另一个核心优势就是按需使用资源,从而有效控制成本。在传统架构中,为了应对可能的峰值需求,企业通常需要预留大量的计算和存储资源,导致大量资源闲置。而 Databend 的架构允许用户在高峰期灵活扩展计算节点,在低谷期则收缩资源,避免了资源浪费。这一弹性设计特别适合电商、金融等业务波动较大的行业。

  1. 极致的查询性能

Databend 基于 Rust 的向量化计算实现 ,大幅提升了产品性能,进一步提升了查询性能。此外,通过使用列式存储有效减少查询时的数据扫描量,特别适合需要处理大规模数据的分析型查询。此外,Databend 的元数据管理系统能够快速索引和定位所需数据,使得系统在处理复杂查询时表现得更加高效。

  1. 多租户与隔离性

云原生环境下,尤其是在 SaaS 应用中,多租户隔离是一个非常关键的设计要求。Databend 的存算分离架构天然适合多租户场景。不同的用户或团队可以根据自身需求分配计算资源,并独立运行任务,互不干扰。这不仅保证了数据的安全性和隐私性,同时也提升了资源的利用效率。

  1. 弹性扩展与高可用性

Databend 的计算节点是无状态的,这意味着当某个节点出现故障时,系统能够迅速将任务转移到其他节点,确保服务不中断。这种高可用性的设计极大提升了系统的可靠性,尤其适用于要求严格 SLA 的场景。此外,Databend 可以根据不同的业务需求快速扩展或收缩计算资源,确保系统始终在最佳状态下运行。

  1. 灵活的部署模式

虽然 Databend 的架构设计充分利用了云对象存储的优势,但它并不局限于云端部署。用户可以根据自身需求选择在公有云、私有云或混合云环境中部署 Databend。通过这种灵活的部署模式,Databend 能够满足不同企业的多样化需求,并在各种基础设施环境下提供一致的高性能表现。

用户案例

案例一:多点数据库归档场景

多点的日常业务中 TiDB、MySQL 产生了大量的数据,但原系统只支持线上存储一个月数据,数据存储已到资源极限,迁移到 Databend 后数据存储量得到了10倍扩容,部署成本仅为原来的1/10;在10亿数据量级下,常用查询均可做到秒级响应

案例二:医药企业的数据增长挑战

大参林的数据量随着业务增长迅速膨胀,大表多,最大单表数量达到 93 亿行,原数据库无法满足数量存储需求,需对数据迁移。迁移过程中,数据备份文件导出后直接迁移到对象存储支持半结构化数据导入,无任何额外开发成本;迁移后,数据存储成本最高下降至原来的1/30,对大表数据的查询加载速度提升 2 倍。

案例三:万全网络——整体查询性能提升 5 倍

万全网络原系统主要使用 GreenPlum 作为大数据应用层数据库,支撑业务线报表、大屏展示、SFA 运营报表等,但高峰时期响应时间长,存储效率低,存算一体限制了对磁盘资源的灵活控制。Databend 存算分离的设计提高了系统灵活性与扩展性,具有更高效的存储效率,整体查询性能提升 5 倍以上。

结语

存算分离架构的出现为云原生数据库带来了新的可能性。通过计算与存储资源的解耦,Databend 实现了高扩展性、弹性使用和更高的资源利用率,解决了传统存算一体架构中存在的扩展性和成本问题。作为一款云原生数据仓库,Databend 的设计思路从一开始就围绕存算分离架构展开,最终为用户提供了一种高效灵活的数据处理解决方案。

Databend 存算分离架构的设计与实现不仅是当前技术发展的体现,更为未来数据库系统的发展指明了方向。通过将计算和存储资源灵活配置、按需使用,Databend 为企业带来了真正的云原生体验,推动了下一代数据仓库系统的发展进程。未来,随着数据量的进一步增长和技术的不断演进,Databend 的存算分离架构必将在更多场景中展示其强大的灵活性和优势,助力企业在数字化转型中占得先机。

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn/

💻 Wechat:Databend

✨ GitHub:github.com/datafuselab…


databend
20 声望10 粉丝

Databend 旨在成为一个 开源、弹性、可靠 的无服务器数仓,查询快如闪电,与 弹性、简单、低成本 的云服务有机结合。数据云的构建,从未如此简单!