上周那张数据库"家谱"发出来后,后台收到一堆留言:"小耶,关系型数据库到底是个啥?和MySQL、Oracle啥关系?""为啥叫'关系型'?是亲戚关系那种关系吗?""国产的关系型数据库到底能不能打?"
好,今天就按家谱的顺序,从关系型数据库讲起。
不过我不打算给你念教科书------什么"关系型数据库是基于关系模型的数据库管理系统"这种话,你自己百度也能搜到。今天咱们换个角度:把关系型数据库拆开看,它到底由哪几块组成,每一块是干什么的,2026年又进化成了什么样。
一、先回答那个最蠢但也最重要的问题:为什么叫"关系型"?
很多人以为"关系型"指的是"表和表之间有亲戚关系"------订单表和用户表关联,所以叫关系型。这个理解方向对了,但没到根上。
"关系"(Relation)这个词,是1970年IBM研究员E.F. Codd那篇开天辟地的论文里用的数学术语。在数学里,"关系"指的是集合中元素之间的某种联系。映射到数据库里,一张表就是一个"关系"------行是记录、列是属性,表与表之间通过主键和外键建立联系。
简单说:关系型数据库就是用二维表格来组织数据,表之间可以互相"串门" 。就像Excel里的多个Sheet,每个Sheet是一张表,但你可以用VLOOKUP把不同Sheet的数据串起来。
MySQL、Oracle、PostgreSQL、SQL Server,以及国产的金仓KES,都属于这个大家族。
好,概念清了。下面咱们把关系型数据库拆开看------它到底由哪几块组成?
二、关系型数据库的"四大金刚"
一个关系型数据库要跑起来,核心就四块:存储引擎、索引、查询优化器、事务引擎。就像一辆车------发动机、变速箱、方向盘、刹车,缺一不可。
1. 存储引擎:数据怎么"放"
数据存在磁盘上,怎么存直接影响读写速度。
传统关系型数据库大多采用行存储 ------一行数据的所有字段连续存放在一起。就像档案室里的文件柜,每个人的档案按编号排好,你要找一个人的全部信息,打开一个抽屉就能拿到所有材料。行存储适合OLTP场景------每次只查几行数据,要的是"快"。
但如果你要做报表分析------扫描几千万行数据做汇总,行存储就吃亏了,因为每行数据都包含所有字段,哪怕你只关心"销售额"这一列,也得把整行读出来。
这时候列存储 就来了------同一列的数据连续存放在一起。就像超市货架,把同一种商品摆在同一排,你要统计所有商品的销量,只需要逛"销量"那一排就行。列存储适合OLAP场景------海量数据扫描、聚合计算。
2026年的趋势是行存列存混合。金仓KingbaseES V9就采用了行存与列存混合存储技术,系统会根据查询类型自动选择最优存储格式。你不需要纠结"我这业务到底该用行存还是列存",数据库自己帮你选。
2. 索引:数据怎么"找"
数据存好了,怎么快速找到想要的那一条?
最经典的方案是B+树索引。你把它想象成一本字典的目录------你要查"数据库"这个词,先翻到目录找到"数"在第几页,再找到"数据"在第几页,最后定位到具体条目。B+树的查找过程类似,每一层都在缩小范围,直到精确定位到数据所在的磁盘位置。
B+树索引的优点是范围查询快 ------查"ID在100到200之间的所有订单",它能顺着树的叶子节点一路扫过去。缺点是写入有代价------每次插入或更新,都要调整树的结构,可能触发"页分裂"。
还有一种叫哈希索引------等值查询极快(O(1)),但不支持范围查询。就像查字典,如果你只知道字的读音(拼音),哈希索引能一秒定位;但如果你要查"读音在a到c之间的所有字",它就无能为力了。
关系型数据库里,B+树是绝对主流。2026年的新变化是自适应索引------数据库会监控你的查询模式,自动在内存中为频繁访问的数据建立索引加速。金仓KES的动态索引管理机制也能根据实时查询模式自动调整索引策略。
3. 查询优化器:SQL怎么"跑"
这是关系型数据库的大脑------你的SQL写得再烂,优化器尽量帮你兜底。
你写了一条SQL:
bash
SELECT * FROM orders o JOIN users u ON o.user_id = u.id
WHERE o.create_time > '2026-01-01' AND u.vip_level = 5;
优化器拿到这条SQL,不会傻乎乎地按你写的顺序执行。它会干三件事:
第一步:解析------把SQL文本拆成语法树,理解你要干什么。
第二步:生成方案 ------先查orders表过滤再join users?还是先查users表过滤再join orders?用索引扫描还是全表扫描?用哈希连接还是嵌套循环连接?优化器会生成成百上千种执行方案。
第三步:选最优 ------优化器会给每个方案算"成本"(Cost)。这个成本包括:要读多少行数据、要做多少次磁盘I/O、要消耗多少CPU。成本最低的那个,就是优化器选的执行计划。
但优化器也有"翻车"的时候------统计信息过期了。优化器做决策的依据是统计信息(表有多少行、数据分布怎么样)。如果统计信息过时,它以为表里只有100行,结果实际有1000万行,选出来的执行计划可能就是灾难。
2026年的优化器已经在进化。金仓KingbaseES V9引入了自适应查询优化机制 ,结合运行时统计信息实时调整执行计划。系统能在编译阶段预判不同路径的资源消耗。还有执行计划基线(Plan Baseline) 功能------一旦某个SQL跑出了最优执行计划,就把它"固化"下来,以后都按这个跑,防止优化器"抽风"换成一个更差的计划。
4. 事务引擎:数据怎么"稳"
最后一块是事务引擎------保证数据不丢、不乱、不错。
关系型数据库的核心竞争力就是ACID:原子性(要么全做要么全不做)、一致性(数据永远合法)、隔离性(并发不互相干扰)、持久性(提交了就永久保存)。
其中隔离性最复杂------多个事务同时操作同一条数据怎么办?
数据库提供了四种隔离级别:
-
读未提交:最低,能读到别人还没提交的数据(脏读)
-
读已提交:只能读到已提交的数据(大多数数据库的默认级别)
-
可重复读:同一个事务内多次读取结果一致(MySQL默认)
-
串行化:最高,事务完全串行执行,最安全但性能最差
隔离级别越高,数据越安全,但性能越差。这是关系型数据库永恒的性能与一致性之 trade-off。
实现隔离性的两大工具:锁 和MVCC(多版本并发控制) 。锁是"独占"------你用了别人等着。MVCC是"复制"------每个事务看到的是数据的一个快照版本,互不干扰。
金仓KES在事务方面深度兼容Oracle的行为规范,支持主流事务隔离级别(如READ COMMITTED)、锁机制与快照一致性策略。
三、2026年,关系型数据库长什么样了?
把上面四块拼起来,就是一个完整的关系型数据库。但2026年的关系型数据库,已经不止于此了。
第一,分布式能力"内核化" 。以前做分布式要靠中间件(比如分库分表中间件),现在分布式能力直接下沉到数据库内核。金仓KES就是原生支持多节点协同的分布式系统。而且它采用双架构设计------单机部署时是轻量级集中式,需要扩展时可以平滑升级为分布式集群。你不用在选型时就被迫做"集中式还是分布式"的单选题。
第二,多模融合。传统关系型数据库只能存结构化数据(表格)。2026年的关系型数据库,能同时存关系型、文档型、时序型、向量型数据。金仓KES V9就是"五模型一体化"------关系、文档、图、时序、向量五种数据模型在同一个引擎中统一存储与查询。一条SQL就能完成跨模型的联合查询。
第三,AI原生。AI能力不再是"外挂",而是嵌入数据库内核------从查询优化的自动调优,到故障的预测性防御。金仓KES V9 2025就是"AI时代的融合数据库",内置了核心AI能力。
四、关系型数据库还重要吗?
重要。而且越来越重要。
2026年DB-Engines排行榜上,前五名有四个是关系型数据库。为什么?因为核心交易系统离不开ACID------订单不能丢、钱不能错、库存不能乱。这些场景,非关系型数据库扛不住。
但关系型数据库也在变------从"只能存表格"变成"什么都能存",从"单机玩"变成"分布式随便扩",从"人工调优"变成"AI自动优化"。
关系型数据库没死,它只是在进化。
金仓KES就是这条进化路径上的一个典型代表------兼容Oracle/MySQL/PostgreSQL多种语法,单机TPC-C达230万tpmC,已支撑金融、能源、运营商等行业核心应用,数据规模达100+TB、吞吐量超55600+TPS。某省级政务云用金仓构建HTAP融合架构后,核心业务查询性能提升73%,运维成本降低58%。某省级三甲医院HIS系统迁移到金仓KES后,响应时间比旧系统提升了15%。
所以下次有人问你"关系型数据库还有没有前途",你可以告诉他:不是有没有前途的问题,而是它正在变成另一种形态------更融合、更智能、更弹性。
下周我们深入讲非关系型数据库------键值、文档、列族、图,每一种是干什么的、什么时候该用、什么时候千万别用。
小耶在手,SQL 不愁
还有什么想了解的,欢迎留言!小耶一定知无不言言无不尽......我们下次见~