Databend 的算力可扩展性
作者:尚卓燃(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 Type | vCPUs | Compute Instances | Rows Read (Avg) | Time (Avg) | Rows Processed | Data Processed | Rows/s (Avg) | Data/s (Avg) |
|---|---|---|---|---|---|---|---|---|
| XSmall | 8 | 1 | 4 | 14.109 sec | 591.6 million | 45.18 GiB | 41.93 million | 3.20 GiB |
| XSmall | 8 | 1 | 4 | 13.676 sec | 591.6 million | 45.18 GiB | 43.26 million | 3.30 GiB |
| XSmall | 8 | 1 | 4 | 13.799 sec | 591.6 million | 45.18 GiB | 42.87 million | 3.27 GiB |
| Small | 16 | 1 | 4 | 13.241 sec | 591.6 million | 45.18 GiB | 44.68 million | 3.41 GiB |
| Small | 16 | 1 | 4 | 11.571 sec | 591.6 million | 45.18 GiB | 51.13 million | 3.90 GiB |
| Small | 16 | 1 | 4 | 11.734 sec | 591.6 million | 45.18 GiB | 50.42 million | 3.85 GiB |
| Medium | 32 | 2 | 4 | 9.392 sec | 591.6 million | 45.18 GiB | 62.99 million | 4.81 GiB |
| Medium | 32 | 2 | 4 | 8.279 sec | 591.6 million | 45.18 GiB | 71.46 million | 5.46 GiB |
| Medium | 32 | 2 | 4 | 8.341 sec | 591.6 million | 45.18 GiB | 70.93 million | 5.42 GiB |
| Large | 64 | 4 | 4 | 8.536 sec | 591.6 million | 45.18 GiB | 69.31 million | 5.29 GiB |
| Large | 64 | 4 | 4 | 7.096 sec | 591.6 million | 45.18 GiB | 83.37 million | 6.37 GiB |
| Large | 64 | 4 | 4 | 7.841 sec | 591.6 million | 45.18 GiB | 75.45 million | 5.76 GiB |
| XLarge | 128 | 8 | 4 | 7.123 sec | 591.6 million | 45.18 GiB | 83.05 million | 6.34 GiB |
| XLarge | 128 | 8 | 4 | 5.753 sec | 591.6 million | 45.18 GiB | 102.83 million | 7.85 GiB |
| XLarge | 128 | 8 | 4 | 5.767 sec | 591.6 million | 45.18 GiB | 102.59 million | 7.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
相关文章:
Databend 的算力可扩展性
作者:尚卓燃(PsiACE) 澳门科技大学在读硕士,Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer PsiACE (Chojan Shang) GitHub 对于大规模分布式数据处理系统,为了更好应对数据、流量、和复杂性的增长…...
「解析」Windows 如何优雅使用 Terminal
所谓工欲善其事必先利其器,对于开发人员 Linux可能是首选,但是在家学习的时候,我还是更喜欢使用 Windows系统,首先是稳定,其次是习惯了。当然了,我还有一台专门安装 Linux系统的小主机用于学习Linux使用&am…...
Linux第18步_安装“Ubuntu系统下的C语言编译器GCC”
Ubuntu系统没有提供C/C的编译环境,因此还需要手动安装build-essential软件包,它包含了 GNU 编辑器,GNU 调试器,和其他编译软件所必需的开发库和工具。本节用于重点介绍安装“Ubuntu系统下的C语言编译器GC&a…...
【Linux】Linux 基础命令 crontab命令
1.crontab命令 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动…...
14:00面试,14:08就出来了,问的问题过于变态了。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到10月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…...
Ubuntu envs setting
1. change the chmod of folders sudo chown -R $USER:$USER /home/anaconda3 2. torch.cuda.is_available()返回false change conda installation to pip. zai qi ta huan jing pei zhi dou mei wen ti de qing kuang xia , zai shi shi zhe ge fang fa. # CUDA 11.7 con…...
Windows 下用 C++ 调用 Python
文章目录 Part.I IntroductionChap.I InformationChap.II 预备知识 Part.II 语法Chap.I PyRun_SimpleStringChap.II C / Python 变量之间的相互转换 Part.III 实例Chap.I 文件内容Chap.II 基于 Visual Studio IDEChap.III 基于 cmakeChap.IV 运行结果 Part.IV 可能出现的问题Ch…...
九州金榜|家庭教育一招孩子不在任性
有一次和朋友一块聚餐,邻座是一位妈妈、和她大概七八岁的儿子,小男孩长得很帅气,没有像同龄人那样调皮捣乱,而是和妈妈很温馨的就餐。 看的出来一家人的素质很高,就餐过程中桌面保持的很整洁,交流声音也不…...
爬虫案列 --抖音视频批量爬取
""" 项目名称: 唯品会商品数据爬取 项目描述: 通过requests框架获取网页数据 项目环境: pycharm && python3.8 作者所属: 几许1. 对主页抓包 , 鼠标移动到视频位置视频自动播放获得视频数据包 2. 对视频数据包地址进行解析 , 复制链接 , 进行检索 3. 获…...
【React系列】React中的CSS
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. React中的css方案 1.1. react 中的 css 事实上,css 一直是 React 的痛点,也是被很多开发…...
基于Kettle开发的web版数据集成开源工具(data-integration)-应用篇
目录 📚第一章 基本流程梳理📗页面基本操作📗对应后台服务流程 📚第二章 二开思路📗前端📗后端 🔼上一集:基于Kettle开发的web版数据集成开源工具(data-integration)-介绍篇 *️⃣主…...
51单片机三种编译模式的相互关系
51单片机三种编译模式的相互关系 编译模式默认存储类型RAM使用规模变量使用特点SAMLLdata128B片内RAM使用规模CPU访问数据速度快,但存储容量较小COMPACTpdata258B片外分页RAM速度和容量介于上下两者之间LARGExdata64KB片外RAMCPU访问数据的速度较慢,但存…...
java 千帆大模型 流式返回
聊天有两个接口,第一个是获取token, 第二个是聊天接口,具体参照官方文档 下面是流式调用聊天接口,单次的,不含上下文 Value("${qianfan.apiKey}")private String apiKey;Value("${qianfan.secretKey}")private String secretKey;Value("${qianfan.to…...
全新互联网洗衣洗鞋小程序平台新模式
互联网洗衣洗鞋新模式, 全新软件升级 对接各大平台 扩大营销渠道,增加效益!...
js 对于一些脚本中对于url的一些参数获取
js 对于一些脚本中对于url的一些参数获取 获取当前浏览器的链接上的参数(不使用vue / react 等框架)仅用在一些脚本上的使用 获取当前浏览器的链接上的参数(不使用vue / react 等框架)仅用在一些脚本上的使用 const query {} const params new URLSear…...
IEDA中tomcat日志乱码解决
文章目录 乱码样式原因解决方案参考 乱码样式 原因 乱码原因是编码格式的问题,编码格式不统一,导致显示乱码。 解决方案 统一编码格式。 打开tomcat的配置文件,conf/logging.properties,进行如下修改 进入idea的安装文件中,b…...
计算机网络实验(六):三层交换机实现VLAN间路由
一、实验名称:三层交换机实现VLAN间路由 二、实验原理 2.1. VLAN基本配置 在交换网络中,为了实现对物理网络的逻辑划分,引入了VLAN(虚拟局域网)的概念。VLAN通过将不同的设备划分到不同的虚拟网络中,实现了逻辑隔离。基本配置包括在交换机上创建VLAN、将端口划分到相应…...
Flutter中showModalBottomSheet的属性介绍和使用
在Flutter中,showModalBottomSheet是一个常用的工具,用于在屏幕底部显示模态底部面板。了解其属性将帮助您更好地定制和控制底部模态框的外观和行为。 showModalBottomSheet的常用属性 1. context: 类型: BuildContext描述: 表示当前构建上下文&#…...
机器学习 -- k近邻算法
场景 我学习Python的初衷是学习人工智能,满足现有的业务场景。所以必须要看看机器学习这一块。今天看了很久,做个总结。 机器学习分为深度学习和传统机器学习 深度学习 深度学习模型通常非常复杂,包含多层神经网络,每一层都包含…...
安全测试之SSRF请求伪造
前言 SSRF漏洞是一种在未能获取服务器权限时,利用服务器漏洞,由攻击者构造请求,服务器端发起请求的安全漏洞,攻击者可以利用该漏洞诱使服务器端应用程序向攻击者选择的任意域发出HTTP请求。 很多Web应用都提供了从其他的服务器上…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
