关于OceanBase 多模一体化的浅析

在当今多元化的业务生态中,各行各业对数据库系统的需求各有侧重。举例来说,金融风控领域对数据库的高效事务处理(TP)和分析处理(AP)能力有着严格要求;游戏行业则更加注重文档数据库的灵活性和性能;基于位置服务的业务则对GIS空间数据库严重依赖。这种业务场景的多样性使得数据库运维过程中面临着多重挑战,包括备份与恢复、在线巡检、安全保障与法规合规、故障定位与排查、系统维护与升级以及性能优化等。

传统的单一数据库系统难以全面满足多样化的业务需求。运维过程中,多数据库系统的多样化诉求不仅增加了数据库管理员(DBA)的工作量,还对其技能提出了更高的要求。随着引入数据库系统的增多,运维的复杂程度成倍增加。

这种情况下,数据库的多模能力显得尤为重要,它能够统一管理和处理不同类型的数据,在提高效率的同时简化技术栈,从而满足复杂多变的业务需求。本文将介绍 OceanBase 带来的多模一体化功能特性及其应用场景。

一、OceanBase 多模融合一体化引擎

OBKV 是 OceanBase 承载多模 KV 能力的核心组件,旨在提供低成本的大规模结构化和半结构化数据存储,确保在简单操作接口下实现卓越的访问性能。在技术实现上,OBKV 无需 SQL 层交互,可直接基于 OceanBase 的分布式存储构建多种多模 KV 形态。例如,OBKV 目前支持兼容 HBase 接口的 OBKV-HBase、兼容 Redis 协议的 OBKV-Redis,以及基于表格接口的 OBKV-Table 等多种形态。在分布式存储和多模形态之间,OBKV 引入了一个名为 TableAPI 的框架层,为模型层提供封装的存储和事务调用能力。

在 OceanBase 的架构体系中,SQL 引擎和多模 KV 都建立在分布式存储引擎之上。许多用户可能会好奇,为什么 GIS、JSON、XML 等数据类型会被放在 SQL 引擎中,而不是多模 KV 中?这一决定主要基于业务的考虑。众所周知,GIS 领域的业务大多使用 PostGIS 数据库,Oracle 的 XML 数据库非常强大,被广泛使用,JSON 作为文档类型的标准格式,各个主流关系数据库都有比较完备的支持。从业务角度来看,这些用户已经习惯于使用 SQL 进行访问。因此,OceanBase 将这些多模数据类型融入 SQL 引擎中,以便更好地满足用户的使用习惯和业务需求。

1719310460

图 1:OceanBase 多模融合一体化引擎

另外,用户在大数据分析场景里使用 HBase,在缓存或数据结构丰富的场景下使用 Redis。而 HBase 和 Redis 的开源生态非常活跃,从业务角度来看,用户更希望使用原生的 API 访问这些数据引擎。因此,OceanBase 的多模数据库按照用户的接口使用习惯分为两部分:一部分是 SQL 引擎里的 JSON、GIS、XML,未来也会增加向量数据类型;另一部分则与当前主流的 NoSQL 数据库使用习惯一致,存在于多模 KV 里。

多模 KV 和 SQL 引擎处于平行状态,多模 KV 通过直接连接存储引擎,无需经过 SQL 层,因此在简单的 KV 场景下,使用多模 KV 接口比使用 SQL 接口性能高 30% 左右,且多模 KV 和 SQL 引擎互不影响。在正常业务场景中,如使用 HBase 的场景,我们建议用户在一个 OceanBase 集群里使用专门的 HBase 服务。

除了数据引擎本身,数据库的周边生态工具也非常重要。OceanBase 在引入数据引擎的同时,还引入了一系列周边监控和运维工具。通过一体化运维和共享工具体系,OceanBase 实现了使用一套工具即可完成 SQL 和 KV 的运维。在这种场景下,DBA 只需掌握一套引擎,而业务部门则可以根据需求选择相应的模型,从而实现更高的效率和灵活性。

二、浅谈多模融合一体化的价值

业内许多数据库的多模功能通常以解决方案的形式呈现,其中每个引擎都是垂直的,即每一种模型都是一个数据库,它们之间相互独立。OceanBase 采用了一种不同的方法,在 OceanBase 中无论是 KV 多模还是 SQL 多模,它们都共享同一个分布式存储引擎。例如,SQL 多模会共享 OceanBase 的 SQL 引擎,包括其中的执行及优化能力。由于这种共享,OceanBase 底层的分布式存储引擎的演进也会统一影响到多个模型。这样的设计带来的好处在于,用户不再需要担心单一模型的生态和演进问题。不但可以实现多模融合计算、多模融合存储、多模一体化运维,基础引擎的优势将会乘以 N。

(一)融合计算的价值

○   选择最优的执行代价

以基于位置的服务为例,假设需要查询距离最近且评分超过 4 分的奶茶店中的前 10 条好评。这个需求涉及多个方面:

首先,需要筛选评分超过 4 分的奶茶店,这是普通的结构化关系型数据库擅长的处理,即以“评分 4 分以上”作为过滤条件即可。

其次,需要找到距离最近的奶茶店,这是典型的基于位置的查询服务,是空间数据库擅长的处理。

另外,需要考虑 10 条好评,这里的评价一般都是文本,文本内容是否属于好评很难判断,可以基于文本内容提取文本语义做向量检索,从而得出判断。

如何结合这些查询条件,最终选择何种执行路径呢?是使用向量索引还是使用空间索引,还是使用普通 TP 索引?OceanBase 通过多模引擎和优化器的融合,能够选出最优的执行路径,从而为客户带来更佳的查询结果、查询响应时间和资源消耗。

○   异构数据无缝转换 & 计算

多模融合计算还能够服务于异构数据的无缝转换和计算。随着半结构化数据和结构化数据的增多,当普通的关系型数据需要与 JSON、GIS 统一进行查询时,常规的关系引擎是针对关系模型进行 SQL 查询和优化的。然而,当引入半结构化数据和非结构化数据后,在实际的计算场景中,如何让半结构化数据更有效地利用已有资产,以达到最优效果呢?以下是两个例子:

第一个例子:底层存在结构化表和半结构化表。以 JSON 为例,文档数据库是带有嵌套结构的模型,与普通的关系型数据库相比,JSON 的计算处于劣势。因为关系型数据库是二维表,而 JSON 则具有层次结构。在多模方面,关系型数据库提供了诸如 JSON Table、XML Table 等模型转换的能力。通过用户定义的模型,将 JSON 转化为关系二维表,然后通过执行引擎和现有的关系数据进行 Join 等计算。

第二个例子:底层都是结构化表,但业务希望使用半结构化的数据。典型的例子是游戏场景。游戏场景下的用户数据通常是带有层次结构的 JSON 数据,例如用户可能具有装备属性、个人信息属性,而装备又可以细分为不同的分类,数据通过层次不断嵌套。在业务层面,如何处理用户的所有数据呢?虽然关系型数据库直接存储 JSON 是一种较好的方式,但 JSON 也存在一个问题:JSON 数据是自解释的,JSON 对象引用的所有内容都需要完整的存储在 JSON 对象中,从而会导致数据冗余存储。因此,在设计表结构时,通常会提取公共部分,以尽量降低各个数据表之间的冗余度。在这种情况下,OceanBase 提供了通过关系表向半结构化数据转换的逻辑。例如,通过一体化的执行引擎做通用的关系计算,计算完成后再通过相应模型的聚合能力(比如 XML 或 JSON AGG 函数等能力),将结果聚合成相应的数据返回给业务。

1719310754

图 2:异构数据无缝转换&计算

(二)融合存储的价值

在半结构化数据中,实现编码的工程难度非常大,因为数据本身的结构化程度不高,市面上大多数数据库产品也没有对 JSON 数据做压缩编码,只是按照文本或者二进制的方式简单存储。OceanBase 可以更好地解决这一问题,而且,OceanBase 的编码能力与 MySQL 等数据库相比,有着数量级的降本优势。

1719310842

图 3:结构化&半结构化数据存储降本

举个例子,考虑用户在高德地图上显示的轨迹,每个时间段内都会采集一个点,这些点组成了轨迹,而这些轨迹就相当于一个 double 对(分别表示经纬度)的数组。数据库可以很容易地压缩单一 double 类型的数据,但是轨迹这种基于 double 对和变长数组嵌套组成的半结构化数据的压缩就相对困难许多。但是如果把轨迹数组拆解成两个普通 double 数组,就可以复用 OceanBase 已有的 double 编码技术,极大提升轨迹数据的压缩比。在 OceanBase 中,我们正是通过提取半结构化数据的结构特征的方式,再复用 OceanBase 已有的数据编码技术,解决半结构化数据编码压缩的问题。

同样的,我们知道,JSON 在使用上不需要预定义 schema,在数据库中一般是按照文本或者二进制存储,压缩率一般不及普通数据类型。但是在大多数情况下,数据表中同一列的 Json 数据的结构是比较类似的。基于这一特征,数据库可以提取公共部分,即一个结构化部分和一个半结构化部分,最大限度利用存储引擎的 encoding 能力。这样,即使存在半结构化数据,也能够达到和关系型数据库相似的存储成本。

三、聊聊 OBKV 的两款 NoSQL 模型

目前 OBKV 已经支持两款 NoSQL 相关的模型,即 OBKV-HBase 和 OBKV-Redis。

(一)OBKV-HBase

○   HBase 在大数据处理中的优缺点

HBase 是业内非常流行的分布式 KV 数据库,有着优秀的横向扩展性以及高性能的简单读写能力,能够支持大规模数据的分布式存储和处理。

在大数据处理场景,HBase 被广泛使用,比如用于存储业务原始的海量日志/消息/数据,离线数仓计算后的结果集批量导入到 HBase 中供业务做快速查询,在实时数仓中作为维表的存储,提供极致的点查和范围查询能力。这种场景下,业务一般将 HBase 作为 KV 数据库来用,主要关注 KV 的写入/查询/存储等基础能力。

HBase 定位是一个 KV 数据库,主要提供简单的数据访问能力,不支持二级索引和数据计算。为了解决这些限制,开源社区提出了 Phoenix,它在 HBase 之上构建了常用 SQL 以及二级索引能力,增强了 HBase 对结构化数据的处理能力。

○   适用场景对比

对于普通的 HBase 场景,OceanBase 的 OBKV-HBase 可以轻松胜任,并且提供相比 HBase 更高的性能。对于结构化场景,也可以使用 OBSQL,通过索引和灵活的算子,不仅带来数倍的压缩率,还能够为用户提供更大的灵活性。

1719310976

图 4:OBSQL & OBKV-HBase 覆盖 HBase 生态场景

○   HBase 替换场景

在 OceanBase 替换 HBase 的实际场景中,下面左图展示了贝壳的情况。贝壳案例主要在 Flink 中进行 ETL,将复杂的字符串转换为 ID,在下游基于 ID 进行分析,返回数据时,替换 ID 和字符串。挑战在于,Flink 中的流式计算需要频繁访问字典服务,因此字典服务需要具有非常低的时延和非常高的吞吐量。使用 OceanBase 的 SQL,数据处理将会变得非常简单。

右图仟传的场景稍微复杂一些。原始数据经过 Kafka 流到 Flink,Flink 会对用户数据和事件数据进行分析,如果用户数据不完整,Flink 会补全并插入数据库。由于事件数据本身是一个嵌套结构,有可能在一个事件数据中引用另一个事件,Flink 在获取事件后,会重新关联事件并补全,然后传递给下游。在这种情况下,OceanBase 具备处理海量数据存储和极致读写能力的优势。

1719311020

图 5:OceanBase HBase 替换场景

(二)OBKV-Redis

○   兼容 Redis 接口的持久化数据库

Redis 在极致 RT 和高吞吐率的场景下表现出色,比如在广告、游戏等现金流业务中,需要与 Redis 进行多次交互的情况下,业务的访问延迟直接影响到收入。然而,在我们和用户的交流中收到很多类似的反馈,在传统的 RDS 和 Redis 组合场景中,成本较高,业务架构复杂,因为业务不仅需要感知 Redis,还需要感知 RDS,并且需要关注它们之间的一致性。同时,通用的解决方案放在业务层并不合适,大多数场景并不需要 200-500 微秒的实时延迟。我们进行了一组数据测试,如下图所示。将 OceanBase 的延迟控制在 1 毫秒内,在不同数据量的情况下观察整个数据库的吞吐情况,最终结果仍然是令人满意的。

1719311096

图 6:OBKV-Redis,兼容 Redis 接口的持久化能力

此外,在冷热数据场景中,Redis 存在一定的难解的问题。例如,在游戏场景中,系统中有很多玩家,但只有少数玩家的游戏频率较高,其他玩家由于工作等各种原因每周只登录一次,因此数据存在明显的冷热分离。如果将所有数据都存储在内存中,那么基础设施成本将会很高。因此,OceanBase 一方面致力于解决数据库和缓存一致性的问题,让用户可以将 Redis 用作数据库;另一方面希望通过区分冷热数据,将热数据存储在数据库的缓存中,将冷数据存储在数据库的磁盘中,从而降低业务成本。通过缓存数据库一体化,为 80%的“RDS + Redis”架构场景降低成本。

○   Redis 替换场景

以陌陌为例,过去在业内某知名数据库的场景中有 158G,迁移到 12C40G 的 OceanBase OBKV-Redis 租户后,OBKV-Redis 的存储量仅为 95G。对业务来说,收益主要有三点:

首先,不但性能得到了提升,而且存储空间从 158G 减少到 95G,成本降低明显。

其次,在 P90、P99 和 P95 的实时性场景下,性能也能够满足业务需求。

最后,通过在一个 OceanBase 集群中将原 RDS 和原 Redis 业务分成不同的租户,对原 RDS 业务进行压力测试,使其达到极限,然后发现对原 Redis 业务集群基本没有影响。

对于业务而言,这意味着降低了存储成本,复用了 OceanBase 技术组件的能力,并通过 OceanBase 的多租户功能将不同业务的 Redis 集群和 RDS 集群融合到一个 OceanBase 集群中,实现了成本降低。过去,一套 Redis 需要进行复杂的部署,有时甚至需要进行物理隔离,而现在只需要进行 OceanBase 的租户隔离就可以达成期待的业务效果。此外,还有一体化运维。对于业务来说,普通的 Redis 将逐渐停止运维,并全部迁移到 OceanBase,实现了 Redis 和 RDS 在 OceanBase 上的一体化运维,节省了 Redis 运维工作所需的人力成本,以及对技术体系的要求。

四、写在最后

正如我们在文章中所介绍的,OceanBase 的多模能力使得用户无需为不同类型的数据部署不同的数据库,只需使用一个数据库、一个引擎即可。OceanBase 原生支持多种数据模型,包括 SQL 和 NoSQL,为用户提供了根据自身需求选择合适数据模型的便利。

近期发布的 OceanBase 4.2.3 版本针对多行批量操作和单行操作的性能进行了深度优化,该特性也会更新到 4.3.3 版本。相较于之前的版本,OBKV 在单行读写性能上提升了约 70%,批量读写性能提升了 80-220%。

此外,OceanBase 的多模文档已经正式上线,您可以查看文档,获取更多信息。我们也欢迎您试用 OceanBase 的多模能力,并给我们提供反馈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420465.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】408刷题笔记

文章目录 三对角三叉树求最小带权路径UDP报文首部和TCP报文首部IP报文首部TCP报文首部UDP报文首部 刷新和再生的区别地址译码 为了区分队空队满,可以使用三种处理方式 1)牺牲一个单元 队头指针在队尾指针的下一位置作为队满的标志 队满条件:(…

make、cmake、qmake的区别和联系

基本概念与用途 make: 定义:make是一个用于自动化构建项目的命令行工具。用途:它通过读取Makefile(或makefile)文件来执行编译、链接等操作,从而构建整个项目。Makefile中定义了项目中的文件依赖关系以及…

“CSS 定位”如何工作?(补充)——WEB开发系列34

CSS定位是一个非常重要的布局工具,它允许我们精确地控制元素的位置,从而创建复杂的布局效果。定位允许你从正常的文档流布局中取出元素,并使它们具有不同的行为,例如放在另一个元素的上面,或者始终保持在浏览器视窗内的…

数据库设计中的需求分析

在数据库设计中,需求分析 是至关重要的一步。它不仅是设计过程的起点,也是后续步骤的基础。如果需求分析出现问题,那么后续所有设计阶段的结果都会受到影响,最终可能导致整个设计返工,耗费大量时间和资源。因此&#x…

KubeBlocks 如何降低管理多种数据库的学习门槛

什么是 KubeBlocks KubeBlocks 是一个开源的 Kubernetes 数据库 operator,能够帮助用户在 Kubernetes 上运行和管理多种类型的数据库。据我们所知,大多数数据库 operator 通常只能管理某种特定类型的数据库,例如: CloudNativePG…

基于SSM开发的校园心理咨询平台系统的设计与实现---附源码80915

目 录 1 绪论 1.1 研究背景 1.2开发现状 1.3论文结构与章节安排 2 校园心理咨询平台系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

安卓13删除app 链接库警告弹窗Detected problems with app native

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码修改彩蛋1.前言 有些客户的APP,打开首次会弹窗提示窗口, Detected problems with app native libraries (please consult log for detail):,需要删除这个窗口,避免挡住用户APP。而且这个提示有些app是以t…

MapBox Android版开发 4 国际化功能v11

MapBox Android版开发 4 国际化功能v11 前言遇到的问题国际化功能原文给出的方案(V10版)migrate-to-v11适用于V11版的代码 示例MapStyle类运行效果图 前言 在前文MapBox地图样式v11中,使用Style的localizeLabels方法本地化地图语言。但Mapbox Standard样式和Mapbox…

红队C2工具Sliver探究与免杀

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene21#wechat_redirect 《网安面试指南》…

纯国产芯片LT8911EXB,MIPI转EDP信号转换器,LT8911B升级版本

以下为视频转换芯片LT8911EXB的简介 LT8911EXB MIPI DSI/CSI到eDP转换器具有单端口MIPI接收器,1时钟通道和4每个数据通道的最大运行速度为2.0Gbps;一个最大输入带宽为8.0Gbps。转换器解码输入MIPIDSI 16/18/24/30/36位RGB数据包,并将格式化的视频数据流转…

异步文件操作的革命:探索aiofiles的魔力

文章目录 异步文件操作的革命:探索aiofiles的魔力1. 背景介绍2. aiofiles是什么?3. 如何安装aiofiles?4. 简单的库函数使用方法5. 场景应用6. 常见Bug及解决方案7. 总结 异步文件操作的革命:探索aiofiles的魔力 1. 背景介绍 在现…

【Java-反射】

什么是反射? JAVA反射机制是在运行状态中,创建任意一个类,能获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…

RHEL 7 安装配置( Linux 网络操作系统 02)

一、虚拟机安装 我们的每台电脑都已经安装了VMware 虚拟机,其安装相当简单,在此不再赘述。可以参考如下链接: VMWare安装傻瓜式教程 (大家可以关注老师的博客,也建议大家写博客。) 二、红帽 rhel 7 安装 找…

IEC103设备数据 转 IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集103设备数是 2 5 用IEC61850协议转发数据 4 6 网关使用多个逻辑设备和逻辑节点的方法 6 7 IEC103协议说明 8 8 案例总结 9 1 案例说明 设置网关采集IEC103设备数据把采集的数据转成IEC61850协议转发…

通过 python 的 Opstrat 绘制收益图加深期权策略理解

本文介绍介绍一个 Python 包- opstrat,通过它绘制期权收益图,帮助我们理解期权策略的收益风险比。 什么是期权收益图? 期权收益图展示了某个期权或期权组合的盈亏情况,如下图中,展示一张标的现价 100,行权…

Carfilzomib (PR-171) 蛋白酶体 (proteasome) 抑制剂AbMole介绍

AbMole Carfilzomib (PR-171)是一种不可逆的蛋白酶体 (proteasome) 抑制剂&#xff0c;IC50为<5 nM&#xff0c;在体外优先抑制β5亚基的ChT-L活性&#xff0c;对PGPH和T-L活性很弱或没有作用。 Carfilzomib (PR-171)在体外优先抑制β5亚基的ChT-L活性&#xff0c;对PGPH和…

C#游戏服务器开发框架设计与架构详解

我一直在思考一个问题&#xff0c;什么样的服务端框架最好用&#xff0c;最适合? 经过这些年的项目经验&#xff0c;其实最好用&#xff0c;最适合的游戏服务端框架就是自己结合公司项目需求,团队特点与技术能力,自己整合的游戏框架是最好用的。 很多新手会担心自己整合的框架…

SprinBoot+Vue小区车辆管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

CMU 10423 Generative AI:lec4(Modern Transformers + CNNs)

文章目录 1 概述2 内容摘录2.1 深度学习架构的历史2.2 预训练概念、三种训练方式、效果对比2.3 现代Transformer模型概览1. **PaLM (Pathways Language Model, 2022年10月)**2. **Llama-1 (2023年2月)**3. **Falcon (2023年6月-11月)**4. **Llama-2 (2023年8月)**5. **Mistral …

vba发邮件:如何设置自动化发送电子邮件?

vba发邮件的技巧有哪些&#xff1f;VBA如何调用outlook发邮件&#xff1f; VBA发邮件功能是一个非常实用的工具&#xff0c;能够帮助用户自动发送电子邮件&#xff0c;减少手动操作的时间和错误。AokSend将详细介绍如何通过VBA发邮件来实现自动化发送电子邮件的设置。 VBA发邮…