中国多主数据库:压强投入,期待破茧
拿破仑曾说:“战争的艺术就是在某一点上集中最大优势兵力”,强调了力量集中的重要性。
如今,国际形势风云变幻,西方世界对中国的围剿不再仅仅体现在军事和地缘政治上,而更多表现在经济与科技上。在科技领域,我们不得不再面临一次从根技术、硬件到软件的全面突围战争;而无数战略家总结的“集中力量突破一处”策略,仍是值得中国科技界借鉴的获胜密码。
中国数据库产业突围之战
中国大地人杰地灵,自古以来,在一个领域发展早期,我国一定会出现百家争鸣、百花齐放的场面。近10年来,中国数据库产业迎来了黄金时代,从互联网掀起的“去IOE”浪潮又开辟了新的架构赛道,使数百家数据库企业喷涌而出;作为IT系统中最核心的软件之一,相关行业标准的出台也为中国数据库发展带来重大利好。
然而,正如不是每一次创新都能带来产业革命,当前繁荣发展的背后也隐藏着隐忧;随着经济下行周期的到来,中国数据库需要尽快在业务落地上找到突破口。
金融业数据库使用情况一直是数据库产业发展的风向标。1998年,IBM DB2、Informix在金融核心系统落地商用,奠定了此后20年大小机在核心系统的格局;如今,金融业成为大小机下移的急先锋。随着近年来数据库国产化工作推进,中国数据库在金融业IT系统规模增速喜人,但质量仍存在隐患。
据金融信息化研究所2022年编撰的《金融业数据库供应链安全发展报告》显示,当前银行业办公系统与一般系统中国数据库使用比例已突破50%,但在核心系统使用比例仍在15%左右;而在证券和保险业,非核心系统中国数据库使用比例均低于30%,核心系统低于20%。
需知核心系统与非核心系统数据库采购价格有倍数差异,无法突破核心系统可能使许多数据库厂商难以形成商业正循环,最终影响到其业务连续性;而金融行业对中国数据库的投资占整体的46%,如果在金融业内数据库厂商无法商业正向闭环,在其它行业“找补”将更加艰难。
中国数据库市场内卷也是构成危机的主要因素。据信通院2022年编撰的《数据库发展研究报告》统计,中国数据库厂商数量占全球总量的32%,是除美国外全球第二大数据库厂商发源地;但中国数据库市场规模只占全球的5.2%。“僧多粥少”的局面加上厂商间核心技术“大同小异”的特点,导致在竞标中各中国数据库难免陷入低价竞争,进一步加深商业难以正向闭环的恶性循环。
近年来不时传出中国数据库厂商因项目亏损导致不得不对客户“停服”的不良事件,一方面损害了行业对中国数据库的信任度,另一方面也打击了资本市场对产业向好发展的信心。
总体来讲,当前中国数据库虽有强势发展劲头,但从关键行业应用情况及市场发展趋势来看,仍面临产业突围的关键战斗。
多主数据库或是突围关键缺口
事实上,中国数据库并非没有出海的野心。OceanBase曾在菲律宾第一大电子钱包GCash有过成功案例。但在非互联网行业的交易型数据库领域,在“自家园子”尚未成功战胜Oracle、DB2等厂商的中国数据库,尚无信心面对出海后更加腥风血雨的竞争。万丈高楼平地起,中国数据库产业突围的方向仍是不断提升自身实力。
然而,提升自己同样需要找到方向。西方数据库系统厂商起步远远早于国内,在引擎、管理系统乃至算法等方向均有深厚技术积累;虽然MySQL和PostgreSQL的开源化帮助其它厂商拉近了技术代差,但实际产品水平仍有不小差距。更难拉近的是使用经验上的鸿沟,因为软件的催熟往往是靠着大量用户反馈来完成的,而缺少使用体验与反馈的中国数据库必然会有更多的Bug和更少的功能,使最终用户的使用体验差距更大。
总体来说,数据库产业是一个优势积累型的市场,一味追赶永远无法实现领先,唯有通过革命性创新开辟新赛道,才有机会改变格局。如今,这一革命性创新似乎已经显现,这就是多主数据库。
什么是多主数据库?简单来说,就是集群中所有节点可以同时读写数据。传统基于数据分片实现节点同时读写的数据库,在某一时刻能够读写某一个分片的节点仍只有一个,其本质仍是“一主多备”的架构;而多主数据库中,任何数据分片都能在任何时刻被所有节点并发读写。这样做的显著好处是线性提升了数据库的并发度,使数据库性能可以没有瓶颈的横向扩展;而分片型数据库的性能严重依赖分片策略,如果某个分片访问频度过高则将导致性能瓶颈。
此外,多主数据库还有稳定时延、节省资源、提升运维效率等优势。早在上个世纪80年代,数据库产业就兴起了对多主数据库的研究,但至今稳定商用案例仍只有Oracle RAC,这也支撑它成为关系型数据库的绝对王者。当前多主数据库赛道还有大量空间,一旦取得突破,数据库产业格局仍有颠覆的可能性。
笔者认为多主数据库是中国数据库的一个关键突破口。对于多主数据库来说,单机能力与集群规模是其一体两面,二者可以相互弥补,这给予中国数据库以规模换性能的重要机会。
从过去二十年发展看,中国数据库产业发展大方向就是集群化。由于数据库单机性能瓶颈,加上国内互联网市场高度发达带来高并发诉求凸显,中国数据库大都往不断扩大集群规模的方向发展,也因此在集群数据管理上积累了丰富经验。
然而,不改变主从数据库的本质,集群规模扩大反而会导致事务处理时延增加,无法真正提升交易性能;而多主数据库可以在提升并发度的同时不影响事务效率,进而真正激发出集群威力。
近年来的产业动态也证明了这一点。早在2022年3月,阿里云就发布了其基于存算分离的多主架构PolarDB方案;2023年3月,华为宣布其基于存算分离和自研Cantian引擎,可帮助主备数据库升级多主架构,并于同年9月将Cantian引擎正式开源;9月的DTCC数据库技术大会上,优炫软件正式发布其基于共享存储的数据库多读多写方案,万里数据库也解读了其通过Cantian引擎实现GreatDB多主架构的最新进展;10月,金融数据库技术大会上,金融信息化研究所携10家中国数据库产业链领军企业,共同启动金融多主数据库应用推进计划。可以说,中国数据库产业已经全面瞄准多主架构这一关键缺口,开启了一场轰轰烈烈的突围战争了。
突围关键:集中力量于一个缺口
虽然方向明确,但突破多主数据库依然困难重重。多主数据库完全实现稳定商用乃至国际领先,还有许多技术难题需要攻克。
比如,多主数据库节点间如何高效的交换缓存数据,这是事务的隔离性能否保障的关键;再比如,当集群规模扩大后,多主集群内如何高效管理,节点故障如何防止脑裂;还有多主集群使用的共享存储能否应对整个集群的高并发访问,能否承担一些近数据计算工作以缓解计算集群压力等等。每一个问题放眼全球数据库产业都没有“标准答案“可以借鉴,我们需要“摸着石头过河”。
事实上,“摸着石头过河”对中国科技界不是新鲜事,我们在很多科技领域都已探索至无人区,依然能够实现突破性创新。但以当前中国数据库产业阵型来看,在多主数据库之路迅速取得突破恐怕难言轻易。由于数据库产品具有极强的商业属性,难以像其它尖端技术领域由国家牵头研发,导致中国数据库从业人数众多,但力量分散,任何一个厂商都难以独自攻克多主数据库难题。
据信通院统计,中国43%的数据库企业人数小于50人,只有前9%的企业拥有50-200人的核心研发团队;而交换机、存储等多主数据库必须的硬件基础设施产业,也尚未与数据库产业实现广泛的研发合作。与之对比,数据库行业巨头Oracle常年保持上千人的核心研发团队,且自身拥有强大的存储研发能力,其ASM本身就是一个能力超强的存储软件,才能打造出业界经典的多主数据库Oracle RAC。
借鉴先进经验,当务之急是中国数据库产业如何拧成一股绳,共同朝着既定目标分工合作攻克难关,而不再是各自为战、无效内卷,笔者认为,此事非政策性机构牵头不能完成。
令人振奋的消息很快传来了。10月13日,在2023金融业数据库技术大会-数据库技术创新发展分论坛中,金融信息化研究所携10家数据库产业链的领军企业,共同启动金融多主数据库应用行动计划。
据笔者了解,金融信息化研究所主要承接人民银行金融科技研究课题,长期耕耘于中国金融科技研究咨询与产业孵化工作,与中国人民银行下属的中国金融电子化集团有紧密联系;而由金融信息化研究所主办的金融业数据库技术大会历年均有人行、银监会、国有大行和股份制大行等高层领导与会,在业内影响力巨大。一言以蔽之,金融信息化研究所完全有能力对多主数据库的产业发展进行统筹推进,此次应用行动计划具有极强的落地性。
参与行动的首批企业也颇有意思。有阿里、奥星贝斯、达梦、南大通用四大行业巨头压阵,天翼云、万里数据库、优炫数据库等近年来在多主数据库取得商用突破的新兴厂商也加入其中,云和恩墨的出现则意味着openGauss生态同样有意迈向多主架构。
更为让人眼前一亮的,是此次代表华为出席的,是国产高端存储领军企业华为存储,这意味着此次合作不再仅仅是数据库界的大联欢,而是整个IT产业界的历史性握手。首批企业组成呈现生态多样化、路线多样化、产业结构多样化的特点,而金融信息化研究所则可驱动金融行业提供广泛的产品应用与催熟场景。期待在行动计划工作组的统筹下,各与会组织可以合理分工、充分合作,共同加速中国多主数据库稳定落地商用。
无数胜利的经验告诉我们,发现缺口、集中力量突破,是打赢局部战争、进而取得全面战争胜利的关键。如今,在政策机构的统筹牵引下,中国数据库产业正积聚力量向多主数据库发起冲击。在空前的压强投入下,期待中国数据库破茧化蝶的一天。
相关文章:

中国多主数据库:压强投入,期待破茧
拿破仑曾说:“战争的艺术就是在某一点上集中最大优势兵力”,强调了力量集中的重要性。 如今,国际形势风云变幻,西方世界对中国的围剿不再仅仅体现在军事和地缘政治上,而更多表现在经济与科技上。在科技领域࿰…...

JavaScript在ES6及后续新增的常用新特性
JavaScript经历了不同标本的迭代,在不断完善中会添加不同的新特性来解决前一个阶段的瑕疵,让我们开发更加便捷与写法更加简洁! 1、箭头函数: 箭头函数相比传统的函数语法,具有更简洁的语法、没有自己的this值、不会绑…...

试试流量回放,不用人工写自动化测试case了
大家好,我是洋子,接触过接口自动化测试的同学都知道,我们一般要基于某种自动化测试框架,编写自动化case,编写自动化case的依据来源于接口文档,对照接口文档里面的请求参数进行人工添加接口自动化case 其实…...

密钥管理系统功能及作用简介 安当加密
密钥管理系统的功能主要包括密钥生成、密钥注入、密钥备份、密钥恢复、密钥更新、密钥导出和服务,以及密钥的销毁等。 密钥生成:通过输入一到多组的密钥种子,按照可再现或不可再现的模式生成所需要的密钥。一般采用不可再现模式作为密钥生成…...

vue中watch属性的用法
在Vue中,watch属性用于监听一个数据的变化,并且在数据变化时执行一些操作。它可以观察一个具体的数据对象,从而在该数据对象发生变化时触发对应的回调函数。 使用watch属性的步骤如下: 在Vue实例中添加一个watch对象 new Vue({…...

Redis-使用java代码操作Redis
🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…...

0基础学习PyFlink——事件时间和运行时间的窗口
大纲 定制策略运行策略Reduce完整代码滑动窗口案例参考资料 在 《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》一文中,我们使用的是运行时间(Tumbling ProcessingTimeWindows)作为窗口的参考时间: reducedkeyed.window(TumblingProcess…...

Git Rebase 优化项目历史
在软件开发过程中,版本控制是必不可少的一环。Git作为当前最流行的版本控制系统,为开发者提供了强大的工具来管理和维护代码历史。git rebase是其中一个高级特性,它可以用来重新整理提交历史,使之更加清晰和线性。本文将详细介绍g…...

两种MySQL OCP认证应该如何选?
很多同学都找姚远老师说要参加MySQL OCP认证培训,但绝大部分同学并不知道MySQL OCP认证有两种,以MySQL 8.0为例。 一种是管理方向,叫:Oracle Certified Professional, MySQL 8.0 Database Administrator(我考试的比较…...

Java用log4j写日志
日志可以方便追踪和调试问题,以前用log4net写日志,换Java了改用log4j写日志,用法和log4net差不多。 到apache包下载下载log4j的包,解压后把下图两个jar包引入工程 先到网站根下加一个log4j2.xml的配置文件来配置日志的格式和参…...

PCTA认证考试-01_TiDB数据库架构概述
TiDB 数据库架构概述 一、学习目标 理解 TiDB 数据库整体结构。了解 TiDB Server,TiKV,TiFlash 和 PD 的主要功能。 二、TiDB 体系架构 1. TiDB Server 2. TiKV OLTP 3. Placement Driver 4. TiFlash OLAP OLTPOLAPHTAP...

路由过滤路由引入
目录 一、实验拓扑 二、实验需求 三、实验步骤 1、配置IP地址 2、配置RIP和OSPF 3、配置路由引入 4、使用路由过滤,使 R4 无法学到 R1 的业务网段路由,要求使用 prefix-list 进行匹配 5、OSPF 区域中不能出现 RIP 协议报文 一、实验拓扑 二、实…...

视频剪辑技巧:批量合并视频,高效省时,添加背景音乐提升品质
随着社交媒体的兴起,视频制作越来越受到人们的关注。掌握一些视频剪辑技巧,可以让我们轻松地制作出令人惊艳的视频。本文将介绍一种高效、省时的视频剪辑技巧,帮助您批量合并视频、添加背景音乐,并提升视频品质。现在一起来看看云…...

数据可视化篇——pyecharts模块
在之前的文章中我们已经介绍过爬虫采集到的数据用途之一就是用作可视化报表,而pyecharts作为Python中可视化工具的一大神器必然就受到广大程序员的喜爱。 一、什么是Echarts? ECharts 官方网站 : https://echarts.apache.org/zh/index.html ECharts 是…...

Python--快速入门二
Python--快速入门二 1.Python数据类型 1.可以通过索引获取字符串中特定位置的字符: a "Hello" print(a[3]) 2.len函数获取字符串的长度: a "Hello" print(a) print(len(a)) 3.空值类型表示完全没有值: 若不确定当…...

【ArcGIS Pro二次开发】(74):Python、C#实现Excel截图导出图片
以村庄规划制图为例,通过对现状和规划用地的统计,生成Excel格式的【空间功能结构调整表】后,需要进一步将表格导出成图片,并嵌入到图集中,这样可以实现全流程不用手动参与,让制图的流程完全自动化。 关于E…...

74HC138逻辑芯片
文章目录 74系列逻辑芯片——74HC138基础信息描述特征应用范围 功能信息封装引脚基本电路 扩展性能分析 74系列逻辑芯片——74HC138 基础信息 描述 74HC138器件设计用于需要极短传播延迟时间的高性能存储器解码或数据路由应用;在高性能存储系统中,可使用…...

【架构图解】API架构图解:如何以图表形式展现复杂系统
文章目录 前言序列图组件图数据流程图结论 前言 架构图是链接到 API 的不同组件/服务如何相互交互的直观表示。 当需要理解 API 的架构并将其传达给不同的利益相关者(包括其他开发人员、项目经理和客户)时,这些图表非常有用。 图表/视觉效…...

D-link未授权访问以及远程代码执行
随便输入一个错误密码,会跳转到页面: /page/login/login.html?errorfail继续访问有效页面漏洞url: /Admin.shtml然后访问管理页面去更改管理密码 直接构造payload访问漏洞url: /cgi-bin/execute_cmd.cgi?cmdid执行命令&#…...

flask踩坑集锦
很久之前用过flask,那时候是跟着教程,教程怎么做我就怎么做,没有仔细考虑过。 现在是全靠文档和搜索一步一步搭建,忘了很多东西,就碰了很多壁,浅浅记录一下子。 1.Jinja2的模板继承,是指抽出每…...

VulnHub jarbas
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…...

基因预测软件prodigal的使用
Prodigal是一款常用的基因预测软件,可以用于预测原核生物基因组中的开放阅读框(ORF),并根据不同的编码调用方式(如起始密码子和终止密码子)对其进行注释。 以下是使用Prodigal进行基因预测的步骤ÿ…...

银行存取款系统
题目 一个简单的存取款系统,用户可以选择存钱、取钱、转账、修改密码和退出系统等业务。程序使用了菜单界面来展示业务选项,并根据用户的选择调用相应的函数进行处理。具体功能如下: 登录:实现登录功能,需要输入正确密码才能进入菜单系统。 菜单:显示菜单界面,列出其…...

ConnectionError: HTTPSConnectionPool
ConnectionError: HTTPSConnectionPool(host‘zbbfxstatic.figtingdream.com’, port443): Max retries exceeded with url: /api/cache (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x00000249795AD9A0>: Failed to establish a ne…...

YOLO系列环境配置及训练
目录 前言 一、下载所需 1、Anaconda安装 2、NVIDIA 驱动程序安装 3、CUDA安装 4、CUDNN下载及配置 二、环境配置 1、虚拟环境创建 2、Pytorch安装 3、pycharm环境切换及剩余库的安装 4、YOLO代码的测试及训练配置步骤 (1)测试 (…...

推荐PHP付费进群源码
PHP付费进群源码带自动定位基于ThinkPHP框架开发的,可以快速搭建知识付费粉丝进群。 更新: 1.首页付款轮播 2.城市定位功能 3.更新及优化域名库及支付设置 4.新增一张图模板设置模式,简化后台模板设置 5.前后台其他优化 演示地址:…...

Maven修改仓库和镜像地址
目录 1、修改仓库地址2、修改镜像地址 1、修改仓库地址 使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3(bundle)。maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下: 当maven下的pom文件中的依赖逐渐增加时,maven仓库下…...

【m98】接收udp包到变为CopyOnWriteBuffer的rtp包及call模块传递的过程
RtpTransport::OnReadPacket ice和Dtls 传输的创建及1个简单的SFU转发实例 实例生动的再现了这一过程: 【webrtc】接收/发送的rtp包、编解码的VCM包、CopyOnWriteBuffer 对于m98的代码,进行走读,大体了解到类似的过程: \src\pc\rtp_transport.cc 收到的data指针和长度len 直…...

synchronized 到底锁的是谁?
synchronized 到底锁的是谁? 修饰方法: 1、静态方法 2、非静态方法,锁住的是方法的调用者 修饰代码块 1、synchronized修饰非静态方法 锁住的是方法的调用者 锁住实例 流程: 1、线程A先拿到synModel对象然后给这个 synModel对象…...

第六章:进制转换与数据存储
系列文章目录 文章目录 系列文章目录前言一、进制二、进制的转换三、原码、反码、补码总结 前言 进制转换是程序员的基本功。 一、进制 进制组成二进制0-1 ,满2进1以0b或0B开头十进制0-9 ,满10进1八进制0-7,满8进1以数字0开头表示十六进制0…...