OceanBase社区版4.x核心技术解密

这篇具有很好参考价值的文章主要介绍了OceanBase社区版4.x核心技术解密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数字化时代,各行各业的数据量呈现爆发式增长,对于海量数据价值的挖掘和应用,正成为推动创新的主要力量,与此同时,数据计算复杂度正在提升。在此背景下,对于数据处理的基石数据库而言,正面临市场变局。集中式数据库、分库分表等传统解决方案难以面对海量数据带来的挑战,性能瓶颈、分析能力不足、成本高昂等问题逐渐凸显。分布式数据库凭借数据自动分布在多个节点,连接任何一个节点均可以对集群数据进行读写的天然优势及事务强一致等特性,将成为新一代数据管理解决方案。

本文根据 GIAC 全球互联网架构大会数据库论坛《OceanBase 社区版 4.x 核心技术解密》整理,分享嘉宾为 OceanBase 技术部技术专家郑晓锋,现负责 OceanBase 华南区技术开源布道工作。本次分享以原生分布式数据库 OceanBase 为例,从架构及技术特性到社区版及生态工具,再到版本规划及未来展望,与大家探讨数据管理解决方案。

OceanBase社区版4.x核心技术解密,oceanbase

提到分布式数据库,大家自然会想到规模化场景应用。OceanBase 也是在这样的场景下诞生的:2010 年,淘宝收藏夹业务量庞大到传统关系型数据库难以支撑,进而开始做分布式存储方案, OceanBase 0.1 版本就此诞生,大家可以理解为就是一个分布式存储的架构。当时 NoSQL 比较火,很多人因此觉得数据库是不是应该把存储层做分离,我们做了之后,发现存在一些问题, 比如在 TP 场景下对时延有要求的话,关系数据库用松耦合的设计在效率上有很大的开销。

为了解决这个问题,当迭代到 OceanBase 1.0 版本的时候,我们就改造成目前的一体化架构。从 1.0 到 2.0、3.0 包括现在 4.0 版本,其实都遵循了这个架构。OceanBase 整体架构很简单,只有一个 OBServer 节点,存储引擎、SQL 引擎、事务引擎都集成在里面。在 OceanBase 有更多的外部用户之后,我们发现用户使用的数据库通常不止一种 ,比如用户在使用 MySQL 的同时也在使用 Oracle 数据库。所以在 2.0 的版本,商业化时在多租户基础上,增加了 Oracle 兼容能力。在 3.0 版本里,我们进一步增强了兼容性和产品性能。

2021 年 6 月,OceanBase 开源了 3.1 版本,而企业版最新是 3.2 版本,所以在 3.x 版本下,如果去对比社区版和企业版,性能会有差别。到了 4.0 版本,我们现在称之为单机分布式一体化架构,社区版 MySQL 模式的内核能力跟企业版是完全一样的。

OceanBase社区版4.x核心技术解密,oceanbase

OceanBase社区版4.x核心技术解密,oceanbase

为什么我们称 4.x 的版本为单机分布式一体化架构呢?有两层含义:第一层含义是指单机分布式一体化架构既能做单机部署,又能做分布式部署;第二层含义是指在 OceanBase 集群里,即使部署分布式集群,如果租户只用了单机的资源,我们也认为该租户是单机形态。在这个过程中,单机和分布式的形态可以随意转化。

OceanBase 的灵活部署,除了单机形态与分布式形态外,还支持主备库部署。在 4.1 版本里面,OceanBase 主备库是基于 OSS 或者 NFS 归档日志传输做同步,类似 MySQL 主备库。相较于分布式数据库来说,主备库的形态还是会有 RPO≠0 的数据丢失,三副本部署可以更好地满足用户高可用和高扩展的需求。在更大规模的业务场景下,OceanBase 多租户能力帮助集群管理更轻松。举个例子,一个公司如果有上万台服务器,而 DBA 可能只有十几个,一个人如何管理上千个数据库实例,规模化运维场景下人力终有限。OceanBase 通过集群的多租户能力,可以将很多 MySQL 实例,集成到 OceanBase 集群里面,大大降低管理实例的数量。

在整个过程当中,我们看到 OceanBase 部署形态,都是适应企业业务发展的,不用为不需要的特性买单。

OceanBase社区版4.x核心技术解密,oceanbase

OceanBase社区版4.x核心技术解密,oceanbase

OceanBase 自研一体化架构兼容经典模式,实现了单机和分布式,TP 和 AP 的融合。得益于单机分布式一体化架构与原生分布式的特性,OceanBase 兼容经典模式,实现了 TP 和 AP 的融合,并通过全量数据校验真正实现了数据强一致、数据不丢失,高可用,平滑扩展无感知。

从架构层面来讲,OceanBase 使用普通服务器和数据中心网络组成的 Shared-Nothing 集群部署, 无需基于专用网络环境的 SAN 存储设备。集群原生自动管理计算资源和存储资源的分配和动态资源均衡。支持弹性水平或垂直扩缩容,读写性能可线性扩展。所有服务节点都支持 SQL 计算和数据存储,每个节点自主管理所服务的分区数据。整个集群只有一种数据库服务进程,无外部服务依赖,运维管理简单。对外提供统一的数据库服务,支持 ACID 事务和全局索引,对应用开发来说与单机无异。OceanBase 可以灵活的基于用户基础设施,支持同城三中心、两地三中心、三地五中心等多种架构。

从特性层面而言,下面分别从原生分布式、扩缩容、单机性能、HTAP、低成本、多租户介绍技术原理。

  • 原生分布式。众所周知,分布式数据库最基本的能力包括高扩展性、高可用性。对于高扩展性,OceanBase 分布式协议采用 Paxos,利用 OceanBase 集群原生的能力可以很方便地做横向、纵向扩容,提升资源利用率,节省成本;高可用方面,除了我们常说的多副本强一致,OceanBase 集群内部还会做数据副本之间的一致性校验、事务提交的一致性校验、数据落盘的校验等来保证数据的高可靠。

  • 扩缩容无感知。在增加 OBServer 机器后,集群会自动把旧节点的数据自动迁移到新的 OBServer 中,整个过程对应用是透明的。在蚂蚁内部,最大的归档库已经达到 PB 级别,利用多机拷贝,500M/S 的速度去迁移 TB 级别的节点只需几个小时。或许大家对此没什么感觉,那么以双十一为例,历年双十一,蚂蚁都会提前半个月在云上申请一批新的服务器,把不同用户的数据打散到更多可用区的机房里,承担双十一流量高峰。迁移过程中,先拷贝只读副本,最后再做 leader 秒级切换,等双十一高峰过后再回收资源,这就是 OceanBase 极致弹性的扩缩容能力。

  • 单机性能相当于单机数据库。一般来说,分布式数据库在保证水平扩展能力时,往往会牺牲单机性能。然而,在 OLTP 业务中,单个事务的处理时延增加往往是不可接受的。这导致在许多场景下,单机数据库替换为某些分布式数据库后,即使业务性能指标不增加,也需要许多台分布式数据库节点才能支撑原有业务规模,导致成本不降反升。

OceanBase 的单机分布式一体化架构,在单机部署时,性能与单机数据库相当,甚至比某些流行的开源单机数据库的性能更好。

  • 当三机三副本部署时,相同的性能同时提供比传统主备库更好的高可用能力。

  • 当节点机器规格提升时,提供了线性的垂直扩展性。

  • 当每个 Zone 部署多节点时,提供了线性的水平扩展性。

特别在以下三种情况,OceanBase 的查询和事务处理没有多机访问的开销:

  • 当 SQL 语句只涉及单机内的分区时,数据读写无需通过网络。

  • 当事务只涉及单机内的分区时,事务提交没有分布式提交协议的开销。

  • 当事务只涉及单机内的分区时,基于多版本并发控制的一致性快照读取无需远程访问全局时间戳服务。

单机分布式一体化架构,让 OceanBase 数据库能够适应从个人小站点到银行核心系统和巨型电商网站等各种规模的业务,用一个数据库产品伴随客户业务的成长。

具体而言,在分布式数据库 OLTP 应用场景下,单机读写能占到 80%,跨机读写约占到 20%。我们做单机分布式一体化的目标是把原来 80% 单机事务的性能支撑好,再针对另外 20% 跨机事务做性能优化。OceanBase 3.x 版本会对数据做预分区,每个分区一个日志流,日志流个数越多,消耗的 CPU 和内存也会更多。在分布式场景下,事务的原子性、持久性会靠多条日志流来共同保障,比如分布式事务的两阶段提交、Paxos 一致性协议等,系统开销相对单机的单条日志流会增多。

而在 OceanBase 4.x 版本,我们把多条日志流合并为一条日志流,极大降低了系统负载。虽然我们做了日志流的合并,但扩缩容的时候,集群会自动把数据迁移到另一个日志流里面,做数据的负载均衡,整个迁移动作都由底层自动完成,对应用透明。

除了我刚刚提到的合并日志流以外,也有一些其他方式来优化 OceanBase 的单机性能,比如说减少系统租户的开销,提供单机内并行的能力,内存中按需来加载元数据等等。我们对比了 OceanBase 和 MySQL 的单机性能,可以看到在 32C 的规格下,OceanBase 表现明显优于 MySQL。

OceanBase社区版4.x核心技术解密,oceanbase

另一个测试体现 OceanBase 良好的垂直扩展性,可以看到在 CPU 资源翻倍的情况下,OceanBase 单机性能 Sysbench 压测 的 QPS 基本上也是成倍增长的,能充分利用上添加的硬件资源。

OceanBase社区版4.x核心技术解密,oceanbase

  • HTAP,TP 与 AP 融合。企业级应用的业务场景通常可以分为两个类别:联机交易和实时分析,我们通常称为 OLTP 和 OLAP 的业务应用。大型企业往往会选择多款数据库产品分别支持 OLTP 和 OLAP 类的应用场景。这种组合式的解决方案需要数据在不同系统间进行流转,数据同步过程带来时间延迟和数据不一致的风险,多个不同的系统产生冗余数据,推高成本开销,往往会限制企业在激烈的市场竞争中快速调整业务。

针对轻量级实时分析的场景,我们希望 OceanBase 能同时支撑 TP 和 AP 业务需求。OceanBase 集群通常有三个副本,默认读写强一致性在主副本中操作,TP、AP 的需求实际上都在一份数据里完成。另外,在单机分布式一体化架构下,用户也可以做些灵活的设置以应对实际业务场景,比如读写分离配置。有个用户的实际案例,从 MySQL 分库分表的方案迁移到 OceanBase 集群,在 TCO(数据库总拥有成本)降低 35% 的情况下,AP 能力反而提升了 30%,这足以证明目前 OceanBase HTAP 的能力还是可以的。

  • 低成本,高压缩率。数据压缩是降低海量数据存储空间占用的关键手段。OceanBase 高压缩比的分布式存储引擎, 摒弃了传统数据库的定长数据块存储, 采用基于 LSM-Tree 的存储架构和自适应压缩技术,创造性地解决了传统数据库无法平衡“性能”和“压缩比”的难题,并基于数据日志分离方法的分布式存储技术,进一步降低存储成本,实现了高性能和低存储成本。基于 LSM-Tree 的存储引擎,利用编码压缩极大降低存储成本。

OceanBase 如何做到低成本?从节省机器资源与存储资源开始。基于以往的用户实践经验来看,在规模化场景下,比如从 MySQL 迁移到 OceanBase 中,同等规格的机器数据能减少;另外,基于 OceanBase 的存储引擎架构,底层使用行列混存方式组织数据,从 MySQL 迁移到 OceanBase 4.x 版本单副本的存储数据量对比一般在 1 : 5,当然,根据实际用户数据的特征,这个存储的比例会有所增减。

  • 多租户,资源隔离。数据库池化管理是云时代实现资源精细化管理的重要手段。OceanBase天然是多租户架构,在一个集群中同时运行多个数据库租户,每个租户可以视为一个独立的数据库服务,租户间数据和资源互相隔离,并且在集群内统一调度。支持在创建租户时选择不同的兼容模式,每个租户可单独配置数据副本数量、副本类型、存储位置及计算资源等。数据库集群整合平台化,多租户整合应用数据库,可在线扩展,在线调整配置,更好地帮助业务实现运维工作自动化。

两个月前,我们发布了OceanBase 4.1 的版本,这个版本提供了很多新的能力。

  • 第一个是功能性的需求,新增旁路导入功能,提升我们大数据批量的导入速度;开放了 OBKV,多模数据类型,如 GIS,以及 MySQL 8.0 兼容的强化。

  • 第二个是稳定性,主要是主备库的功能。4.1 的主备库是基于 OSS、NFS 来做的,未来我们也会做基于网络传输的主备库模式。

  • 第三个是易用性,4.1 我们集成了白屏化安装的工具,可以去部署轻量级的 OCP express,包括一键安装 OceanBase 集群。

  • 第四个是性能提升,4.1 版本相对于 4.0 版本,TP 性能在4C场景下提升 40%,AP 性能提升 15%。

OceanBase社区版4.x核心技术解密,oceanbase

OceanBase社区版4.x核心技术解密,oceanbase

此外,OceanBase 会与更多生态上下游伙伴合作,为用户从数据库替换前、迁移中和使用后的不同阶段提供全方位产品化提供便捷服务。在 OceanBase 社区生态工具中,大家使用最多的主要是 ODC(开发者工具)、OMS(数据迁移工具)、OCP(运维管理工具)。我们还做了轻量级的社区版 OCP express,在今年年初已经开源,开放了 API 接口。部署服务后,可以通过开放的 API 接口对接已经在使用的数据管理平台,提高运维效率,助力业务稳定增长。

OceanBase 社区版开源以后,4.x 版本 MySQL 模式社区版跟企业版能力完全拉齐。虽然 4.x 版本相对于 3.x 版本性能提升非常明显,但是在内核方面我们还是希望持续去优化。TP 场景下,我们会继续向小规格发力,希望给用户的体感就是,用单机的 OceanBase 实例比 MySQL 单机明显跑得更快,希望 OceanBase 能够为用户从小规格到大集群保驾护航。AP 的场景下,我们也会持续去补足功能性的需求,比如冷热分离、只读外表的能力,适应用户更多业务场景。

希望 OceanBase 数据库能够助力更多企业突破业务瓶颈,也希望越来越多的用户可以参与到OceanBase 社区共建中来,与 OceanBase 一起成长。文章来源地址https://www.toymoban.com/news/detail-694557.html

到了这里,关于OceanBase社区版4.x核心技术解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实力认证!OceanBase获“鼎信杯”优秀技术支撑奖

    6 月 30 日,2023 “鼎信杯”信息技术发展论坛在京隆重举办第二届“鼎信杯”大赛颁奖典礼。OceanBase 凭借完全自主研发的原生分布式数据库,以及丰富的核心系统国产数据库升级案例,斩获“优秀技术支撑奖”。 论坛上,国内首个基于在线交易风控场景的 HTAP 数据库基准——

    2024年02月10日
    浏览(45)
  • 【实战】OceanBase之OMS迁移Oracle至oceanbase

    背景 最近公司因为需要做Oracle2OceanBase的数据迁移后做测试,但是数据接近2T,对于超大数据表的迁移使用ETL工具,效率太慢了。综合考虑使用OMS,以下是做数据迁移的具体步骤,给大家提供一些借鉴。 把源端和目标端添加进去,源断是Oracle_ods,目标端是oceanbase_ods 选择好源

    2024年02月08日
    浏览(36)
  • 【oceanbase】centos7/kylinv10部署oceanbase(x86版本)

    1. 修改系统​ vim /etc/sysctl.conf fs.file-max = 102400 net.nf_conntrack_max = 1024000 net.netfilter.nf_conntrack_max = 1024000 2. 修改 ulimit 的 open file,系统默认的 ulimit 对文件打开数量的限制是 1024 vim /etc/security/limits.conf # 加入以下配置,重启即可生效 * hard nofile 102400 * soft nofile 102400 3. 资源下载: o

    2024年02月07日
    浏览(46)
  • OceanBase—01(入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式)

    1.1.1 安装前提 安装了docker Linux下安装docker以及docker安装Oracle19c的全部详细过程及各种问题解决. 1.1.2 参考 参考官网: 使用 Docker 部署 OceanBase 数据库. 提示:这是安装之后的操作,需要的话可以,安装之后可以跳到这里看修改密码!!! 安装后默认密码为空,可以修改也可以

    2024年02月09日
    浏览(43)
  • 「OceanBase 4.1 体验」OceanBase:解读领先的分布式数据库系统,功能与体验全解析

    本文旨在介绍 OceanBase 4.1 版本的特点、更新内容和初体验,帮助读者了解和掌握这个开源分布式关系型数据库管理系统。如果你对大规模数据存储和处理的挑战感兴趣,或者正在寻找一种满足互联网领域高并发、高可靠性和高扩展性要求的数据库解决方案,本文将为你提供有

    2024年02月05日
    浏览(50)
  • OceanBase架构概览

    了解一个系统或软件,比较好的一种方式是了解其架构,下图是官网上的架构图,基于V 4.2.1版本 OceanBase 使用通用服务器硬件,依赖本地存储,分布式部署在多个服务器上,每个服务器都是对等的,数据库内的 SQL 执行引擎具有分布式执行能力,每台服务器上运行一个observe

    2024年01月17日
    浏览(35)
  • OceanBase集群扩缩容

    ​ OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎,天然支持多租户,租户间资源、数据隔离,集群运行的最小资源单元是Unit,每个租户在每个节点上只会运行一个Unit。 先看看集群整体架构图,下面集群的

    2024年01月21日
    浏览(42)
  • OceanBase集群部署

    我认为学习一个中间件比较好的方式是,先了解它的架构和运行原理,然后动手部署一遍,加深对它的了解,再使用它,最后进行总结和分享 本篇介绍OceanBase部署前提条件和集群部署 1.使用开源免费的社区版,企业版需要付费 社区版目前最新是V4.2.1_CE_BP3,它们之间的差异请

    2024年01月19日
    浏览(48)
  • OceanBase写入限速源码解读

    OceanBase中的写入限速机制旨在控制系统中写入操作(一般写入操作包括插入、更新和删除等)的速率,目的是为了提高数据库系统的稳定性。本文主要通过以下2个参数来解释写入限速的实现机制。 **1.**writing_throttling_trigger_percentage:设置写入速度的阈值百分比。当内存使用达

    2024年02月03日
    浏览(32)
  • OceanBase使用规范

    降低故障率和维护成本 所有使用OceanBase的数据库 关于分区表创建时的注意事项。 。 单表行数可能超过10亿行或者单表容量超过200GB,推荐进行创建分区表。 。如果预计三年后的数据量根本达不到这个级别,请不要在创建表时使用分区表。 分区表在表创建的时候需要指定,后续不

    2024年01月24日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包