Databend 的算力可扩展性

news2025/5/24 16:29:21

作者:尚卓燃(PsiACE)

澳门科技大学在读硕士,Databend 研发工程师实习生

Apache OpenDAL(Incubating) Committer

PsiACE (Chojan Shang) · GitHub

对于大规模分布式数据处理系统,为了更好应对数据、流量、和复杂性的增长,需要对系统的可扩展性加以重视。可拓展性代表一种预期,即在现有软件和硬件水平无法满足工作负载的时候,通过扩展系统可以进一步满足工作负载的需要。

Databend 是一款现代化的云原生数据仓库,旨在通过弹性和可扩展的架构提供高效的数据分析能力。Databend 具有高效的资源利用能力和分布式扩展能力,可以解决传统数据仓库在处理大数据集时遇到的性能和可扩展性问题。

Databend Cloud 基于开源的 Databend 发展而来,能够帮助您托管 Databend 实例,并提供 Serverless 的部署模式,不仅可以降低成本,还可以提高系统的弹性和可靠性。Databend Cloud 将廉价的云存储作为主要存储,并提供快捷高效的分析性能,已帮助很多客户实现了数仓、行为日志等场景的降本增效,并广受好评。通过使用 Databend Cloud,用户可以轻松构建低成本、高性能的数据仓库,并专注于分析而非基础架构的维护。

可扩展性概念与因素

系统的可扩展性涉及到多个维度,除了系统本身的管理的资源、软件设计的优化和数据与计算的有效管理之外,还包括系统需要处理的数据量、用户数量、查询复杂性等。

可扩展性与系统性能

线性可扩展性意味着资源的增加能够直接转化为系统性能的提升。线性可扩展性隐含的保证是当工作负载扩大一倍时,系统的计算资源(如CPU、内存、存储等)也扩大一倍,算力变为原来的两倍,从而获得与之前相当的处理速度。 

可扩展性背后的数学

但是,除非系统完全无状态,否则只能将其扩展到通用可扩展性定律(Universal Scalibility Law,红色线条)所描述的程度,之后即便添加更多资源,最终也只会因为并发、争用和相关性延迟导致系统整体性能降低。

即使在几乎不存在相关性延迟并且充分并行化的最佳情况下,最终也会受到阿姆达尔定律(Amdahl’ Law,绿色线条)的限制,这仍然无法达到线性可扩展性。

毫无疑问线性可扩展性(蓝色线条)只是理想情况下的表述。 在 Contention, Coherency, and Math Behind Software(上面图片的出处)一文中介绍了可扩展性背后的一些数学,也推荐大家阅读。

水平扩展和垂直扩展

两种常见的扩展方式是垂直扩展和水平扩展:

  • 垂直扩展(纵向扩展)则是提高单个节点的能力,如升级硬件或改善系统架构。
  • 水平扩展(横向扩展)指的是增加更多节点到现有的系统集群中,例如添加更多的服务器。

垂直扩展是改善系统性能的一个有效方式,但是垂直扩展面临着一个致命不足:单机性能总是有极限的。由于单机往往不能胜任大数据分析的需要,所以相关系统通常会强调架构各层的水平可扩展性以及水平扩展带来的性能增长。

Databend 的架构可扩展性

Databend 的架构设计考虑了可扩展性的多个方面,使其在云环境中能够灵活地扩展资源和处理能力。

Share-Nothing V.S. Share-Storage

传统数仓往往采用 Share-Nothing 架构,存储、计算一体化设计,弹性相对较弱。而且由于调度上采用资源固定(Fixed-Set)式调度策略,资源控制粒度粗,也会带来更多的成本消耗。Databend 使用共享存储架构(Share-Storage),底层可以使用对象存储,真正做到存储、计算分离,资源控制粒度更细。计算节点可以根据需求弹性扩展,而不受存储容量的限制。

Databend 架构全景图

得益于列式存储模型和向量化计算,Databend 可以充分利用现代硬件系统的潜力;此外,Databend 还对数据存储格式、数据缓存、和系统吞吐量进行了充分优化,以达到性能的最佳释放。

由于采用共享存储的架构,并且 Query 节点采用无状态设计,只在 Meta 节点保留必要的状态信息,使得 Query 节点能够轻松支持实时弹性扩容和缩容以及资源按需(Workload-Based)式调度。计算资源可以根据实际的工作负载自动扩展,提供按需计算能力,这进一步提高了系统的可扩展性和资源的使用效率。

### 性能评估:Databend Cloud 的算力可扩展性​

为了评估 Databend 的性能和可扩展性,可以运行 TPC-H 基准测试。TPC-H是一套针对数据库决策支持能力的测试基准,通过模拟数据库中与业务相关的复杂查询和并行的数据修改操作考察数据库的综合处理能力。

通过在 Databend Cloud上针对不同计算集群规模进行 TPC-H 查询的性能测试,我们可以观察到系统扩展资源时的性能变化。这些结果可以帮助我们了解在增加计算节点(水平扩展)和/或升级现有节点(垂直扩展)时,Databend 的查询处理能力如何改变。

使用 BendSQL 执行 TPC-H Q1

下面的数据展现了 Databend Cloud 上不同规模实例在执行 TPC-H 测试 Q1 时的性能变化。其中 XSmall 和 Small 都是单计算实例,对应垂直扩展模型;而从 Small 到 Large 的计算实例数量不断增长,对应水平扩展模型。

Instance TypevCPUsCompute InstancesRows Read (Avg)Time (Avg)Rows ProcessedData ProcessedRows/s (Avg)Data/s (Avg)
XSmall81414.109 sec591.6 million45.18 GiB41.93 million3.20 GiB
XSmall81413.676 sec591.6 million45.18 GiB43.26 million3.30 GiB
XSmall81413.799 sec591.6 million45.18 GiB42.87 million3.27 GiB
Small161413.241 sec591.6 million45.18 GiB44.68 million3.41 GiB
Small161411.571 sec591.6 million45.18 GiB51.13 million3.90 GiB
Small161411.734 sec591.6 million45.18 GiB50.42 million3.85 GiB
Medium32249.392 sec591.6 million45.18 GiB62.99 million4.81 GiB
Medium32248.279 sec591.6 million45.18 GiB71.46 million5.46 GiB
Medium32248.341 sec591.6 million45.18 GiB70.93 million5.42 GiB
Large64448.536 sec591.6 million45.18 GiB69.31 million5.29 GiB
Large64447.096 sec591.6 million45.18 GiB83.37 million6.37 GiB
Large64447.841 sec591.6 million45.18 GiB75.45 million5.76 GiB
XLarge128847.123 sec591.6 million45.18 GiB83.05 million6.34 GiB
XLarge128845.753 sec591.6 million45.18 GiB102.83 million7.85 GiB
XLarge128845.767 sec591.6 million45.18 GiB102.59 million7.83 GiB

可以看到,随着系统规模的扩大,查询响应时间缩短,而处理吞吐量也随之增加。这些测试结果直观展示了不同规模的 Databend Cloud 在同一工作负载下的处理能力变化。

Databend 的设计哲学、架构以及 Databend Cloud 的性能表现,体现了其作为一款现代大规模分布式数据处理系统的算力可扩展性。

除了私有化部署 Databend 和使用 Databend Cloud 之外,我们也提供混合云支持。可以帮助用户实现适应规模和成本的算力最大化调度,为未来数据处理需求的多样性和不断增长的挑战提供最佳应对方案。

关于 Databend

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

👨‍💻‍ Databend Cloud:https://databend.cn

📖 Databend 文档:Databend - The Future of Cloud Data Analytics. | Databend

💻 Wechat:Databend

✨ GitHub:GitHub - datafuselabs/databend: Modern alternative to Snowflake. Cost-effective and simple for massive-scale analytics. Cloud: https://databend.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1355936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[足式机器人]Part2 Dr. CAN学习笔记-Ch01自动控制原理

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Ch01自动控制原理 1. 开环系统与闭环系统Open/Closed Loop System1.1 EG1: 烧水与控温水壶1.2 EG2: 蓄水与最终水位1.3 闭环控制系统 2. 稳定性分析Stability2.1 序言2.2 稳定的分类2.3 稳定的对…

SwiftUI 打造一款“可收缩”的 HStack(一):“原汤化原食”

概览 拥有雄心壮志(亦或是自我感觉良好)的秃头码农们都喜欢接受编程上各种颇有难度的挑战,比如刷刷力扣(LeetCode)或 codeforces 上难题啥的。 为了满足小伙伴们的“冒险精神”(亦或是“自虐癖”),加上这篇博文我们会用连续 4 篇系列文章通过不同的方式来解决同一道与…

【IDEA——连接MySQL数据库,创建库和表】

IDEA——连接MySQL数据库,创建库和表 1、打开idea数据库操作页面(两种打开方法都可以) 2、点击加号,选择Driver,方便导入连接数据库的驱动jar包 然后选择MySQL进行添加驱动 3、点击上一步页面的左上方的Data Sources连接本地数据…

保姆级教程:从0到1搭建web自动化测试环境

之前都是在linux上安装,第一次在windows上配置环境,加上距离上次配置环境有点久了,竟也花了点时间。特此记录下保姆级教程,给初学者一个有效的参考! 一. 环境搭建 工具清单 工具工具名版本Java开发工具包JDK1.8浏览…

揭秘Linux软链接:如何轻松创建、删除和修改

揭秘Linux软链接:如何轻松创建、删除和修改 一、简介二、创建软链接三、删除软链接四、修改软链接五、Linux软链接的高级用法六、总结 一、简介 在Linux中,软链接(Symbolic Link)是一种特殊的文件类型,它是一个指向另…

【DevOps-03】Build阶段-Maven安装配置

一、简要说明 下载安装JDK8下载安装Maven二、复制准备一台虚拟机 1、VM虚拟复制克隆一台机器 2、启动刚克隆的虚拟机,修改IP地址 刚刚克隆的虚拟机 ,IP地址和原虚拟的IP地址是一样的,需要修改克隆后的虚拟机IP地址,以免IP地址冲突。 # 编辑修改IP地址 $ vi /etc/sysconfig…

申请域名SSL证书并自动推送至阿里云 CDN

近期国外SSL证书厂商调整了免费证书的续签规则,一年期的证书全部取消,现在只能申请90天有效期的免费证书。普通web站点可以通过宝塔面板或部署acme.sh等证书自动管理工具来实现自动化申请和部署,但是阿里云之类的CDN服务就只能通过手动或Open…

Python split()方法详解:分割字符串

Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。 注意,这里所说的方法,指的是字符串类型 str 本身所提供的&#x…

linux性能优化

文章目录 性能优化图CPU进程和cpu原理性能指标 性能优化图 CPU 进程和cpu原理 进程与线程: 进程是程序的执行实例,有自己的地址空间和系统资源。线程是进程内的执行单元,共享进程的资源。在多核系统中,使用多线程可以更好地利用多…

【四】CocosCreator-修改引擎源码

看源码的过程中,少不了得修修改改源码,做点实验。果断去找找源码在哪里,然后就可以快乐动手改源码了。 CocosCreator引擎源码主要就是js和原生C两类,分别在引擎目录的resources/engine和resources/cocos2d-x下,如图&am…

金色麦芒的2023

2023年即将过去,回首这一年,我深感自己在技术和职业生涯中取得了巨大的进步。这一年里,我不仅在技术层面有了更深入的掌握,也在个人成长和职业规划上有了更明确的方向。 首先,在技术层面,我今年最大的收获是…

Innosetup 调用c# dll 和 c# dll的函数导出

目标需求,基于现在安装包脚本。需要在用户安装和卸载成功时。进行数据记录,所以需要调用c#dll 主要涉及到的知识点 需要理解脚本的文件使用机制脚本的文件dll加载,和dll的调用c# dll的制作,和工具的使用 下面具体介绍 脚本的文件dll加载&…

【程序】USART串口通信接收数据(标准库带printf)

🌟博主领域:嵌入式领域&人工智能&软件开发 前言:本程序使用stm32f429作为主控,使用串口1,使用的是标准库程序版本。(其它主控/串口x,实现过程类似)。本程序亲测无误。 目录…

如何制作可预约的上门维修服务小程序?

上门维修服务已经成为人们日常生活中不可或缺的一部分。为了满足这一需求,我们学习如何无经验自己制作上门维修服务小程序。 首先,打开乔拓云-门店系统的后台,可以看到有很多各行各业的模版。这些模版涵盖了各种行业,包括家电维修…

9.java——(杂例)组合,代理,向上转型static,fianl,关键字(有道云笔记复制粘贴,大家整体性的把握)

组合——内部有类(心中有对象!!!)(足球 和足球运动员梅西和脚下的足球一样) has和is的区别,has是组合,是有,持有的意思;is是继承,是…

MT9201 1.2MHz,3V~24V输入高效增压白色LED驱动器 丝印B9HB

描述 MT9201是一个升压转换器,设计用于从单电池锂离子电池驱动多达7系列白色led。MT9201使用电流模式,固定频率结构来调节LED电流,它通过外部电流感测电阻器来测量。其低200mV反馈电压降低了功率损耗,提高了效率。MT9201包括欠电压…

FlinkSQL中【FULL OUTER JOIN】使用实例分析(坑)

Flink版本:flink1.14 最近有【FULL OUTER JOIN】场景的实时数据开发需求,想要的结果是,左右表来了数据都下发数据;左表存在的数据,右表进来可以关联下发(同样,右表存在的数据,左表进…

spring见解2基于注解的IOC配置

3.基于注解的IOC配置 学习基于注解的IOC配置&#xff0c;大家脑海里首先得有一个认知&#xff0c;即注解配置和xml配置要实现的功能都是一样的&#xff0c;都是要降低程序间的耦合。只是配置的形式不一样。 3.1.创建工程 3.1.1.pom.xml <?xml version"1.0" en…

C++八股学习心得.4

1.C 类 & 对象 C 在 C 语言的基础上增加了面向对象编程&#xff0c;C 支持面向对象程序设计。类是 C 的核心特性&#xff0c;通常被称为用户定义的类型。 类用于指定对象的形式&#xff0c;它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在…

图像融合论文阅读:MURF: Mutually Reinforcing Multi-Modal Image Registration and Fusion

article{xu2023murf, title{MURF: Mutually Reinforcing Multi-modal Image Registration and Fusion}, author{Xu, Han and Yuan, Jiteng and Ma, Jiayi}, journal{IEEE Transactions on Pattern Analysis and Machine Intelligence}, year{2023}, publisher{IEEE} } 论文级别…