动手点关注 干货不迷路 👆
日前,字节跳动技术社区 ByteTech 举办的第四期字节跳动技术沙龙圆满落幕,本期沙龙以《字节云数据库架构设计与实战》为主题。在沙龙中,字节跳动基础架构数据库开发工程师刘辉聪,跟大家探讨了 《字节云数据库未来方向的探索与实践》,本文根据分享整理而成。
字节云数据库概览
字节云数据库架构分为四层,示意图如下:

DBEngine 层:我们对外会提供完备的数据库,兼容全面的数据库生态,包括 Mysql、PG、ES、Mongo 等;同时我们也支持混合负载,即 HTAP。
DB-Cache 层:这一层会存储两类数据,一类是日志流,另一类是用户数据的缓存。我们在这一层引入一些新的硬件进行加速,为用户提供极致的性能体验。
DB-Store 层:这一层是低成本、跨 AZ、多格式的 DB-Store 层,用于存储用户数据。DB-Store 层是一个分布式的存储平台,它支持插件式的存储格式,比如 veDB 中的行存格式、 ByteHTAP 的行列混合格式;它也支持 Segment 级别的 PITR 特性,提高数据的可用性;它还支持压缩 和 Tail Segment 的特性,来极致降低存储成本。
Store 层:这一层是冷数据存储层,用于存储备份数据或者分层的冷数据。
Severless:目前 veDB 部署在字节内部虚拟机上,同时我们支持在火山引擎上进行容器化部署。我们希望通过当前正在探索的 Serverless ,为用户提供 pay by usage 的计费模式,提供自动 scale up 和 scale down 能力,来充分提高空闲资源的利用率。
Brian:这是数据库的“大脑”,负责提供 AI 能力。
字节云数据库架构的特点是支持三个分离,一是存储与计算的分离,二是日志和数据的分离,三是缓存与计算的分离。
A-Store For veDB 探索与实践
背景
业界的很多产品证明了 veDB 云原生数据库架构具有着强大优势,如下:
极致弹性,存储计算按需扩展,这是存储和计算分离带来的核心优势,使得云原生数据库在对外提供良好的兼容性同时提供良好的扩展性;
支持存储层多租户共享,能够极致提高存储资源利用率;
计算层超分超卖,提升计算利用率。
但是这种存储与计算分离的架构也有一定的劣势:
计算存储间延时增加;
Local: 100us VS Remote: 1-5msdryme。
存储和计算分离后,我们将存储拉到远端的分布式存储系统上,会导致计算和存储之间的延时增加。之前 MySQL 在本地访问 nvme,访问时间大概在微秒级别,但是经过网络延时后,访问时间在毫秒级别。因此我们提出一个设想,是否有一个能和本地 NVME-SSD 同样快且稳定的存储层?新硬件的持久化内存和 RDMA 的出现为上述设想提供了可能。
Persistent Memory
在过去几十年间,计算机系统已经实现了如下金字塔型存储结构。

金字塔上层是易失存储,容量小,延时低;金字塔下层是非易失存储,容量大,延时高。对于 DRAM 及以上的易失存储,CPU 可以通过 Load 和 Store 指令直接访问,响应时间大致在几十纳秒到 100 纳秒级别。对于 SSD 及以下的非易失存储, CPU 就无法直接访问,企业级 SSD 的响应时间可以达到 10 微秒到 100 微秒的级别。由此可以看出 SSD 和 DRAM 之间存在差不多 100 多倍的性能差距,在访问时延上存在一个很大的跳变&