开启 JSON 和多模,让生态更多可能 | OceanBase 社区版 3.1.3 发版

简介: OceanBase 2021 年 6 月 1 日开源以来,先后迭代发布社区版 3.1.0、3.1.1 和 3.1.2。从早期只有数据库内核和最基本的一键安装部署工具的首个 3.1.0 版本,到开源半年内先后发布的 3.1.1 和 3.1.2 两个版本,再到 OceanBase 生态工具提供社区版支持(包括运维管理工具 OCP、开发者工具 ODC、数据同步工具 OMS、导入导出工具 obdumper/obloader 等)。在社区开发者的共同努力和大量客户应用场景的快速反馈下,社区版逐步具备较为完善的企业级数据库能力,目前已得到数百家企业用户的认可,并应用于关键业务的实际生产环境。

01.gif

OceanBase 2021 年 6 月 1 日开源以来,先后迭代发布社区版 3.1.0、3.1.1 和 3.1.2。从早期只有数据库内核和最基本的一键安装部署工具的首个 3.1.0 版本,到开源半年内先后发布的 3.1.1 和 3.1.2 两个版本,再到 OceanBase 生态工具提供社区版支持(包括运维管理工具 OCP、开发者工具 ODC、数据同步工具 OMS、导入导出工具 obdumper/obloader 等)在社区开发者的共同努力和大量客户应用场景的快速反馈下,社区版逐步具备较为完善的企业级数据库能力,目前已得到数百家企业用户的认可,并应用于关键业务的实际生产环境。

OceanBase 社区版 3.1.3 作为 2022 年首个版本,已于 3 月 30 日正式发布。

图片.png

本次版本的重大更新来源于两个部分:

第一,来自企业版的重大功能引入。包括多模数据类型、JSON 支持、兼容 HBase API。

第二,来自社区用户的反馈和需求。包括提升部署便捷性、易用性、稳定性,能够更好地适配云环境。很多用户提到 OceanBase 需要支持 Kubernetes 等需求,在这个版本中得到解决。

该版本的功能亮点和用户价值:

  • 支持 OBKV 能力,提供 HBase 模型和 Table 模型的 NoSQL 能力。读写综合性能超越 HBase,且能复用 OceanBase 底层的强一致和异地容灾能力,并避免了 HBase 的性能抖动问题。以蚂蚁集团为代表的多个用户已经在延迟敏感的关键业务场景中使用 OceanBase 替换 HBase。


  • 支持兼容 MySQL 5.7 版本的 JSON 功能,提供半结构化数据支持。很多用户会使用 JSON 类型存储半结构化数据以弥补关系模型的不足,相比 TEXT 和 LOB 类型,JSON 类型存储半结构化数据时性能更好,支持高效索引和合法性校验。


  • 支持回收站中的对象恢复,极大降低因误操作导致的潜在风险。表格删除后进入到回收站,Flashback Table 能够将回收站误删除的表格恢复出来,防止误操作。


  • CDC 支持大事务,通过新增持久化模式,数据在同步开始前先进行本地临时存储,避免 CDC 传输大事务时因内存溢出 OOM 而导致的断开链接问题。


  • 支持 Kubernetes Operator,用户可以通过容器的形式将 OceanBase 运行在公有云或私有化部署的 Kubernetes 集群。


  • 部署更加便捷,面向开发者提供更加友好的使用体验。将 Docker 镜像由 2C10G 优化至 2C8G,降低开发者在个人电脑使用 OceanBase 的门槛。另外,新增了 ARM 架构支持。

需要注意的是,该版本还有两个行为变更:

第一,分区表默认创建的索引变更为局部索引。之前,OceanBase 分区表创建的索引默认为全局索引,在一些用户使用过程中我们发现 ,需要经常对分区表的索引性能进行调优,经过分析总结,发现局部索引更适合多数客户业务场景,因此我们将分区表默认创建的索引调整为局部索引。如果需要创建全局索引,需要加上 global 关键词,例如 create table example(c1 int primary key, c2 int, index(c2) global) partition by key(c1) partitions 32。这个变更不会影响过去已经创建好的索引,但会对未来创建索引的默认行为产生影响,DBA 需要特别关注该变更。

第二,修改创建表的默认行为变更为非严格模式。过去,OceanBase 数据库建表要求所有副本成功才算成功,这次版本调整为只要求多数派副本(3 个副本中的 2 个,或者 5 个副本中的 3 个构成多数派)创建成功即认为建表成功。如果需要使用严格模式创建表,需要将系统变量 ob_create_table_strict_mode 设置为 True 。

image.gif

支持 OBKV 能力

这里所说的支持 OBKV 能力,主要包括提供 HBase 模型和 TABLE 模型的 NoSQL 能力。

为什么要支持多模型

众多 NoSQL 存储系统(如 Bigtable, HBase, Cassandra, Zeppelin, ScyllaDB, Pegasus, Riak KV),底层都是使用 LSM-Tree 结构的存储引擎来充分发挥现代硬件的能力。OceanBase 作为关系数据库已经实现了一套完整可扩展的分布式 LSM-Tree 存储引擎,具备支持多模型的先天基因,在此基础上扩展支持 NoSQL,可以帮助用户直接拥有以下久经考验的架构优势:

1. 让 NoSQL 拥有了 OceanBase 的企业级数据安全和高可用的服务

2. 支持全球部署,例如 OceanBase 的“三地五中心”多地部署

3. 支持读写分离架构,弱一致性读可无限扩展

4. 强大的弹性能力,适应“双 11 大促”快速在线扩容缩容的能力要求

多模型是怎么做的

OceanBase 目前在 SQL 层面已经支持兼容 MySQL 语法协议的关系型 SQL API;在存储引擎层面,通过 Table API 提供表模型和 HBase 模型的 NoSQL 能力,并在此之上接入多种兼容性服务,实现一个 OceanBase 数据库,支持多种数据模型。

客户端设计:OceanBase 数据库的每个表或表的分区都可能存放在不同的机器上,想要对表进行读写操作,必须先要定位到数据所属的表或分区的位置。对于 Table API 协议接口,OceanBase 不会做路由转发,只允许在本地执行。因此每一轮操作,客户端都会先根据 table name,rowkey 计算出具体的分区号,再根据分区号反向计算出对应 OceanBase 服务节点具体位置,最后把请求发送到对应 OceanBase服务节点上执行。由此可见,客户端除了基本的读写功能外,还承担着路由计算的使命。需要注意的是,当前 Table API 没有跨分区事务。

传输层设计:Table API 使用 OceanBase 自定义的 RPC 协议进行通信,这个协议是标准的 Request-Response 模型。不同的 Request 之间互相独立,服务端会并发处理多个请求。同一个客户端和服务端之间可以建立多个 TCP 连接。数据经过 RPC 层传递后到服务端后,经过数据包解析,OceanBase 服务端最后从请求包中解析出消息类型以及数据体。

服务端设计:OceanBase 服务端使用生产者消费者模型,来处理客户端的 Table API 消息请求。当服务端接收到客户端请求后,由独立线程把请求消息放到消息队列中,并且由工作线程从队列中取出消息体并处理。为了区分不同类型的消息,OBServer 采用优先级队列,对不同类型的消息(MySQL,RPC 等)进行分层处理,这样可以保证某些优先级比较高的请求不会因为超时而被饿死。

另外,Table API 复用 OceanBase 数据库的事务框架以及存储引擎。受益于存储引擎的二级分区表和 LSM 树数据组织结构,Table API 同样能够通过自动分区负载均衡来解决分区热点问题和机器热点问题,对用户完全透明。

image.gif图片.png

 图1:OceanBase数据库多模架构

多模型带来哪些提升

OceanBase 采用分区组织结构,主分区可以分布在不同的 OceanBase 服务节点上,对于不同分区的写操作会分布到不同的数据节点,从而实现数据多点写入,提高系统整体写入吞吐;数据存储采用 LSM-Tree 模型,业务数据直接写入内存,可获得接近内存数据库的写入性能;同时 OceanBase 支持的多种缓存结构(块缓存、行缓存)、布隆过滤器、查询优化等最大限度的提高访问性能;相比于 SQL 接口,Table API 从宏观上绕过 SQL 语法语义解析,直接提供从客户端到服务端的访问,大大简化了访问路径。

image.gif图片.png

图2:OceanBase 与 HBASE 性能对比

image.gif

支持 JSON 格式数据类型

MySQL 从 5.7.8 版本开始,支持了 RFC 7159 JSON 类型, 通过使用 JSON 类型可高效访问 JSON 文档中的数据,并为用户提供三大便捷:

1. 数据合法性校验,使用 JSON 类型相比于 TEXT 或 LOB 类型存储文本数据,在数据入库时会进行语法校验,对于不合法数据进行报错处理,确保插入数据的正确性。

2. 操作便捷,避免数据在 TEXT 或 LOB 类型到 JSON 类型的转化,同时提供丰富的函数以及路径表达式来方便用户访问 JSON 数据。

3. 高效的性能,支持创建索引,同时可减少关联查询,提升性能的同时降低数据库服务压力。

因此,OceanBase 数据库在 3.1.3 版本推出 JSON 格式数据类型,对 JSON 数据类型的设计实现主要包括:JSON 类型、JSON Binary、JSON Path、JSON Function、JSON Tree 五个组成部分。其中:

  • JSON 类型:用于处理 JSON 类型和其它类型的转换、JSON 类型之间的比较以及字符集相关。


  • JSON Binary:直接存储 JSON 解析编码后的二进制,支持直接基于 JSON BINARY 进行查询遍历,以及二分查找,避免了查询过程中对 JSON 数据进行展开的开销。


  • JSON Tree:内存辅助结构,只有在 JSON 修改的时候才会构建。


  • JSON Path:提供以路径的方式访问 JSON 中的数据以及子 JSON 对象的能力。


  • JSON Function:提供操作 JSON 类型数据的表达式函数,包括创建、查询、修改 JSON 数据等函数。

OceanBase 数据库 3.1.3 版本提供的 JSON 能力兼容 MySQL 5.7 版本的全量以及 8.0 版本的部分 JSON 函数。支持 DDL、索引创建、SQL 查询、数据类型转换等基本操作。主要能力如下:

  • JSON 是一种复合数据类型,JSON 内部的数据支持四种基本类型(字符串、数字、布尔值和 NULL)和两种结构化类型(对象和数组)

  • 支持在创建表、添加列时创建类型为 JSON 的列

  • 支持基于 JSON 列的生成列创建索引

  • 支持通过 ->、->> 操作符引用 JSON 对象

  • 支持在 SELECT/INSERT/UPDATE/DELETE 等 SQL 语句中使用 JSON 文本

  • 支持MySQL 5.7 版本的全量 JSON 函数以及 JSON_OVERLAPS()、JSON_VALUE() 等 8.0 版本新增函数

支持回收站中的对象恢复

回收站,顾名思义,就是用来存储被删掉的东西。在 Oracle 10g 数据库中,引入了一个回收站的数据库对象,它用来存储用户删除(drop)掉的 database,table 等相关信息。

回收站在原理上说就是一个数据字典表,放置用户删掉的数据库对象信息。用户删除掉的东西被放入回收站,仍然占据着物理空间,除非用户手工进行清除(purge)或者对象定期被数据库系统删除。在数据库实现中,如果一个表被删除,那么与该表有关联的对象,如索引,约束和其它从属该对象的对象也会被放入回收站。从回收站恢复时对应的从属与该对象和有关联的对象也将被恢复。

在 3.1.3 之前的社区版 OceanBase 支持了回收站的功能,并默认开启,但是没有提供将回收站对象恢复的的命令;在 3.1.3 版本中,OceanBase 数据库开始提供 Flashback Tenant/Database/Table/Index 命令,该命令可以通过修改回收站对象的元信息,将该对象恢复到原始的位置,用户也可以通过 Rename To 语法将该对象恢复到新的位置(新的名称)。

通过使用这个命令,用户可以将误删除的对象恢复,降低误操作风险。


CDC 数据同步支持大事务

CDC 能够从 OceanBase 数据库拉取数据变更提供给下游消费,支持不同粒度的数据同步(集群、租户、DataBase、table )且用户可以通过配置黑白名单来自定义同步规则。当前 CDC 配合 Canal、Flink、OMS 可以完成数据同步。

某银行在测试 CDC 数据同步时出现大事务 OOM 导致同步链接断开,数据可能无法正常同步的问题。分析该问题产生的原因是:归属于同一个事务的变更数据在被下游消费前会全部存储在内存中,当有大事务或者超大事务出现时,会占用非常多的内存资源,即使在流控策略下仍旧超出机器内存资源限制而造成系统异常,最终影响数据同步链路的稳定性。

为了解决该问题,新版本新增持久化模式,数据在同步开始前先进行本地临时存储,事务数据按行粒度发送到下游,待消费完毕后清理本地临时存储的事务数据。用户可以根据业务场景通过 working_mode 参数灵活选择内存模式和持久化模式。非大事务的数据同步建议选择内存模式,同步效率更佳;在大批次的超大事务 DML 操作同步时,建议选择持久化模式保证数据同步链路的稳定性,满足大事务场景下的数据同步需求。


实现 OB Operator

支持 Kubernetes 容器编排

OB Operator 旨在让 OceanBase 数据库可以以容器的形式运行在公有云或私有化部署的 Kubernetes 集群上。现阶段的 OB Operator 还是一个孵化版,具备基础功能的框架,后续还需不断地迭代与完善。

OB Operator 项目设计整体分三块:StatefulApp Controller、OBServer Controller 和 Operator Orchestrator(规划中)。

其中StatefulApp Controller 负责 Pod、PVC、PV 的维护,OBServer Controller 负责 OBServer 的维护,Operator Orchestrator 负责在多个 Kubernetes 之间管理 OB Operator(该模块尚未实现,欢迎社区开发者一起共建)。

图片.png

图3:OB Operator分层架构图

用户可通过 YAML 或 Kustomize 部署 OB Operator,OB Operator 以服务的形式提供如下能力:

  • 在 Kubernetes 环境下独立部署 OceanBase 集群
  • 支持集群的创建、删除、扩容、缩容和生命周期管理
  • 支持 Zone 的创建、删除
  • 支持 OBServer 实例的创建、删除、重启、故障转移
  • 支持使用 kubectl 命令查看集群、Zone 和 OBServer 的状态
  • 支持通过 HTTP API 管理 Kubernetes 资源

后续版本将会逐步支持租户管理、OBProxy 管理、多 Kubernetes 集群等能力,帮助用户更简单便捷的部署管理 OceanBase。


结语

本次发布的 3.1.3 版本引入多模数据类型、JSON 支持、HBase 兼容等功能,进一步增强稳定性、易用性和部署便捷性,是 OceanBase 社区版的又一个重要里程碑。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1572 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1939 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
526 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2559 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
720 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2634 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
6天前
|
人工智能 JSON Shell
2026AI漫剧本地全开源方案(附各个软件模型链接),8G显卡也能流畅运行
这是一套完全本地化部署的AI漫剧生成技术链路:涵盖LLM剧本分镜生成、FLUX文生图(IP-Adapter人脸锁定)、StoryDiffusion时序连贯控制、LTX-2.3唇形同步视频生成,及ComfyUI全流程调度。零云端费用,仅耗硬件算力,单集2–4小时可产出竖屏短视频,适配抖音/B站分发。
|
7天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
446 1

热门文章

最新文章