[数据库] 一篇文章带你认识10种数据库

605 0
Honkers 2026-2-3 22:05:33 来自手机 | 显示全部楼层 |阅读模式

目录

一、关系型数据库

二、非关系型数据库

2.1 KV键值数据库

2.2 文档数据库

三、搜索引擎数据库

四、向量数据库

五、图数据库

六、时序数据库

七、列存数据库

八、New SQL数据库

九、多模数据库

什么是数据仓库?

什么是数据湖?


一、关系型数据库

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

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

比如你要做个学生管理系统,把学生信息存储到关系型数据库中,结构大致如下图

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

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

而关系型数据库最大的特点,就是表和表之间可以存在关系。

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

通过SQL语句可以连接查询多张表,得到完整的查询结果。

此外,关系型数据库还遵循着ACID原则。通过事务机制可以保证多个操作同时进行时数据和状态保持一致。

例如,A给B转账,A扣钱的同时,B也会加钱。不会出现A扣了钱,B却没收到钱的情况。正因为关系型数据库既能灵活查询、又能准确写入,所以它几乎可以被应用在任何项目中,比如各类管理系统、数据分析系统、金融银行系统等等。

比较主流的关系型数据库产品有开源易学的MySQL,强大却昂贵的Oracle,开源天花板PostgreSQL,微软的SQL Server,和轻量的SQLite。

对于大多数项目,用MySQL等关系型数据库来存储数据就足够了,但如果要存储的数据间没有复杂关系或者需要极致的性能时,MySQL并不是最佳选择。比如要写一篇文章,没必要非得把内容全部塞进Excel表格里,直接放到Word文档里会更方便编辑和阅读。这时就需要和关系型数据库互补的非关系型数据库了。

二、非关系型数据库

非关系型数据库又叫NoSQL,适合存储关系不强的、结构灵活的、需要快速访问的数据。打个比方,关系型数据库像图书馆,书籍分类明确,摆放有序,借阅有规矩,而非关系型数据库就像你的书桌,怎么顺手怎么放,拿取方便最重要。在实际项目开发中,最常用的非关系型数据库是KV键值数据库和文档数据库。

2.1 KV键值数据库

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

比如存储用户信息和热门商品信息,结构如下图:

键和值都可以是任意类型的数据,包括字符串、数组、数字、JSON对象等,非常灵活。由于KV存储的结构简单清晰,我们能够很轻松地根据某个键查找出对应的值,就像查字典一样,读写数据的性能都非常高。

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

由于高性能和高可拓展性,KV数据库被广泛应用于缓存、分布式会话、分布式锁、实时统计等场景,最经典的KV数据库就是我们所熟知的Redis。它是开源的、基于内存的数据库,不仅支持丰富的数据类型和功能,还有持久化等重要特性,也是后端必学的技术。其他的常用KV数据库有Memcached、Etcd、LevelDB、RocksDB等。

2.2 文档数据库

文档数据库也属于非关系型数据库,顾名思义,它适用于存储和管理半结构化的文档数据,数据一般以JSON等格式存储,相比于关系型数据库中严格定义的表格行列,文档数据库的数据结构更像是一份份独立的文档。

每个文档都可以包含不同类型和格式的数据,结构非常灵活。比如存储博客文章,当我们要给某个文档新增一个字段时,不需要像关系型数据库那样先修改表结构,直接加就完事了。

而且支持水平扩展,数据可以分散到多台服务器上存储。

文档数据库适用于内容管理系统、博客平台、电商商品详情页等场景,推荐学习的文档数据库是MongoDB,因为它存储的就是JSON格式的数据,对前端同学很友好,入门难度也很低。

虽然关系型和非关系型数据库已经能够满足大部分场景,但在一些特殊场景下,使用专门设计的数据库会更高效。

三、搜索引擎数据库

先来看看专门为搜索功能设计的数据库,搜索引擎数据库,它能存储和管理大量文本数据,提供快速、准确、灵活的全文检索功能。实现核心是采用了倒排索引的方式存储数据。

比如要存储博客文档,关系型数据库能根据id来查找到对应的单篇文档,也可以通过搜索精确到关键词来查找到多篇文档。如果文档中没有"鱼皮程序员"这个内容,则当用户搜索"鱼皮程序员"时是搜索不到文档的。而在搜索引擎数据库中,首先会将文档内容按照单词进行分割,也就是分词,然后建立倒排索引,也就是构建单词到文档id的映射,有了上述的倒排索引,当用户搜索"鱼皮程序员"时,搜索引擎数据库会先对搜索词进行分词得到“鱼皮”和“程序员”然后根据这两个词汇就能找到文档id 1和 id 2了。不用再一行一行的遍历表内所有的数据了,实现了更灵活、快速的搜索。

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

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

四、向量数据库

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

这的向量是什么呢?简单来说向量是一个数字数组,每个数字代表一个特征维度,在人脸识别系统中,我们需要通过人脸的特征来判断是否为同一个人,每张人脸图像都可以通过AI模型转换成一个向量。这个向量可能包含成百上千个数字,每个数字代表图像的一个抽象特征维度,实际上,很难说清楚每个数字代表什么,为了便于理解,你可以想象下标0代表鼻子的大小,下标1代表眼睛距离等等。之后通过余项相似度等算法,来计算两个向量的相似度,就能判断出两张人脸是不是同一个人了。

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

在AI时代,可以用向量数据库给AI提供特定领域的知识库,大大提升回答的准确性,主流的向量数据库有Milvus、Pinecone等,像PostgreSQL关系型数据库也通过插件支持存储向量类型的数据。

五、图数据库

图数据库是专门用于存储和处理图结构数据的数据库,这里的图指的可不是照片或者图标,而是数学中的图论概念,是由节点和边构成的图形结构。

比如我们要存储一个社交网络的朋友关系,对应的图可能是由多个用户节点和好友关系边组成的,在图数据库中,需要两个表格来存储数据,节点信息表和边信息表,通过存储这些节点和边的信息,图数据库就能快速查询和分析复杂的关系网络。比如查找朋友的朋友,计算两个用户之间的最短路径,发现社交圈子等等,图数据库非常适合构建社交网络、推荐系统、知识图谱等等。

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

六、时序数据库

时序数据库是专门用于高效存储和处理时间序列的数据库,时间序列是指以时间作为主要维度的数据序列,也就是每个数据单元都带着时间戳,按时间顺序排列。

例如,在服务器监控系统中,我们需要每分钟记录服务器CPU使用率,内存使用率等指标,数据结构大致如下图,有了这些数据,我们就能够按照时间范围进行高效查询、做聚合分析、进行数据可视化展示。

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

主流的时序数据库技术有InfluxDB、TimescaleDB等等,一般会配合Grafana监控看板一起使用,实现数据存储+快速可视化。

像在运维团队看到的哪些酷炫的实时监控大屏,背后就是时许数据库在支撑。

七、列存数据库

这个数据库有些特殊,区别于传统的行式数据库,列存数据库是以列作为基本的存储单位,把每一列的数据存储在一起,就拿公司每天的收入来举例,传统的行式数据库和列存数据库的存储方式如下图所示:

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

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

列存数据库适用于报表生成、数据仓库、商业智能分析等场景,主流的列存数据库有CllickHouse、Apache HBase 、Druid等,都是大数据开发的必修课。

前面我们讲了关系型和非关系型数据库,要么强调灵活查询、要么强调性能和扩展,各有侧重,但这个融合型数据库偏偏既要又要,将两者的优点都融合到一起。

八、New SQL数据库

这是一类新兴的数据库,它融合了传统关系型和非关系型数据库的优点,既有传统SQL数据库的ACID特性和事务支持,又有NoSQL的水平扩展能力和高性能。

支持标准SQL查询、分布式架构、自动容错和故障恢复,可以替代传统的分库分表方案,特别适用于大厂的高并发系统。

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

九、多模数据库

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

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

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

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

讲了那么多数据库,到底应该怎么选呢?

一般来说优先选择MySQL或者PostgreSQL + Redis,就已经能覆盖90%的项目需求了,如果有其他特点功能或优化需求时,我们再去选择专业数据库。比如需要搜索功能了,加Elasticsearch;要做AI知识库了,再加向量数据库。毕竟每加一个数据库,就多一份运维工作和故障风险。

拓展知识:

什么是数据仓库?

数据仓库是用来存储和分析大量结构化数据的。

什么是数据湖?

数据湖更像个大水池,什么数据都能往里面扔,比如日志、图片、视频这些的非结构化数据。

文章内容来源:

【除了MySQL,这 9 种数据库你都不认识?】 https://www.bilibili.com/video/BV1ChkjBsEzq/?share_source=copy_web&vd_source=700190762c74773d36f39533f8706638

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行