商业化三年,OceanBase在忙什么?

文|刘雨琦

2020年,国产数据库厂商OceanBase(以下简称OB)商业化的第一年,只有18个客户。

如何打开局面,让这个从蚂蚁场景中走出来的数据库活下去,并进入到更多的场景里,发挥更大的价值,是OB当时最迫切的问题。

“开局是没那么容易的”,OceanBase  CEO杨冰对光锥智能坦言。对每一个企业而言,都面临着这样的选择:技术是根本,产品是核心,但商业化却关系着生死存亡。

事实上,光锥智能曾探访过多个国产数据库厂商。他们往往都经历着技术、产品、商业化的“不可能三角”:选择开源数据库,产品会很快成型,商业化也能同步落地,但技术没有竞争力,在服务客户的过程中往往会后劲乏力;如果选择自研,则将经历漫长的研发周期和冷板凳,也将面临着后续产品化和商业化的难题。

“在前几年,我们知道做不了太多,核心以金融和运营商这种大型且具备全球性、可复制性的行业为主,做好深耕和攻坚,这是我们在资源上的取舍”,杨冰讲道。

践行“重点突破,规模复制”的策略,让OB在2023年迎来了商业化奇点。11月16日,在OceanBase2023年度发布会上,杨冰公布了OB最新的商业化进展:“三年多前我们成立公司的时候只有十几个客户,三年多后的今天有超过1000个客户,而且这个数字在快速增长之中。”

商业化爆发的背后是13年的纯自研和产品化的成熟。会中,OB围绕“一体化”产品战略,发布一体化数据的首个长期支持版本OceanBase4.2.1LTS,并进一步提升列存性能,同时也从金融行业迈出一只脚,在千行百业中留下脚印。

从集中式到分布式、从边缘系统到核心系统,2023年国产数据库生态在经历着时代的变迁。这背后不只是OB一家企业的成绩单,更代表整个中国企业对分布式数据库从怀疑到尝试,再到信任的发展历程。

从场景中来,到产业中去

每每谈到OB的自研之路,杨冰都会讲到全球数据库发展经历了20年的空窗期。

80年代初期,今天全世界主流的关系型数据库排着队地诞生,到了90年代,又冒出了两个开源的关系数据库,但是在本世纪20多年来,全世界再也没有出现新的关系型数据库。

在“断档”的20年里,互联网兴起、移动互联网爆发,但全世界再也没有出现新的关系型数据库,不是因为没有需求,而是没有新的场景。

杨冰对此解释道:“数据库本身是一个场景驱动的技术,使用场景上没有形成代际跃迁的变化,也就没法对现有数据库的能力和架构产生太大的推动力。”

我们都知道,科技企业的技术往往分为两类:一种是从实验室走出来的技术,不断突破功能和性能的极限,没有最快只有更快;另一种则是从产业中走出来的技术,贴近客户需求,不断打磨,没那么“酷炫”但却非常实用。

显然,想要做好数据库,就必须贴近场景、贴近用户、贴近产业,这是一条几乎不可选择,却少有人能够“活下来”的路。

“开源的产品化简单,自研更难,但我觉得这样的系统很难有长久的竞争力,核心代码不掌握在自己手里,客户的深度需求就没有办法满足。”阳振坤讲到。

从这个角度来看,早在2010年,OB做出全自研决定的那一刻,就埋下了商业化的引线。

纵观OB的技术体系,会发现每一个技术特征都是从客户的需求出发,经过不断打磨,做深做精后的结果。

当OB开始独立面对市场上形形色色的企业级客户,便发现从集中式替换到分布式,客户并不担心分布式数据库本身,而是更在意平滑迁移的过程。

而这个过程是极为精细而复杂的工作,杨冰将这个过程比做“心脏搭桥手术”,首先要确保稳定可靠、可并跑、可回切,同时核心系统往往也是数据的中心枢纽,需要让新的数据库也融入原来的数据库。

为了保证平滑迁移,OB向上适配了5大类的数据库,包括Oracle、MySQL等传统数据库,也包括10+云上云下的数据库,向下通过Canel、Flink、DTS等比较常见的数据同步工具打通了上下游的数据处理软件,让其无缝地跟数据架构进行对接。

另一方面,一旦开始进行核心系统的大规模替换,成本是绕不开的。据杨冰透露,目前已经有大大小小的客户all in OB,或者70%的业务系统都跑在OB上,当数据库承载的业务量变大、规模变大、系数变多后,如何高效利用好每一份资源一定是企业最重要的目标。

比如OB采用了多副本备份的技术来保证数据一致性和稳定性,但多副本往往会对存储成本提出更高的要求。于是,OB采用LSM-Tree的架构把数据分成了基线数据+增量数据的形式,多副本之间共享一分基线数据,最终可以做到只有接近一分数据的存储成本,

当然,包括HTAP引擎、高于通用标准的“五地三中心”、单机一体化的产品架构,也皆是OB这十三年“趟河”摸过的石头。正如杨冰所说,“一个关系型数据库不是开发出来的,更多是用出来的。”

从淘宝中诞生、支付宝中历练再到产业中打磨,技术能力,从场景中来到产业中去。

究竟何为一体化?

金融行业客户有个特点:极为在意效率和极致的性能。高效、简洁是金融级数据库的“魔鬼集训必修课”。红塔银行内部就曾反馈道:“精密不复杂才是常理,架构本该简洁”。

在这样的背景下,产品化繁为简,尽可能做到一体化,是OB的核心思路。

2022年,OB发布了业内首个单机分布式一体化架构的数据库:小鱼,这意味着客户不再需要集中式分布式“二选一”,小鱼可以随意切换,小到个人站点、大到银行核心系统、巨型电商网站,都可以在业务发展的不同阶段选择适配自己的高性价比方案。

据OceanBase CTO杨传辉回忆:“13年前我加入OB团队时,业界很流行开源的MySQL,但MySQL有两个问题,只能处理简单查询,不能处理复杂查询;只能处理小数据量,很难做扩展。我们希望OB的数据库能兼具这两方面的能力”,这可能算得上是OB做一体化初心之一。

当互联网开始极速发展背后产生的数据,需要用EB作为单位计算,截止2022年底我国数据存储量已达724.5EB,这意味着如今数据量的“大”和40年前Oracle诞生时理解的“大”,早已不在一个量级。

同时,随着大量的中小企业涌进数字化大军,数据库不仅要大,更要小,弹性伸缩的能力成为对数据库性能的一项核心考验。OB诞生的第一个大型实战场景,便是支持双11,在10余个双11的历练下,可以进行秒级扩缩容,并提供租户级弹性和集群级弹性的多级弹性扩缩容能力,支持弹性水平或垂直的无中断缩容。

单机分布式一体化架构数据库的出现,也为OB打开了新的商业化思路。分布式数据库是大型企业的核心业务负载过重,集中式数据库性能无法满足时的产物,但小鱼的出现,让中小企业得以在业务早期就可灵活选择,并为后续业务体量爆发做准备,不必经历大规模迁移的过程。

2023年,OB从一体化架构演进成了一体化数据库、一体化产品,“一体化”的思路贯穿始终。

杨传辉介绍到,一体化的思路就像盖房子,单机分布式一体化架构如同地基,主要解决数据规模的问题,不管数据量级如何,都能通过一套系统统一解决。在一体化架构的基础上,是进一步搭建一体化引擎,如同房子的钢筋铁骨支撑起来的架构,包括一体化存储引擎、一体化事务、一体化的SQL引擎,主要解决数据的存储和计算问题。

一体化引擎之后,进一步搭建产品,即房子本身。产品解决如何给客户提供数据服务的问题,包括支持多种工作负载、实现多种数据模型、多种数据接口和兼容模式等等,这样的一体化思路,用一个数据库几乎能解决80%的问题。

但需要注意的是,这里的一体化思路并不是指“一款产品打天下”,而是一个兼具易用性和实用性的解决方案。

杨冰进一步阐释了“一体化”的理念:“一体化本质上一个具备关键业务负载支撑能力的数据库,在特殊的专业场景中我们认为还是需要专业数据库。好比手机解决了大部分问题,但还是会有人买单反、游戏机,还会有人去电影院。”

究其根本,核心仍然是从客户的需求和场景出发,做有选择、有取舍和有价值的一体化。

从18到1000+

从18个用户到1000+用户,杨冰告诉我们,除了内部产品打磨成熟进入新周期后,外部有三个阶段的核心变化。 

一如同导语中所言,OB在商业化的最开始,选择了大型可规模化复制的行业,如金融、运营商、政务等,三年内几乎所有的路都走了一遍,开始出现规模化复制的迹象;二是在2021年将部分内核系统进行了开源,开源生态的培养需要过程,但对客户数量的贡献十分明显,因为客户没有商业成本,而且OB的口碑让客户敢用于生产;三则是对云上资源的投入和倾斜,2023年整年,几乎饱和投入的方式,让客户数量有了明显的增长。

这三个变化代表了三个不同的方向。积累经验,是2B领域绕不开的过程。杨冰在会上也形象的讲到“2B是没有'魔法'的,都是做数据库的,不同的场景之间聊天可能都听不懂。”

在金融行业,全国目前有超过4000家大大小小的银行,大型机构、小型机构的需求、关注点并不同。大型机构的基础设施比较好,在性能要求上会比较高,关注点不仅是分布式架构,更是完整的解决方案和技术风险体系,同时大型机构的数据量大、基础设施也较为多样化和复杂,这要求OB具备更强的兼容性。

而小型金融机构,首先需要的是数据库分布式的能力、平滑迁移的能力,无感使用和低成本更为重要,且更依赖于服务和培训,因此,OB联合了多家主流银行应用ISV,有上百人参与到金融行业的交付运维中。

而通过服务各类客户后积累了较为全面的能力体系,以适配千行百业的各类场景。但杨冰也坦言到:“不是做了金融级数据库,所有行业都能做。”

首先外部商业化环境中,基础设施的情况就千差万别,有些行业是非常传统的集中式用法,升级确实需要一些时间。另外每个行业都有一些特殊场景,大家看重的性能也不同,比如金融客户很在意宕机时间和故障修复,严格控制在8秒以内,但制造业可能不要8秒,30秒也可以,但是特别看重成本,比如游戏特别看重秒级回切、可以回档,不同行业有不同的需求。

“打入一个行业,就要把上上下下的生态都对接一遍,底层能力再好前期也没用,需要一些时间”,杨冰讲道。

但关键核心业务负载需要的几大基本功,在此前的3年、3大行业中得到了严酷的打磨。

过硬的基本功,虽然不代表能够更快,但却决定了能走多远。

从生态建设的层面来看,完善的服务商生态也是爆发的基础之一。2022年,OB发布了“珊瑚计划”,并已和头部最流行的100+ISV打造了340个联合解决方案,其中有20多个已经在其他行业中进行批量复制。OB的技术能力和产品能力通过合作伙伴和开源,正在进行裂变。

正所谓独行快,众行远。十年埋头技术,三年商业化探索之后,1000+客户体量,才刚刚为OB展开第二章。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对分过层后的类进行可视化

变量是&#xff1a; std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> clusters_k_upper std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> clusters_k_lower std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> clusters_un…

无需添加udid,ios企业证书的自助生成方法

我们开发uniapp的app的时候&#xff0c;需要苹果证书去打包。 假如申请的是个人或company类型的苹果开发者账号&#xff0c;必须上架才能安装&#xff0c;异常的麻烦&#xff0c;但是有一些app&#xff0c;比如企业内部使用的app&#xff0c;是不需要上架苹果应用市场的。 假…

C语言真的需要头文件吗?

C语言真的需要头文件吗&#xff1f; 头文件的作用是什么&#xff1f; 如果你直接定义了函数&#xff0c;当然不需要头文件。 因为调用函数&#xff0c;你得知道函数的参数有多少&#xff0c;都什么类型的&#xff0c;返回值是什么&#xff0c;这样才能调用。最近很多小伙伴找…

免费开源的区域屏幕录制(gif转换)工具(支持编辑功能)

软件优点&#xff1a;区域截屏&#xff0c;直接转换为gif即刻分享&#xff0c;免费开源&#xff0c;支持编辑功能 它可以让你轻松地录制屏幕&#xff0c;摄像头或画板的动画&#xff0c;并编辑、保存为 GIF&#xff0c;视频或其他格式。 下载并安装 ScreenToGif 首先&#xf…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2)&#xff0c;这篇文章分析的比较透彻&#xff0c;就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题&#xff1a;RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下&#xff0c;否则会提示&#xff1a;“Enter the passwor…

系列一、GC概述 作用域

一、概述 GC是垃圾回收的意思。次数上频繁收集Young区&#xff0c;少收集Old区&#xff0c;基本不动元空间。 二、作用域 GC的作用域是方法区和堆&#xff0c;主要针对于堆。

程序员如何把【知识体系化】

你好&#xff0c;我是田哥 最近有不少人找我聊如何准备面试&#xff0c;其中有个点是大家都无从下手的问题。 这个问题估计是困扰了很多人&#xff0c;最可怕的是都没有想到什么好点办法。 下面来说说个人的想法&#xff08;仅供参考&#xff09;。 我该怎么准备&#xff1f;这…

c# 字符串转换为byte

c# 字符串转换为byte using System.Text; class proj {internal static void Main(string[] args){byte[] anew byte[3];Console.WriteLine("打印a");Console.WriteLine("a的长度{0}",a.Length);foreach (byte b in a){ Console.WriteLine(b); }a Encodi…

zookeperkafka学习

1、why kafka 优点 缺点kafka 吞吐量高&#xff0c;对批处理和异步处理做了大量的设计&#xff0c;因此Kafka可以得到非常高的性能。延迟也会高&#xff0c;不适合电商场景。RabbitMQ 如果有大量消息堆积在队列中&#xff0c;性能会急剧下降每秒处理几万到几十万的消息。如果…

接口测试 —— 接口测试的意义

1、接口测试的意义&#xff08;优势&#xff09; &#xff08;1&#xff09;更早的发现问题&#xff1a; 不少的测试资料中强调&#xff0c;测试应该更早的介入到项目开发中&#xff0c;因为越早的发现bug&#xff0c;修复的成本越低。 然而功能测试必须要等到系统提供可测试…

Pytorch torch.norm函数详解用法

torch.norm参数定义 torch版本1.6 def norm(input, p"fro", dimNone, keepdimFalse, outNone, dtypeNone)input input (Tensor): the input tensor 输入为tensorp p (int, float, inf, -inf, fro, nuc, optional): the order of norm. Default: froThe following …

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 5

1、要把下面4张图片重新排列成蜗牛的画像&#xff0c;该如何排列这些图片 A、 B、 C、 D、 答案&#xff1a;A 2、将下图的绳子沿虚线剪开后&#xff0c;绳子被分成了()部分 A、6 B、7 C、8 D、9 答案&#xff1a;C 3、下面的立体图形&#xff0c;沿箭头方向看去&#…

LAST论文翻译

《Read Ten Lines at One Glance: Line-Aware Semi-Autoregressive Transformer for Multi-Line Handwritten Mathematical Expression Recognition》论文翻译 文章目录 《Read Ten Lines at One Glance: Line-Aware Semi-Autoregressive Transformer for Multi-Line Handwritt…

python→函数曲线

CSDN中公式一栏&#xff0c;亦可以插入Latex函数。 以函数 为例 也可以用Latex写如下代码&#xff1a; \documentclass{article} \usepackage{amsmath} \begin{document} \[ y \frac{n}{n30} \] \end{document} 如下&#xff1a; 那么&#xff0c;该函数图像如何呢&#xf…

spring-boot-maven-plugin插件 —— 默认打包配置

创建 Spring Boot 应用&#xff0c;默认会添加 Maven 插件&#xff1a;spring-boot-maven-plugin。如果项目结构比较简单&#xff0c;可以不用额外配置&#xff0c;使用默认的编译打包就可以。 执行 maven 打包命令时会自动触发 spring-boot-maven-plugin 插件的 repackage 目…

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点&#xff1a; 扩展&#xff1a; 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活&#xff0c;分别是引用计数法和可达性分析算法&#xff0c;针对可达性分析算法STW时间长、…

ChatGpt3.5已经应用了一段时间,分享一些自己的使用心得.

首先ChatGpt3.5的文本生成功能十分强大&#xff0c;但是chatgpt有一些使用规范大家需要注意&#xff0c;既然chat是一种工具&#xff0c;我们就需要学会它的使用说明&#xff0c;学会chatgpt的引用语句&#xff0c;会极大的方便我们的使用。我们需要做以下的准备。 明确任务和目…

*ST富吉-688272 三季报分析(20231117)

*ST富吉-688272 基本情况 公司名称&#xff1a;北京富吉瑞光电科技股份有限公司 A股简称&#xff1a;*ST富吉 成立日期&#xff1a;2011-01-20 上市日期&#xff1a;2021-10-18 所属行业&#xff1a;计算机、通信和其他电子设备制造业 周期性&#xff1a;1 主营业务&#xff1a…

机器学习第8天:线性SVM分类

文章目录 介绍 特征缩放 示例代码 硬间隔与软间隔分类 主要代码 代码解释 结语 介绍 作用&#xff1a;判别种类 原理&#xff1a;找出一个决策边界&#xff0c;判断数据所处区域来识别种类 简单介绍一下SVM分类的思想&#xff0c;我们看下面这张图&#xff0c;两种分类都…

Spring接入Metric+Graphite+Grafana搭建监控系统

环境搭建 Metric 主要是记录操作记录&#xff0c;把数据传给Graphite&#xff0c;这个只需要引入依赖就可以了 日志收集系统&#xff0c;可以支持很多的监控系统一般在Spring项目中用其收集数据&#xff0c;可以发送到Graphite等监控系统中一般使用Merter和Timer分别记录成功…