了解SQL和NoSQL数据库以及不同的数据库模型
状态: 已弃用
本文已弃用,不再维护。
原因
我们重写了介绍性数据库内容。
请参阅
本文可能仍可用作参考,但可能不起作用或无法遵循最佳实践。 我们强烈建议使用针对您正在使用的操作系统编写的最新文章。
介绍
自古以来,计算机最需要和依赖的功能之一就是内存。 尽管技术细节和底层实现方法有所不同,但大多数计算机都配备了必要的硬件来处理信息并妥善保管它们以备将来需要时使用。
在当今世界,几乎不可能想到任何不利用机器这种能力的应用程序,无论它们是服务器、个人计算机还是手持设备。 从简单的游戏到与业务相关的工具,包括网站,每次操作都会处理、记录和检索某些类型的数据。
数据库管理系统 (DBMS) 是高级软件,与低级应用程序编程接口 (API) 一起工作,负责处理这些操作。 为了帮助解决不同类型的问题,几十年来已经开发了新类型的 DBMS(例如 关系、NoSQL 等)以及实现它们的应用程序(例如 MySQL、PostgreSQL、MongoDB、Redis 等)。
在这篇 DigitalOcean 文章中,我们将介绍数据库和数据库管理系统的基础知识。 我们将了解不同数据库如何工作背后的逻辑以及它们的区别。
词汇表
1. 数据库管理系统
2. 数据库模型
- 关系模型
- 无模型 (NoSQL) 方法
3. 流行的数据库管理系统
- 关系数据库管理系统
- NoSQL (NewSQL) 数据库系统
4. SQL 和 No-SQL 数据库管理系统的比较
数据库管理系统
数据库管理系统是一个总称,指的是各种完全不同的工具(即 计算机程序或嵌入式库),主要以不同且非常独特的方式工作。 这些应用程序处理或大量协助处理处理信息集合。 由于信息(或数据)本身可以有各种形状和大小,自 21 世纪下半叶以来,已经开发了数十种 DBMS,以及大量的 DB 应用程序,以帮助解决不同的编程和计算机化需求。
数据库管理系统基于 数据库模型:为处理数据而定义的结构。 每个新兴的 DBMS 以及为实现其方法而创建的应用程序,在所述信息的定义和存储和检索操作方面都以非常不同的方式工作。
尽管有大量的解决方案实现了不同的 DBM,但在历史上的每个时期,相对少量的选择都迅速变得非常流行并使用了更长的时间,这可能是过去几十年以来最主要的选择(甚至更长)是 关系数据库管理系统 (RDBMS)。
数据库模型
每个数据库系统都实现了不同的 数据库模型 来对正在管理的数据进行逻辑结构化。 这些模型是数据库应用程序如何工作和处理其处理的信息的第一步,也是最大的决定因素。
有很多不同类型的数据库模型清楚而严格地提供了结构化数据的方法,其中最流行的可能是关系模型。
尽管关系模型和关系数据库非常强大和灵活——当程序员知道如何使用它们时,对于许多人来说,这些解决方案从未真正提供过一些问题或特性。
最近,一系列称为 NoSQL 数据库的不同系统和应用程序开始迅速流行,它们承诺解决这些问题并提供一些非常有趣的附加功能。 通过消除关系模型中定义的严格结构化的数据保存风格,这些数据库系统通过提供一种更自由的信息处理方式来工作,从而提供了很大的灵活性和易用性——尽管它们带有自己的一些严重的问题,考虑到数据的重要和不可或缺的性质。
关系模型
1970 年代引入的关系模型提供了一种非常适合数学的方式来构建、保存和使用数据。 它通过引入关系的手段扩展了平面模型、网络模型等的早期设计。 关系带来了将数据分组保存为受约束的集合的好处,其中数据表以结构化方式包含信息(例如 一个人的姓名和地址),通过将值分配给属性(例如 a 人的身份证号)。
由于数十年的研究和开发,实现关系模型的数据库系统工作得非常高效和可靠。 结合使用这些工具的程序员和数据库管理员的长期经验,使用关系数据库应用程序已成为 the 任务关键型应用程序的选择,在任何情况下都不会丢失任何信息 - 特别是由于故障或 陷阱。
尽管关系数据库在形成和处理数据方面具有严格的性质,但它可以变得非常灵活并提供很多功能,只需付出一点努力即可。
无模型 (NoSQL) 方法
NoSQL 结构化数据的方式包括摆脱这些约束,从而解放了保存、查询和使用信息的方式。 NoSQL 数据库通过使用非结构化(或结构化在运行)类型的方法,旨在消除严格关系的限制,并提供许多不同类型的方法来有效地保存和处理特定用例的数据(例如 全文文档存储)。
流行的数据库管理系统
在本文中,我们的目标是向您介绍一些最流行和常用的数据库解决方案的范例。 尽管很难得出一个数字结论,但可以清楚地估计,对于大多数人来说,胜算在于关系数据库引擎,或者相对较新的 NoSQL 引擎。 在我们开始了解每个系统的不同实现之间的差异之前,让我们现在看看底层是什么。
关系数据库管理系统
关系数据库系统的名字来源于它实现的模型:关系模型,我们之前已经讨论过。 目前,在未来相当长的一段时间内,它们都是并且将成为保持数据可靠和安全的流行选择——而且它们也很有效。
关系数据库管理系统需要定义和明确设置的模式——不要与 PostgreSQL 对该术语的特定定义相混淆——以便接受数据。 这些用户定义的格式决定了数据的包含和使用方式。 模式很像带有列的表,表示属于每条记录的信息的数量和类型; 行代表条目。
一些流行的关系数据库管理系统是:
- SQLite:
一个非常强大的嵌入式关系数据库管理系统。
- MySQL:
最流行和最常用的 RDBMS。
- PostgreSQL:
最先进、符合 SQL 的开源目标 RDBMS。
注意: 要了解有关 NoSQL 数据库管理系统的更多信息,请查看我们关于该主题的文章:NoSQL 数据库管理系统的比较。
NoSQL (NewSQL) 数据库系统
NoSQL 数据库系统不附带结构化关系解决方案使用(或需要)的模型。 有许多实现,每个实现都非常不同并且满足特定需求。 这些无模式的解决方案要么允许无限制地形成条目,要么相反,非常简单但非常有效,因为有用 基于键的值存储 。
与传统的关系数据库不同,可以将数据集合与一些 NoSQL 数据库(例如 MongoDB)一起分组。 这些 文档存储 将每个数据一起保存为单个集合(即 文档)在数据库中。 这些文档可以表示为单个数据对象,类似于 JSON 并且仍然是取决于属性的查询。
NoSQL 数据库没有通用的数据查询方式(即 类似于关系数据库的SQL),每个解决方案都提供了自己的查询系统。
注意: 要了解有关关系数据库管理系统的更多信息,请查看我们有关该主题的文章:关系数据库管理系统的比较。
SQL 和 No-SQL 数据库管理系统的比较
为了得出一个更简单易懂的结论,让我们分析一下 SQL 和 No-SQL 数据库管理系统的区别:
- 保存数据的结构和类型:
SQL/关系数据库需要具有定义属性的结构来保存数据,这与通常允许自由流动操作的 NoSQL 数据库不同。
- 查询:
无论其许可证如何,关系数据库都在一定程度上实现了 SQL 标准,因此可以使用结构化查询语言 (SQL) 对其进行查询。 另一方面,NoSQL 数据库都实现了一种独特的方式来处理它们管理的数据。
- 缩放:
两种解决方案都易于垂直扩展(即 通过增加系统资源)。 然而,作为更现代(和更简单)的应用程序,NoSQL 解决方案通常提供更简单的水平扩展方式(即 通过创建多台机器的集群)。
- 可靠性:
在数据可靠性和执行事务的安全保证方面,SQL 数据库仍然是更好的选择。
- 支持:
关系数据库管理系统已有数十年的历史。 它们非常受欢迎,很容易找到免费和付费支持。 因此,如果出现问题,它比最近流行的 NoSQL 数据库更容易解决 - 特别是如果所述解决方案本质上很复杂(例如 MongoDB)。
- 复杂的数据保存和查询需求:
从本质上讲,关系数据库是 the 用于复杂查询和数据保存需求的首选解决方案。 他们在这个领域效率更高,也更出色。