天天看点

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

作者:悬钟Mr

什么是OceanBase❓

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

OceanBase是由蚂蚁集团、阿里巴巴完全自主研发的分布式关系型数据库,始创于2010年。

OceanBase具有数据强一致、高可用、高性能、在线扩展、高度兼容SQL标准和主流关系型数据库、低成本等特点。OceanBase至今已成功应用于支付宝全部核心业务:交易、支付、会员、账务等系统以及阿里巴巴淘宝(天猫)收藏夹、P4P广告报表等业务。除在蚂蚁集团和阿里巴巴业务系统中获广泛应用外,从2017年开始,OceanBase开始服务外部客户,客户包括南京银行、浙商银行、人保健康险等。

产品优势

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭
oceanbase数据库:好用到哭,治愈你的数据库困扰!😭
  • 高性能:OceanBase采用了读写分离的架构,把数据分为基线数据和增量数据。其中增量数据放在内存里(MemTable),基线数据放在SSD盘(SSTable)。对数据的修改都是增量数据,只写内存。所以DML是完全的内存操作,性能非常高。
oceanbase数据库:好用到哭,治愈你的数据库困扰!😭
  • 低成本:OceanBase通过数据编码压缩技术实现高压缩。数据编码是基于数据库关系表中不同字段的值域和类型信息,所产生的一系列的编码方式,它比通用的压缩算法更懂数据,从而能够实现更高的压缩效率。
oceanbase数据库:好用到哭,治愈你的数据库困扰!😭
  • 高兼容:兼容常用MySQL/ORACLE功能及MySQL/ORACLE前后台协议,业务零修改或少量修改即可从MySQL/ORACLE迁移至OceanBase。
oceanbase数据库:好用到哭,治愈你的数据库困扰!😭
  • 高可用:数据采用多副本存储,少数副本故障不影响数据可用性。通过“三地五中心”部署实现城市级故障自动无损容灾。
oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

部署方案

高可用版本

多机房部署

云数据库 OceanBase 多机房部署指将三个节点部署在三个不同可用区,实现跨可用区容灾。

每个节点均为全能型副本,其中一个主副本提供读写服务,两个备副本提供只读服务。当主副本发生故障时,备副本将会升为主副本继续提供读写服务。

对性能和多机房可用性有着更高要求的客户建议选择多机房部署方案。

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

双机房部署

云数据库 OceanBase 双机房部署:

  • 将两个节点部署在两个可用区,其中一个节点作为主副本提供读写服务,另外一个备节点可以提供只读服务。
  • 在第三个可用区部署一个日志节点,该节点仅用于日志同步,不包含数据副本,不对外提供读写服务,并且日志节点对用户不可见。

双机房部署仍具备机房级容灾能力,与多机房部署相比在性价比上有较大提升。

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

单机房部署

云数据库 OceanBase 单机房部署将所有节点位于同一可用区,具备主机级别故障容灾能力。

此外单机房部署还具备如下优点:

  • 两个全能型副本同时提供读写能力,为您提供更高性能的数据库读写服务。
  • 单机房部署的写请求无需进行跨机房同步,同机房内写请求的数据同步可以降低时延。

单机房部署的日志节点对用户不可见。

oceanbase数据库:好用到哭,治愈你的数据库困扰!😭

三种部署方案的区别

部署方案 多机房 双机房 单机房
节点个数(购买) 3 3 3
副本方案 3F 2F1L 2F1L(同机房,无机房级容灾)
全量副本数 3 2 2
日志副本数 1 1
节点个数(用户可见) 3 2 2

功能特性

分布式事务引擎

OceanBase 数据库的分布式事务引擎严格支持事务的 ACID 属性,并且在整个集群内严格支持数据强一致性,是全球唯一一家通过了标准 TPC-C 测试的原生分布式关系型数据库产品。

OceanBase 数据库通过 Paxos 协议将事务日志复制到多个数据副本来保证事务的可用性和持久性。

透明可扩展

OceanBase 数据库独创的总控服务和分区级负载均衡能力使系统具有极强的可扩展性,可以在线进行平滑扩容或缩容,并且在扩容后自动实现系统负载均衡,对应用透明,确保系统的持续运行。

此外,OceanBase 数据库支持超大规模集群(节点超过 1500 台,最大单集群数据量超过 3 PB,单表数量达到万亿行级别)动态扩展,在 TPC-C 场景中,系统扩展比可以达到 1:0.9,使用户投资的硬件成本被最大化的利用。

高可用

OceanBase 数据库采用基于无共享(Shared-Nothing)的多副本架构,让整个系统没有任何单点故障,保证系统的持续可用。支持单机、机房、城市级别的高可用和容灾,可以进行单机房、双机房、两地三中心、三地五中心部署。经过实际测试,可以做到城市级故障 RPO=0,RTO<30 秒,达到国际标准灾难恢复能力最高级别 6 级。

OceanBase 数据库还提供了基于日志复制技术的主备库特性,为客户提供更加灵活的高可用和容灾能力。主集群通过向备集群发送事务日志的方式来实现数据同步,从而确保生产集群能够在遇到数据损坏、灾难等情况下仍然可以快速恢复业务。当 OceanBase 数据库的生产集群出现计划内或者计划外的不可用情况时,主备库可以通过将某一个备集群的角色切换为主集群,从而保证系统的持续运行,最大限度地降低服务的停机时间。

另外,OceanBase 也提供基于数据块拷贝和事务日志拷贝的物理备份恢复特性作为系统高可用的基础组件。

混合事务和分析处理(Hybrid Transaction and Analytical Process,HTAP)

OceanBase 数据库独创的分布式计算引擎,能够让系统中多个计算节点同时运行 OLTP 类型的应用和复杂的 OLAP 类型的应用,让数据库利用率最大化的同时利用多个节点的计算能力,完成对 OLTP 和 OLAP 应用的支持。

OceanBase 数据库真正实现了用一套计算引擎同时支持混合负载的能力,让用户通过一套系统解决 80% 的问题。相对于中国很多分布式数据库采用的通过两种不同的计算引擎,甚至两套数据库系统去分别支持 OLTP 和 OLAP 的方式具有巨大优势。

多租户

OceanBase 数据库采用了单集群多租户设计,天然支持云数据库架构,支持公有云、私有云、混合云等多种部署形式。

OceanBase 数据库通过租户实现资源隔离,让每个数据库服务的实例不感知其他实例的存在,并通过权限控制确保不同租户数据的安全性,配合 OceanBase 数据库强大的可扩展性,能够提供安全、灵活的 DBaaS 服务。

高兼容性

OceanBase 数据库针对 Oracle、MySQL 这两种应用最为广泛的数据库生态都给予了很好的支持。

对于 MySQL 数据库,OceanBase 数据库支持 MySQL 5.6 版本全部语法,可以做到 MySQL 业务无缝切换。

对于 Oracle 数据库,OceanBase 数据库能够支持绝大部分的 Oracle 语法和几乎全量过程性语言功能,可以做到大部分的 Oracle 业务进行少量修改后自动迁移。在多家金融行业客户和阿里巴巴内部已有多次迁移至 OceanBase 数据库的成功案例。

完整自主知识产权

OceanBase 数据库由蚂蚁集团完全自主研发,不基于 MySQL 或者 PostgreSQL 等开源数据库,能够做到完全自主可控,不会存在基于开源数据库产品的技术限制问题。

高性能

OceanBase 数据库作为准内存数据库,通常只需要操作内存中的数据,并且采用了基于 LSM-Tree 结构的存储引擎,对于硬件更加友好,读写性能均远超传统关系型数据库。

安全性

OceanBase 数据库在调研了大量企业对于数据库软件的安全需求,并参考了各种安全标准之后,实现了企业需要的绝大部分安全功能,支持完备的权限与角色体系,支持 SSL、数据透明加密、审计、Label Security、IP 白名单等功能,并通过了等保三标准测试。

国产化适配

OceanBase 数据库支持全栈国产化解决方案。迄今已基于硬件整机中科可控 H620 系列、华为 TaiShan 200 系列、长城擎天 DF720 等整机,完成与海光 7185/7280、鲲鹏 920、飞腾 2000+ 等 CPU 的适配互认工作。同时,OceanBase 数据库还支持麒麟 V4、V10 和 UOS V20 等国产操作系统,并与上层中间件东方通 TongWeb V7.0、金蝶 Apusic 应用服务器软件 V9.0 等完成适配互认工作。

技术指标

数据项 MySQL模式 Oracle模式
集群名最大长度 128(字节) 128(字节)
租户名最大长度 64(字节) 64(字节)
用户名最大长度 64(字节) 64(字节)
库名最大长度 128(字节) N/A
表名最大长度 64(字节) 128(字节)
列名最大长度 128(字节) 128(字节)
索引名最大长度 64(字节) 128(字节)
视图名最大长度 64(字节) 128(字节)
别名最大长度 255(字节) 255(字节)
对象名最大长度 N/A 128(字节)
表格组名最大长度 128(字节) 128(字节)
Char 列最大长度 255(字节) 2000(字节)
Varchar 列最大长度 262143(字节) 32767(字节)
Binary 列最大长度 255(字节) N/A
Varbinary 列最大长度 64K(字节) N/A
行最大长度 1.5M(字节) 1.5M(字节)
表最大列数 512 512
表最大索引数 128 128
索引最大列数 512 512
索引单个列最大长度 262143(字节) 262143(字节)
索引最大长度 1.5M(字节) 1.5M(字节)
主键最大列数 64 64
主键单个列最大长度 262143(字节) 262143(字节)
主键最大长度 16K 16K

应用场景

交易支付透明拆分

交易支付是蚂蚁集团最核心的一个业务,最初采用的是分库分表的解决方案。分库分表的方案给核心业务带来了水平扩展的能力,同时也带来了灰度升级的能力,让核心业务的系统性风险大大降低。但随着支付宝业务的飞速发展,发现系统中的单机容量开始出现不足,在分库分表的架构下,这种情况只能通过将数据继续拆分成 M*N 份来解决,导致一方面耗时耗力,另外一方面技术风险非常高。

而 OceanBase 数据库利用分区表的方案及其带来的水平扩展能力,完美地解决了这一问题。只需要将原来的 N 份数据,每一份都通过分区表打散为 M 个数据分区,利用分区表打破单机的容量限制,就可以从数据层完成这一拆分过程,无需业务改造,极大地节省了成本,降低了技术风险。同时,OceanBase 数据库的分区表方案也可以使得用户完全无需关注数据的分布细节,轻松支持跨分区的分布式事务、多分区的关联,真正实现“透明”访问分布式数据库。

会员系统的多维度查询

会员系统在很多企业中也都是存在的,系统中保存了很多重要的用户信息。对于这些信息,是需要从多个维度进行访问的,例如:通过用户的 ID 查询用户的详细信息;通过用户的手机号码查询用户的详细信息;以年龄作为一个维度来对用户进行分组等等。对于这种多维度查询场景,尤其是非分区键查询在海量数据的分布式场景中是经常碰到的问题。通常可以采用在非分区列建立影子表的方式来解决。但这样的解决方式并非利用了数据库本身的能力,只能算是应用层的折中方案。OceanBase 数据库可以利用分区表特性将数据打散后分布到集群的多个节点上,从而满足一部分的查询需求,之后利用强一致性全局索引功能来满足其它维度的查询和分析需求,在数据库层面实现了数据分片和水平扩展能力,并且对用户透明。

批处理系统

很多行业的批处理系统中通常会有大量批处理操作,包含多张大表关联的复杂计算,并且涉及到大量的数据更新。批处理意味着每一次处理的数据量很大,而且有很多张大表要做关联,经常要做一些比较复杂的查询,并且更新量也比较大,使得传统的集中式数据库,出现了单点瓶颈,垂直扩容成本非常高,几乎不可接受。OceanBase 数据库的 SQL 引擎在经过了近 10 年的发展之后,已经拥有了很好的 SQL 执行能力和分布式计算能力,可以支撑这种复杂的 HTAP 应用。由于 OceanBase 数据库的原生分布式数据库特点,可以完美地解决传统数据库的单点性能瓶颈问题,而且还可以节省扩容带来的成本。

继续阅读