@开源爱好者,字节跳动这项技术,正式宣布开源了
告诉大家一个好消息,字节跳动的云原生数据仓库 ByConity 正式宣布开源了。
ByConity 是一个云原生数据仓库,由字节跳动数据平台团队在国际知名开源数据库管理系统 ClickHouse 社区版本基础上开发。
早期,字节跳动的数据存储使用的是 ClickHouse 的开源版本。但由于业务体量大、业务场景复杂,数据平台团队对此进行了大量的深度优化和自研改进,用以支撑字节跳动业务中各类与数据相关的功能模块,现在正式宣布开源,回馈社区。此前,字节跳动还发布过云原生数据仓库的商业化版本 ByteHouse。
ByConity 开源之前,字节跳动数据平台团队也曾考虑将自研修改合并回 ClickHouse 社区,与 ClickHouse 核心研发团队、ClickHouse 创业公司负责人沟通后,得到的反馈是架构差异过大、合并难度和代价大、无法联合开发。按照 ClickHouse 社区给到的建议,数据平台团队决定独立开源。
ByConity 具有读写分离、弹性扩缩容、租户资源隔离和数据读写的强一致性等特点,其计算-存储分离的架构,结合主流的 OLAP 引擎优化,确保了优异的读写性能。
今年 1 月,ByConity Beta 版本发布后,得到了来自华为、电子云、展心展力、天翼云、唯品会、传音控股等十几家企业开发者的支持,他们帮助 ByConity 在各自的场景下进行了测试与验证,并反馈出不错的效果。
话不多说,先上 GitHub 地址:
GitHub - ByConity/ByConity: ByConity is an open source cloud-native data warehouse
ByConity:三层架构的数据仓库
ByConity 的整体架构分为三层,包括服务接入层,计算层和数据存储层。
ByConity 三层技术架构图
服务接入层:
接受用户的查询,由一个或者多个 server 构成,并支持水平扩张,充当的是响应用户服务和协调调度的角色。除了用户作业之外,在 ByConity 里还有后台任务,例如 compaction/gc 等等,这些后台任务由 Daemon manager 管理,调度到相应的 server 进行执行。
计算层:
由一个或者多个计算组(Virutual Warehouwe,VW)构成,不同的租户可以使用不同的计算组实现物理资源隔离。资源管理器负责对计算资源进行统一的管理和调度,能够收集各个计算组的性能数据、资源使用量,为查询、写入和后台任务动态分配资源并进行动态扩缩容,提高资源使用率。
数据存储层:
用于存放用户数据。ByConity 的元数据和数据都实现了存储计算分离,元数据存储在分布式 key-value store 里,数据存储在分布式文件系统或者对象存储里。
ByConity 内部组件交互图
目前,ByConity 支持单机 Docker、K8s 集群部署、物理机部署和源代码编译四种获取和部署模式。
五年时间,从 ClickHouse 到 ByConity
2018 年,字节跳动开始在内部使用 ClickHouse,因为业务发展迅速、用户体量大,数据规模变得越来越巨大。
由于 ClickHouse 是 Shared-Nothing 架构,每个节点相互独立,不会共享存储资源等,因而计算资源和存储资源紧耦合,这使它在字节跳动的应用过程中产生了一些不便之处。
比如扩缩容的成本比较高,且会涉及到数据迁移,不能实时按需扩缩容,导致资源浪费;比如多租户在共享集群环境相互影响,同时由于读写在同一个节点完成,导致读写相互影响;此外,ClickHouse 在复杂查询上例如多表 Join 等操作的性能支持并不是很好。
因此,字节跳动于 2020 年在内部启动了 ByConity 项目,在原有的 ClickHouse 架构基础上进行了升级,将原本计算和存储分别在每个节点本地管理的架构,转换为在分布式存储上统一管理整个集群内所有数据的架构,使得每个计算节点成为一个无状态的单纯计算节点,并利用分布式存储的扩展能力和计算节点的无状态特性实现动态的扩缩容。
这种改进使得升级后的架构具有以下重要特性:
- 资源隔离:对不同的租户进行资源的隔离,租户之间不会受到相互影响;
- 读写分离:计算资源和存储资源解耦,确保读操作和写操作不会相互影响;
- 弹性扩缩容:支持弹性的扩缩容,能够实时、按需的对计算资源进行扩缩容,保证资源的高效利用;
- 数据强一致:数据读写的强一致性,确保数据始终是最新的,读写之间没有不一致;
- 高性能:采用了主流的 OLAP 引擎优化,例如列存、向量化执行、MPP 执行、查询优化等提供优异的读写性能。
随着对自研表引擎、查询优化器、存储计算架构的优化与自研改造,字节跳动内部有越来越多的场景逐步使用新架构,也在不同的场景中进行了验证与优化,慢慢沉淀出了一个云原生版本的数仓 ByConity。
加入字节跳动,一起做开源
字节跳动还将继续增强 ByConity 的功能、性能和易用性,其中开发新的存储引擎、支持更多的数据类型和与其他数据管理工具的集成是重点关注的领域。
具体包含以下几个方向:
- 性能提升:使用索引进行加速,包含 Skip-index 优化、新的 Zorder-index 和倒排索引等支持、外表索引的构建和加速、以及索引的自动推荐和转换;查询优化器的持续优化;分布式缓存机制等。
- 稳定性提升:支持更多维度的资源隔离,提供更好多租户能力;丰富 Metrics,提升可观察性和问题诊断能力。
- 企业级特性增强:实现更细粒度权限控制;完善数据安全性相关的功能(备份、恢复和数据加密);持续探索数据的深度压缩,节约存储成本。
- 生态兼容性提升:支持 S3、TOS 等对象存储;提升生态兼容性方便集成;支持数据湖联邦查询如 Hudi、Iceberg等。
除开源版本之外,ByConity 产研团队还同时支持商业化版本 ByteHouse 和字节内部产品线,ByConity 即为 ByteHouse 的内核。团队相关负责人表示,开源版和商业版融合度非常高,未来 ByConity 会朝更加开放的引擎开发模式发展,后续对 ByteHouse 的改动会基于 ByConity 源代码用开源的方式来开发,开源先行,同步发展。
相关文章:

@开源爱好者,字节跳动这项技术,正式宣布开源了
告诉大家一个好消息,字节跳动的云原生数据仓库 ByConity 正式宣布开源了。 ByConity 是一个云原生数据仓库,由字节跳动数据平台团队在国际知名开源数据库管理系统 ClickHouse 社区版本基础上开发。 早期,字节跳动的数据存储使用的是 ClickHou…...

React学习笔记八-受控与非受控组件
此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享。此为第八篇,主要介绍非受控组件与受控组件。 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件案例 2.1受控案例总结 1.非受控组件 1.1表单提…...

gcc编译
一、GCC简介 GCC(GNU Compiler Collection)是 GNU 工具链的主要组成部分,是一套以 GPL 和 LGPL 许可证发布的程序语言编译器自由软件,由 Richard Stallman 于 1985 年开始开发。 GCC 原名为 GNU C语言编译器,因为它原本…...

华为云服务器租用费用及CPU性能(1核2G/2核4G/4核8G)
华为云HECS云服务器即云耀云服务器,类似于阿里云和腾讯云的轻量应用服务器,HECS云服务器1核2G配置39.02元一年、2核4G配置99元一年、4核8G配置69.94元3个月,华为云百科分享华为云HECS云服务器租用费用及CPU性能详解: 目录 华为云…...

Redis---事务管道
目录 一、Redis的事务是什么? 1.1 Redis和关系型数据库事务的区别 二、怎么玩Redis事务? 2.1 正常执行: 2.2 放弃事务 2.3 全体连坐 2.4 冤头债主 2.5 watch监控 三、管道 3.1 为什么会引入管道这个概念呢?我们首先来看一…...
Python的内置数据类型(通过故事来学习)
有一天,小李在学习Python语言时,听到了一个关于内置数据类型的故事。 Python内置了很多数据类型,比如整数、浮点数、字符串、布尔值等等。这些数据类型可以帮助我们更方便地处理数据,提高代码的效率。 小李很好奇,就…...

继瑞吉外卖后的又一个项目——SpringBoot+Vue的前后端博客系统
文章目录 博客系统项目介绍前言项目演示前台演示后台演示 组织结构后端组织结构前端组织结构 技术选型前端技术后端技术架构图系统架构图业务架构图 模块介绍前端模块后端模块 环境搭建开发工具开发环境项目运行 未完待续结语 博客系统项目介绍 前言 本项目已开源在Gitee 后端…...

2023暑期实习历程总结
一.前言 Hello 大家好久不见,已经三个月左右没有更新了,那我这三个月在干什么呢?自2023年3月中旬开始到现在五月底这期间接近三个月的时间里,我一直在进行2023暑期实习的投递和面试。这期间投递了包括各大中厂(阿里&am…...

UART-STM32
UART-STM32 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 第一步,开启时钟,把需要用的USART和GPIO的时钟打开 第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入 第三步,配置USART,直接使…...
jetson nano csi摄像头 tensorrt 运行yolov8检测
jetson nano csi摄像头 tensorrt 运行yolov8检测 基于原始onnx模型的tensorrt预测1. 在本地电脑训练环境下将onnx模型导出yolov8 导出onnx 模型2. 在jetson nano下 转换到tensorrt模型配置好环境后 使用trtexec 生成engine3. 使用python3 tensorrt 读取csi摄像头进行预测修改on…...

提升国际品牌影响力:小企业海外网红营销实战指南
在当今数字化时代,小企业们越来越意识到海外市场的巨大潜力。与此同时,海外网红的崛起也为小企业提供了一个独特的机会,通过与他们合作,迅速拓展国际市场并吸引更多目标受众的关注。然而,对于许多小企业来说࿰…...
从零开始的力扣刷题记录-第三十九天
力扣每日四题 228. 汇总区间-简单1431. 拥有最多糖果的孩子-简单637. 二叉树的层平均值-简单49. 字母异位词分组-中等总结 228. 汇总区间-简单 题目描述: 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也…...

PDPS教程:机器人工作站导出为JT格式文件操作方法
目录 功能简介 功能注意事项 导出JT格式文件操作 导出JT格式文件查看 功能简介 PDPS软件不仅能够从外部导入JT格式的模型文件,还能够将创建好的机器人工作站/生产线导出为JT格式的模型文件。这个能够导出JT格式文件的功能就是“Export JT”命令。 使用“Expor…...
【面试】为什么Mysql用B+树做索引而不用B-树或红黑树
文章目录 前言一、B树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。二、那么Mysql如何衡量查询效率呢?三、B树相对于红黑树的区别 前言 原因如下: B树能显著减少IO次数,提高效率B树的查询…...
教你如何选择真正有用的防关联指纹浏览器
从事亚马逊、eBay、Shopify等电商平台的卖家都知道,如果我们需要在这些平台上经营多个店铺,需要使用多个账号为店铺进行评价,在Facebook和Instagram上做SEO和广告,通常也需要使用一个防关联指纹浏览器。 防关联指纹浏览器主要解决…...

某程序员哀叹:月薪四五万,却每天极度焦虑痛苦,已有生理性不适,又不敢裸辞,该怎么办?
高薪能买来快乐吗? 来看看这位程序员的哀叹: 实在是扛不住了,每天都在极度焦虑和痛苦中度过,早上起来要挣扎着做心理建设去上班,已经产生生理性的头晕恶心食欲不振。有工作本身的原因,更多是自己心态的问…...

不愧是腾讯出来的,太厉害了...
前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…...

2023年上半年系统集成项目管理工程师上午真题及答案解析
1.在( )领域我国远末达到世界先进水平,需要发挥新型国家体制优势,集中政府和市场两方面的力量全力发展。 A.卫星导航 B.航天 C.集成电路 D.高铁 2.ChatGPT 于2022年11月30日发布,他是人工智能驱动( )。 …...

psd文件丢失了怎么恢复?分享原因及对应恢复方法
PSD文件在设计行业中非常重要。但是,不幸的是,有时这些文件可能会因多种原因而丢失。那么在未备份PSD文件的情况下,PSD文件丢失了怎么恢复呢?如果您遇到了这种问题,不要惊慌,在本篇文章中,我们将…...

【Netty】 工作原理详解(十一)
文章目录 前言一、Netty 模型二、代码示例2.1、引入Maven依赖2.2、服务端的管道处理器2.3、服务端主程序2.4、客户端管道处理器2.5、客户端主程序2.6、测试运行 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...