你竟然不认识除了MySQL之外的这9种数据库?真的假的?

摘要:你是小阿巴,正在公司敲代码。 老板走过来说:小阿巴,给咱们网站加个商品搜索功能吧。 你拍拍胸脯:没问题,我直接用 MySQL 数据库的 LIKE 模糊查询实现搜索,1 小时上线~ 结果上线后,用户点击搜索,卡了半天没反应,老板气得脸都绿了。
你是小阿巴,正在公司敲代码。 老板走过来说:小阿巴,给咱们网站加个商品搜索功能吧。 你拍拍胸脯:没问题,我直接用 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 数据库的可扩展性很强。
阅读全文