ocean base 4.0——从分布式到单机,从单机到分布式

近年来,国产开源数据库如雨后春笋,遍地开花。据某技术平台不完全统计,国产开源数据库已经达到200多个。对于这些数据库的名字,即使作为多年的数据库从业者,很多都是第一次听说。在这个竞争激烈的数据库行业,想要长久占据一席之地,顺应市场发展,打磨自己的产品才是硬道理。

国产开源数据库发展需要适应市场变化

业内有句老话叫“市场永远是对的”,大概意思就是当前的市场显示了所有的影响因素,一切都要遵循当前市场的发展规律。纵观国际市场数据库的发展,曾经的数据库老大Oracle因为云计算布局较晚,已经被亚马逊和微软甩在后面很久了,Db2这个老牌数据库也几乎没落了。云仓雪花、云数据库CoackRoachDB等产品因为顺应了云计算的发展而一骑绝尘。在国内数据库市场,从早期集中式数据库需求旺盛的四朵金花时代,步入了集中式和分布式数据库势均力敌的时代。在分布式数据库领域,OceanBase不断改变自己,以适应市场的发展。* *从早期简单的淘宝收藏夹服务,到SQL和ACID的支持,再到后来的多租户细粒度资源管控,现在又推出了单机分布式集成版。在追求极致服务市场的道路上,OceanBase从未止步。* *从整个市场来看,有能力和勇气频繁进行大版本改动的数据库是很少的。

众所周知,OceanBase社区版于2021年6月1日宣布开源,开放超过300万行核心代码,构建开源生态。开源不仅意味着把自研的数据库拿出来给大家用,也意味着OceanBase不能再像以前那样只专注于金融业务场景,各种各样的场景和需求都迎面而来。开源后的短短一年多时间里,OceanBase不断“挑战自我”,打磨内核能力,修复外围bug。从国产开源数据库排行榜可以看出,市场对OceanBase也给予了积极的反馈。

在今年的云起大会上,发布了OceanBase社区4.0版本,不仅拥有众多抢眼的功能,还刷新了国产开源数据库的架构,引起业界热议。先说OceanBase从分布式到单机再从单机到分布式的变化,同时遵循市场发展规律。

从分布式到单机,自我能力突破

OceanBase从诞生之日起就和其他同类产品一样,走的是分布式NewSQL的道路,比如CockRoachDB,YugaByteDB等。从场景来看,分布式NewSQL是为了解决单机数据库在数据达到一定量后性能急剧下降的痛点。当然,随着国内数据库的发展如火如荼,它往往被作为替代Oracle的首选。从实际应用效果来看,分布式数据库对金融、运营商等核心业务的替代也有重要作用。与集中式数据库相比,在性能、数据承载能力、核心业务的RTO和RPO保障等方面,结果令人满意。

分布式资源的自然博弈

任何事情都有两面性。分布式国产开源数据库尽力保证高可用性和高性能,但也引入了一些问题:

●分布式架构会增加事务成本,跨节点事务可能涉及多节点加入、两阶段事务提交等。

●代理层的引入,多了一层网络转发,增加了网络成本。

● Paxos协议至少制作了三份数据,存储空间层增加。

为了尽可能减轻这些缺陷带来的痛苦,通常在实际生产过程中通过改进硬件配置来解决,比如引入I/O性能更高的SSD硬盘,在节点服务器之间使用带宽更高的万兆网络,在服务器中配置更多的内存来缓存更多的数据。过多的硬件投入对于很多中小企业在业务发展初期来说,无疑是一个巨大的负担。很多时候,在客户选择的过程中,这些都会影响最终的决策,尤其是在成本方面。笔者曾不止一次向朋友和客户推荐分布式数据库,但都因为公司能提供给数据库的资源有限而放弃了。

笔者简单对比了一下sysbench在PostgreSQL 11和YugaByteDB小数据量下的性能。从下面的压力测量结果指标可以看出,引入了分布式组件的YugaByteDB,能力只有PostgreSQL的四分之一。当数据量不够大时,一些分布式特性的引入会增加整体的资源消耗,降低性能。

海洋基地的自我突破

个人认为OceanBase在架构设计之初也考虑了上述中小企业资源有限的场景。从图3中常见的部署框架可以看出,应用下的国产开源数据库层由两部分组成:无状态OB代理和有状态OB服务器。做过ocean base 3 . x版手动部署的朋友应该印象颇深。每个OB服务器都是一个独立的服务,可以直接接受应用的添加、删除和检查。不考虑分布式特性,OB Server服务器也可以支持简单的单机服务。但是在实际的生产和使用过程中,OceanBase 3.x并不建议你采用单机部署,因为3.x版本还没有官方支持单机部署,单机版本在性能上不如MySQL有优势。

从用户的实际场景来看,monolithic 国产开源数据库 market已经存在很久了。然后让OceanBase单机可用,甚至简单易用。从OceanBase 3.x到OceanBase 4.x的高级调整,我看到了两个变化。

降低单机部署成本:解决用户普遍反映的资源消耗痛点,让更多人轻松上手。

提升单机运行性能:为更多有单机MySQL制作需求的用户提供更好的备选方案。

首先,为了降低单机部署的成本,OceanBase 4.0对OB服务器做了很多深入的优化,包括降低对服务器CPU、内存、磁盘空间的要求,支持4C8GB的最低规格部署配置;提供单机一体机版本部署包,支持2分钟快速拉起单机服务。这些优化带来的直观体验是,很多之前无法上手的小伙伴也可以在笔记本电脑上开发测试OceanBase。我在11月初拿到4.0版本的发布包后,也很快测试了体验。一体机部署包用起来真的很方便,资源消耗减少,我也不用担心分配了4C8GB资源却无法启动服务的问题了。

其次,为了提高单机运行性能,进而提高分布式运行性能,OceanBase做了很多改进,包括:矢量化引擎开源,可以提高复杂查询的性能,减少复杂查询的响应时间;开源编码可以进一步提高压缩比,为客户节省存储空间,也减少了分布式部署中三份拷贝造成的存储空间损失;支持租户级备份,提供更灵活的备份恢复策略;MySQL兼容性完善,逐步为替代单机MySQL做准备。

综上所述,从分布式可用到单机可用,OceanBase是一个自我突破的过程。架构的大调整也意味着官方承认3.x版本存在一些架构上的不足,无法支持单机能力的提升。还是那句话,OceanBase在追求极致服务市场的道路上从未停止。OceanBase 4.0目前单机版的性能指标已经部分超越MySQL。随着版本的迭代更新,相信OceanBase的性能优势会越来越明显,在满足中小企业市场的单机国产开源数据库需求方面会越来越有优势。

从单机到分布式,殊途同归。

纵观当前数据库行业,任何单机数据库随着客户业务和数据量的增长都会面临性能瓶颈,或者随着客户数据重要性的提升,必然会提出高可用性的要求。任何负责任的数据库解决方案都不会让客户数据在一台机器上裸奔。

下面我们来看看业内一些经典的解决方案是如何处理这些问题的。

备注:任何数据库都有许多高可用性/高性能的解决方案。本文限于作者经验,仅引用部分,不能以偏概全。所有引用仅用于本文中的特定讨论场景。

Oracle共享存储架构

Oracle这么多年一直在单片关系型数据库行业独占鳌头,一直被模仿,从未被超越。当Oracle遇到单机性能瓶颈或客户有高可用性需求时,通常采用Oracle RAC架构。如图4所示,显示了Oracle 19C的RAC集群架构图,其底层采用共享存储来存储数据文件。上层采用多台服务器,扩展计算性能。根据Oracle的官方文档,RAC集群最多支持168个节点。根据实际生产经验,集群节点数超过10个,基本没有意义。互联网上的公开信息显示,4-6个RAC节点的性能最佳。

MySQL子数据库和子表架构

受益于互联网的发展,MySQL一直稳坐国产开源数据库榜首。MySQL在处理性能瓶颈和高可用性问题时,通常采用库表分离结合binlog log日志复制的方法,如MyCAT和ShardingSphere。图5是一个ShardingSphere架构图。底部的国产开源数据库将数据分割成块,并根据Sharding-Proxy指定的规则将它们分发到不同的数据库节点(橙色)。这种轻量级的解决方案曾经是解决MySQL性能瓶颈的最佳选择。但是,正如其他技术解读文章中提到的,中间件解决方案无法充分发挥数据库本身的优势,覆盖场景往往有限。而且给用户带来了使用国产开源数据库的复杂性,体验差。

PostgreSQL Citus双层架构

Citus的建筑更有趣。Citus以扩展插件的形式对外提供分布式能力(不知道的可以查询PostgreSQL扩展架构)。它采用两层架构:协调者+工作者。小容量的数据可以直接放在协调器节点上。一旦数据量增大,可以一键将表转换为分布式表,数据存储可以分片存储到Worker节点。这种架构使用灵活,尤其是微软收购Citus之后,Citus的所有核心能力都是开源的。但是这种架构缺乏一套完整的解决方案,比如:高可用性仍然需要流复制的自配置,没有针对集群形成的集成监控运维工具。

OceaBase 4.0单机分布式集成架构

以上单机关系型数据库,以性能和高可用解决方案为目标,要么像Oracle那样注重集群性能而失去可扩展性,要么注重可扩展性而失去单机综合能力。在OceanBase 3.x阶段,作为一个高性能的HTAP分布式数据库,它提供了高性能、灵活的可扩展性、高可用性和可管理性。升级到OceanBase 4.0的单机分布式集成架构后,不仅提供了分布式能力的进一步提升,还提供了单机生产可用的能力。与3.x版本相比,OceanBase 4.0做了以下改进。随着这些能力的改进和完善,OceanBase 4.0具备了上述解决方案的优点。

●自适应日志流:从表分区到单元,降低分布式操作尤其是日志的成本。

●支持超大型交易:重新设计交易引擎,提高分布式多场景响应能力。

● RTO < 8s:全新的自动主选择协议和全面的活跃度检测机制,可以将故障场景下的系统恢复时间从30s减少到8s。

● NTP服务优化:取消NTP依赖,时钟偏差从100ms提高到2s,提高集群稳定性。

●支持全链路跟踪:OceanBase v4.0设计了一套全链路跟踪机制,可以提高全链路问题定位的效率,贯穿从业务APP >客户端驱动(JDBC,OCI)>代理>数据库节点(观察者)的全过程。

有了这些能力的加持,OceaBase 4.0的单机分布式集成架构给你带来了新的选择。当大家的数据库需求都比较小,只需要单一数据库的时候,可以从OceanBase的单一版本入手。随着业务的发展和数据量的增加,对数据库的要求也越来越高。此时,它们可以无缝升级到OceanBase集群,具有多个副本和高可用性。统一访问门户对应用程序是透明的,读写分离提高了整体性能。分布式架构支持灵活的扩展。

经过多年的市场验证,分布式数据库已经成为数据库发展的主要趋势,包括以OLTP业务见长的CockRoachDB和YugaByteDB,以OLAP业务见长的Greenplum和ClickHouse。在国产数据库领域,也有很多优秀的分布式数据库产品,在金融和互联网场景下取代和超越了Oracle等传统产品。随着OceanBase社区4.0版本的正式推出,充分发挥基于单机能力的分布式能力,其分布式集群必将带来不一样的体验。

架构升级视需求而定。

传统上,使用数据库的逻辑通常来自单一数据库。此时,如果有高可用性需求,我们将通过日志复制的方式增加热备副本(也称为主备架构)。随着数据量的增加,当单体数据库不能满足数据存储和查询的要求时,我们会采用子数据库、子表的数据切片架构,或者直接从单体数据库迁移到分布式数据库(见图8)。这种高级架构实际上是复杂且昂贵的。

显然,在过去的十几年里,这种方法已经成为解决单数据库问题的主流方式。一旦业务量达到一个数量级,领导关心的是尽快解决问题,而不是如何优雅地、低成本地完成架构升级。即使这个过程有一些波折,也是可以忍受的。但这也表明,市场需要的是一种简单、低成本的架构升级方式。

通过梳理传统的分布式数据库架构解决方案和单机分布式集成架构解决方案,本文可以感知到,如果在业务上采用单机分布式集成架构解决方案,在业务初期可以将逻辑简化为采用单机版本支持,随着数据量的增加,可以适时转换为分布式集群(见图9)。该方案不仅可以节省数据迁移的成本,降低架构的复杂度,还可以在保证业务连续性的同时提高数据库的性能。相比较而言,留给用户的就是简单。

借用OceanBase对单机分布式集成版的定位,“兼顾分布式架构的可扩展性和集中式架构的性能优势,一套架构同时支持事务处理和分析处理的混合负载。它在独立和分布式部署场景中都具有相同的事务ACID功能。”不得不说,这种全新的架构给你带来了数据库使用的新思路,这种架构演进也是符合市场需求和发展规律的。

国产开源数据库的讲解相关推荐

  1. 集结号!四大国产开源数据库共聚申城,共话未来技术演进

    上海的小伙伴们 Friends in Shanghai 集 结 了 活动介绍 随着数字化转型浪潮的向前涌进,迎接DT时代,激活数据潜能,促进数字化转型,是大时代的召唤.数据库作为DT时代的核心支撑,是 ...

  2. 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践

    导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高性 ...

  3. 【云原生】-国产开源数据库openGauss容器部署

  4. 数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开

    7月27日,2022开放原子全球开源峰会数据库分论坛在北京成功举办.论坛以"数字经济时代的开源数据库创新"为主题,围绕数据库前沿技术.数据库开源生态建设.数据库应用实践等方面开展技 ...

  5. 10月29日晚8点,国产开源物联网操作系统TencentOS tiny线上直播开讲

    10月15日,腾讯正式宣布,将旗下两大开源项目-轻量级物联网实时操作系统TencentOS tiny和企业级容器编排引擎TKEStack(均待更名)捐赠给开放原子开源基金会. 未来这两个项目将在基金会 ...

  6. 疫情下开源数据库逆势增长,新基建下国产数据库迎机遇

    2020年5月DB-Engines 数据库流行度排行大家都看了吗? 虽然 Top 10 与上月没有任何变化,但仔细观察本月的排行榜,Oracle 较上月几乎持平,仅微涨 0.02 分:相较而言,MyS ...

  7. 2020年5月数据库流行度排行:疫情下开源数据库逆势增长,新基建下国产数据库迎机遇...

    关注我们,数据库行业精彩不错过! 2020年5月号 DB-Engines 数据库流行度排行新鲜出炉.虽然 Top 10 与上月没有任何变化,但仔细观察本月的排行榜,Oracle 较上月几乎持平,仅微涨 ...

  8. NoSQL数据库之国产开源产品:SequoiaDB 分析前言

    随着互联网技术的发展,面对海量数据的存储和分析,传统关系型数据库已经无法满足,由此衍生出一种与关系型数据库区别开的数据库NoSQL(Not Only SQL). 国外做的比较成熟的NoSQL有Mong ...

  9. 国产、自研、开源数据库的选型与应用 DAMS 2020

    今天为杂货铺的读者带来一份福利,扫描文末二维码,可限时免费报名主会场,以及有会报名全日门票. 5年前,大数据浪潮的来袭唤起了国内企业对数据作为核心资产的新认知,为了推动国内数据管理加速发展,DAMS中 ...

最新文章

  1. 如何准备数学建模竞赛!
  2. [转帖]一位“鬼佬”总经理的管理艺术
  3. A generic error occurred in GDI+的解决方案
  4. OpenCV学习(33) 轮廓的特征矩Moment
  5. python中字符串的制表符为_零基础学python_03_字符串(拼接+换行+制表符)
  6. latex中report目录_在 LaTeX 中将不编号的章节列入目录
  7. 第五章应用系统安全基础备考要点及真题分布
  8. 使用内部类或者外部类
  9. 产品经理日常工作之PRD文档
  10. 论文解读 | CenterNet:Keypoint Triplets for Object Detection
  11. Deep Unordered Composition Rivals Syntactic Methods for Text Classification
  12. 拉登游戏开发--在时间的积累中寻求美丽图案
  13. ASP.Net邮件模板编辑与发送邮件的完美实现
  14. zuul 里面的 prefix 和 strip-prefix 怎么使用
  15. 微软认证一览表(附图)
  16. 佛教禅理——对待命运
  17. cesium中实现鼠标拖动实体功能
  18. matlab光盘映像文件可以删除吗_Mathworks Matlab R2011a 下载 光盘镜像下载
  19. 使用灰度图作为数据集训练CNN
  20. 多功能的U盘启动盘制作工具

热门文章

  1. 三星配置服务怎么解决_三星手机笔记闪退怎么解决?三星手机好用的笔记App - 敬业签便签...
  2. Ubuntu下安装Sublime Text3 汉化以及支持中文输入(2019.7.22更新)
  3. 记录一次小项目中的重放攻击与解决方案
  4. 汉语语义消歧之 -- 词义消歧简介
  5. 机器学习算法之SVM(二)概述
  6. slimdx 安装方法
  7. DataPipeline如何实现数据质量管理
  8. 修改浏览器默认的滚动条样式
  9. 前端性能分析工具:dynaTrace Ajax Edition
  10. 口语学习大杂烩,收藏了吧,不实用你砍我