你是小阿巴,正在公司敲代码。

老板走过来说:小阿巴,给咱们网站加个商品搜索功能吧。

你拍拍胸脯:没问题,我直接用 MySQL 数据库的 LIKE 模糊查询实现搜索,1 小时上线~

打开网易新闻 查看精彩图片

结果上线后,用户点击搜索,卡了半天没反应,老板气得脸都绿了。

你急的汗流浃背,只能找到号称『后端之狗』的鱼皮求助:阿巴阿巴,俺用 MySQL 搞不定,咋办啊……

鱼皮:不是哥们,又不是只有 MySQL 这一个数据库。

下面我来带你认识 10 种不同类型的数据库,让你知道什么场景该用什么数据库。

打开网易新闻 查看精彩图片

点个收藏,我们开始~

⭐️ 推荐观看视频版,有动画更好理解:https://www.bilibili.com/video/BV1ChkjBsEzq

关系型数据库

首先是我们接触最多的、也是后端入门必学的 关系型数据库

在关系型数据库中,数据以 的形式进行组织和存储,每个表就像一个 Excel 表格,包含多个 和多个

打开网易新闻 查看精彩图片

比如你要做个学生管理系统,把学生信息存储到关系型数据库中,结构大概是这样的:

学号

学生姓名

所属班级号

1

小李

1

2

小鱼

2

3

小皮

3

上述学生表格中,每一行代表一个学生的信息,每一列代表学生的一个属性。

打开网易新闻 查看精彩图片

我们可以使用结构化查询语言 SQL 来对关系型数据库表的数据进行灵活地查询、选择、过滤等。

打开网易新闻 查看精彩图片

而关系型数据库最大的特点,就是表和表之间可以 存在关系。比如学生管理系统中还可以有班级表,结构如下:

班号

班级名称

1

快乐班

2

泰酷班

3

躺平班

如果我想知道某个学生所属的班级信息,只需要在查询时将学生表的 所属班级号 和班级表的 班号 进行关联,而不用把所有表格的列存储在一起,非常灵活。

打开网易新闻 查看精彩图片

通过 SQL 可以连接查询多张表:

打开网易新闻 查看精彩图片

得到下面的查询结果:

学号

学生姓名

所属班级号

班级名称

1

小李

1

快乐班

2

小鱼

2

泰酷班

3

小皮

3

躺平班

此外,关系型数据库遵循 ACID 原则(原子性、一致性、隔离性和持久性),通过 事务 机制可以保证多个操作同时进行时,数据的状态保持一致。

打开网易新闻 查看精彩图片

举个例子,A 给 B 转账,A 扣钱的同时 B 也会加钱,不会出现 A 扣了钱 B 却没收到钱的情况。

打开网易新闻 查看精彩图片

正因为关系型数据库既能灵活查询、又能准确写入,所以它几乎可以被应用在任何项目中。比如各类管理系统、数据分析系统、金融银行系统等。

比较主流的关系型数据库产品有:

  • MySQL:开源易学,后端开发必学的数据库

  • Oracle:人称 “甲方的数据库”,主要是大型企业和政府机构在用,功能强大但授权费用昂贵

  • PostgreSQL:开源界的天花板,功能最全面

  • SQL Server:微软出品,和 Windows 系统、.NET 生态集成度高

  • SQLite:整个数据库就是一个文件,不需要服务器,非常轻量。被广泛应用在手机 APP、浏览器中,你的手机里可能有几十个 SQLite。

打开网易新闻 查看精彩图片

对于大多数项目,用 MySQL 等关系型数据库来存储数据就足够了。但如果要存储的数据间没有复杂关系、或者需要极致的性能时,它并不是最佳选择。

你点点头:俺知道,就好比俺要写一篇文章,没必要非得把内容塞进 Excel 表格里,直接放到 Word 文档里会更方便编辑和阅读。

打开网易新闻 查看精彩图片

鱼皮:没错,这时就需要与关系型数据库互补的 非关系型数据库

非关系型数据库

非关系型数据库又叫 NoSQL(Not Only SQL),适合存储关系不强的、结构灵活的、需要快速访问的数据。

打个比方,关系型数据库像图书馆,书籍分类明确、摆放有序、借阅有规矩;非关系型数据库像你的书桌,怎么顺手怎么放,拿取方便最重要。

打开网易新闻 查看精彩图片

在实际项目开发中,最常用的非关系型数据库是 KV 数据库和文档数据库。

KV 键值数据库

KV 即 Key-Value,数据是以 键值对 的方式存储在数据库中的,可以理解为一个超大的 HashMap,数据库中存储的每个键都 唯一对应 一个值。

打开网易新闻 查看精彩图片

比如存储用户信息和热门商品信息,结构是这样的:

Key 键

Value 值

user:1001

{"name":"鱼皮", "age":25}

product:hot

["商品1", "商品2", "商品3"]

键和值都可以是任意类型的数据,包括字符串、数字、数组、JSON 对象等,非常灵活。

打开网易新闻 查看精彩图片

由于 KV 存储的结构简单清晰,我们能够很轻松地根据某个键查找出对应的值,就像查字典一样,读写数据的性能都非常高。

打开网易新闻 查看精彩图片

此外,KV 数据库的可扩展性很强。因为数据间不存在直接关联,我们可以把键值对分散到多台机器上存储,通过数据分片、负载均衡等策略来支持海量数据的高并发访问。

打开网易新闻 查看精彩图片

由于高性能和高可扩展性,KV 数据库被广泛应用于缓存、分布式会话、分布式锁、实时统计等场景。

最经典的 KV 数据库肯定是 Redis,它是开源的、基于内存的数据库,不仅支持丰富的数据类型和功能,还有持久化等重要特性,也是后端必学的技术。其他的常用 KV 数据库有 Memcached、Etcd、LevelDB、RocksDB 等。

 文档数据库
打开网易新闻 查看精彩图片
文档数据库

文档数据库也属于非关系型数据库。顾名思义,它适用于存储和管理 半结构化的 文档数据,数据一般以 JSON(BSON)格式存储。

打开网易新闻 查看精彩图片

相比于关系型数据库中严格定义的表格行列,文档数据库的数据结构更像是一份份独立的文档,每个文档都可以包含不同类型和格式的数据,结构非常灵活。

打开网易新闻 查看精彩图片

比如存储博客文章,结构是这样的:

文档 ID

文档数据

1

{"_id": 1, "title": "文章标题1", "content": "这是文章1的内容"}

2

{"_id": 2, "title": "文章标题2", "author": "程序员鱼皮"}

你挠挠头:诶,文档 1 和文档 2 的字段都不一样啊,这也行?

打开网易新闻 查看精彩图片

鱼皮:没错,这就是文档数据库的灵活性。当我们要给某个文档新增一个字段时,不需要像关系型数据库那样先改表结构,直接加就完事了。

打开网易新闻 查看精彩图片

而且支持水平扩展,可以分散到多台服务器上存储,适用于内容管理系统、博客平台、电商商品详情页等场景。

打开网易新闻 查看精彩图片

推荐学习的文档数据库是 MongoDB,因为它存储的就是 JSON(BSON)格式数据,对前端同学很友好,入门难度也很低。

 特定场景的数据库
打开网易新闻 查看精彩图片
特定场景的数据库

虽然关系型和非关系型数据库已经能够满足大部分场景,但在一些特殊场景下,使用专门设计的数据库会更高效。就像你可以用菜刀砍树,但用斧子会更快更省力。

搜索引擎数据库

专门为搜索功能设计的数据库。它能存储和管理大量文本数据,提供快速、准确、灵活的全文检索功能。

打开网易新闻 查看精彩图片

你挠挠头:凭什么它能做到这些呢?

鱼皮:秘密在于它使用了 倒排索引 的方式存储数据。

以存储博客文档为例,关系型数据库的存储结构是:

文档 id

文档内容

1

感谢关注鱼皮

2

鱼皮是一名程序员

3

感谢关注编程导航

我们能够根据 id 来查找到对应的单篇文档,也可以通过搜索精确的关键词,来查找到多篇文档。

比如搜索 "鱼皮",能搜出文档 1、2。

打开网易新闻 查看精彩图片

但是,如果你搜索 "鱼皮程序员",是无法得到搜索结果的,因为没有任何一个文档的内容完全包含 "鱼皮程序员" 这个词。

打开网易新闻 查看精彩图片

而在搜索引擎数据库中,首先会将文档内容按照单词进行分割,也就是 分词。然后 建立倒排索引,也就是构建 单词到文档 id 的映射

打开网易新闻 查看精彩图片

有了上述的倒排索引,当用户搜索 "鱼皮程序员" 时,搜索引擎数据库会先对搜索词进行分词,得到 "鱼皮" 和 "程序员",然后根据这两个词汇就能找到文档 id 1 和 2 了。不用再一行一行遍历表内所有的数据,实现了更灵活、快速的搜索。

打开网易新闻 查看精彩图片

此外,搜索引擎数据库还支持 相关性排序,能够根据用户的搜索词对所有搜索结果进行打分,把最相关的文档排到最上面,就像谷哥度娘那样。

打开网易新闻 查看精彩图片

主流的搜索引擎数据库技术有 Elasticsearch、Apache Solr 等,建议只学习 Elasticsearch 就够了,它的社区最活跃、学习资料最丰富。

向量数据库

向量数据库是专门用于存储和处理 高维向量数据 的数据库,也是 AI 时代最火的数据库。

你好奇道:啥是向量?

鱼皮:简单来说,向量是一个数字数组,每个数字代表一个 特征 维度。

打开网易新闻 查看精彩图片

举个例子,在人脸识别系统中,我们需要通过人脸的特征来判断是否为同一个人。每张人脸图像都可以通过 AI 模型转换成一个向量,这个向量可能包含成百上千个数字,每个数字代表图像的一个 抽象 特征维度。

打开网易新闻 查看精彩图片

实际上,很难说清楚每个数字代表什么,但便于理解,你可以 想象 下标 0 代表鼻子大小,下标 1 代表眼睛距离等等,以此类推。

打开网易新闻 查看精彩图片

之后通过余弦相似度等算法来计算两个向量的相似度,就能判断出两张人脸是不是同一个人。

打开网易新闻 查看精彩图片

向量数据库能够高效存储这些多维向量数据、快速计算向量的相似度、并实现各种不同算法的相似性搜索。适用于人脸识别、推荐系统、语义搜索等场景。

打开网易新闻 查看精彩图片

在 AI 时代,可以用向量数据库给 AI 提供特定领域的知识库,大大提升回答的准确性。

打开网易新闻 查看精彩图片

主流的向量数据库技术有 Milvus、Pinecone 等,像 PostgreSQL 关系型数据库也通过插件支持存储向量类型的数据。

 图数据库
打开网易新闻 查看精彩图片
图数据库

图数据库是专门用于存储和处理 图结构数据 的数据库。

注意,这里的 “图” 可不是照片或图表,而是数学中的图论概念,由节点(Node)和边(Edge)构成的图形结构。

打开网易新闻 查看精彩图片

比如我们要存储一个社交网络的朋友关系,对应的图可能是由多个用户节点和好友关系边组成的。

打开网易新闻 查看精彩图片

在图数据库中,需要 2 个表格来存储。

1)节点信息表:

节点 id

节点名

1

鱼皮

2

阿巴

3

编程导航

2)边信息表:

边 id

边类型

起始节点

结束节点

1

好友

1

2

2

好友

2

3

通过存储这些节点和边的信息,图数据库就能快速查询和分析复杂的关系网络。比如查找 “朋友的朋友”、计算两个用户之间的最短路径、发现社交圈子等等。

打开网易新闻 查看精彩图片

因此,图数据库非常适合构建社交网络、推荐系统、知识图谱等。

比较主流的图数据库有 Neo4j、TigerGraph 等,都支持复杂的图算法和分布式扩展,能够通过并行计算加速图形处理。

时序数据库

时序数据库是专门用于高效存储和处理 时间序列 的数据库。

时间序列是指以时间作为主要维度的数据序列,也就是每个数据单元都带着 时间戳,按时间顺序排列。

打开网易新闻 查看精彩图片

举个例子,在服务器监控系统中,我们需要每分钟记录服务器的 CPU 使用率、内存使用率等指标,数据结构如下:

时间戳

设备ID

CPU使用率

内存使用率

2026-01-08 10:00

Server001

45%

60%

2026-01-08 10:01

Server001

48%

62%

2026-01-08 10:02

Server001

52%

65%

有了这些数据,我们就能够按照时间范围进行高效查询、做聚合分析(比如计算过去 1 小时的平均 CPU 使用率)、进行数据可视化展示。

打开网易新闻 查看精彩图片

因此,时序数据库非常适用于物联网设备监控、服务器性能监控、金融交易数据分析等场景。

主流的时序数据库技术有 InfluxDB、TimescaleDB 等,一般会配合 Grafana 监控看板一起使用,实现数据存储 + 快速可视化。你在运维团队看到的那些酷炫的实时监控大屏,背后就是时序数据库在支撑。

 列存数据库
打开网易新闻 查看精彩图片
列存数据库

区别于传统的行式数据库,列存数据库 以列作为基本的存储单位,把每一列的数据存储在一起。

拿公司每天的收入来举个例子,传统的行式数据库是这么存储的:

日期

销售额

成本

利润

2026-01-01

500

600

-100

2026-01-02

280

450

-170

2026-01-03

290

480

-190

而在列存数据库中,底层大概是这么存储的,看起来像是对矩阵做了一次转置:

日期

2026-01-01

2026-01-02

2026-01-03

销售额

500

280

290

成本

600

450

480

利润

-100

-170

-190

打开网易新闻 查看精彩图片

如果我们要统计这 3 天公司的总利润,传统的行式数据库需要依次读取每一行的数据,然后再提取出利润这一列进行计算;而列存数据库直接读取利润这一列就行了,不用管其他列,大大提高了数据分析和聚合操作的效率。

打开网易新闻 查看精彩图片

而且从计算机底层来分析,把相同类型的数据在同一列中连续存储,可以实现更好的数据压缩效果、节约存储空间。

打开网易新闻 查看精彩图片

因此,列存数据库适用于报表生成、数据仓库、商业智能分析等场景。

主流的列存数据库技术有 ClickHouse、Apache HBase、Druid 等,都是大数据开发的必修课。

融合型数据库

前面我们讲了关系型和非关系型数据库,要么强调灵活查询、要么强调性能和扩展,各有侧重。

但有些数据库偏偏 “既要又要”,要把两者的优点融合到一起,这就是接下来要讲的融合型数据库。

NewSQL 数据库

NewSQL 是一类新兴的数据库,它融合了传统关系型和非关系型数据库的优点。既有传统 SQL 数据库的 ACID 特性和事务支持,又有 NoSQL 的水平扩展能力和高性能。支持标准 SQL 查询、分布式架构、自动容错和故障恢复,可以替代传统的分库分表方案,特别适用于大厂的高并发系统。

打开网易新闻 查看精彩图片

主流的 NewSQL 数据库有 TiDB、CockroachDB、Google Spanner 等。其中 TiDB 是国产之光,支持 HTAP(混合事务分析处理),而且完全兼容 MySQL 协议,迁移成本低;CockroachDB 人称 “蟑螂数据库”,因为它像蟑螂一样顽强,集群中一个节点挂了,其他节点依然能正常服务,打不死。

 多模数据库
打开网易新闻 查看精彩图片
多模数据库

区别于前面所有存储单一数据模型的数据库,多模数据库能够直接在一个数据库里同时存储和处理 多种不同类型 的数据。比如关系型数据、文档数据、图形数据、键值对数据等等,非常灵活、省去了维护多个数据库的麻烦。

打开网易新闻 查看精彩图片

而且多模数据库还支持跨模型事务,能够更轻松地实现数据的一致性和完整性,不需要手动实现跨库事务、跨库数据同步这些复杂操作。

打开网易新闻 查看精彩图片

虽然听起来很厉害,但实际开发中很少用,因为样样通样样松,多模数据库的性能往往不如专注单一场景的数据库。

原生的多模数据库技术有 ArangoDB、OrientDB 等,它们从设计之初就是为多模式设计的。前面也提到,虽然 PostgreSQL 这样的老牌关系型数据库可以通过丰富的插件支持多种数据类型(比如 JSON 文档、向量、地理空间数据等),但它的核心始终是关系模型,多模支持算是锦上添花,不过这也体现了 PostgreSQL 的强大。

 怎么选择数据库?
打开网易新闻 查看精彩图片
怎么选择数据库?

你一脸懵逼:阿巴阿巴,你讲了这么多数据库,俺头都大了,到底该选哪个?

打开网易新闻 查看精彩图片

鱼皮笑了笑:别慌,数据库选型其实没那么复杂。

优先选用 MySQL / PostgreSQL + Redis,能覆盖 90% 的项目需求。

有特定功能或优化需求时,再选择专业数据库。比如需要搜索功能了,再加 Elasticsearch;要做 AI 知识库了,再加向量数据库。

毕竟每多一个数据库,就多一份运维工作和故障风险。

打开网易新闻 查看精彩图片

你:学会了学废了!对了鱼皮,我还听说过数据湖、数据仓库,这些是啥啊?

鱼皮:简单来说,数据仓库是用来存储和分析大量结构化数据的;数据湖更像个大水池,什么数据都能往里扔,包括日志、图片、视频这些非结构化数据。它们更多是大数据架构层面的概念。

打开网易新闻 查看精彩图片

感兴趣的话,点个关注,后面专门出一期讲讲~

打开网易新闻 查看精彩图片

点击下方关注鱼皮,获取免费编程学习路线、简历模板、面试题解、AI 知识库、项目教程、交流群。

一些对大家有用的资源:
100+ 编程学习路线 / 实战项目 / 求职指导
100+ 简历模板
300+ 企业面试题库 mianshiya.com
500+ AI 资源大全
1 对 1 模拟面试
动画学算法教程