什么是关系数据库?

2021 年 10 月 20 日

什么是关系数据库?

关系数据库是一种将数据组织成行和列的数据库,而这些行和列可共同形成一个表,且其中的数据点相互关联。

数据结构通常跨越多个表,这些表可以通过主键或外键连接在一起。这些唯一标识符表明了表之间存在的不同关系,这些关系通常通过不同类型的数据模型来说明。分析师使用 SQL 查询来组合不同的数据点并汇总业务绩效,使组织能够获得洞察分析、优化工作流并发现新机会。

例如,假设您的公司维护着一个包含客户信息的数据库表,其中包含帐户级别的公司数据。可能还有一个不同的表,用于描述与该帐户对应的所有单个交易。这些表可以一起提供购买特定软件产品的不同行业的信息。

客户表的列(或字段)可能包括客户 ID公司名称公司地址行业等;交易表的列可能包括交易日期客户 ID交易金额付款方式等。这些表可以通过共有的客户 ID 字段连接在一起。因此,您可以通过查询该表来生成有价值的报告,例如,按行业或公司划分的销售报告,这些报告可以向潜在客户传递消息。

通常,关系型数据库也与事务型数据库相关,而后者会批量执行命令或事务。用于说明这一点的一个广为人知的示例便是银行转账。从一个帐户中提取规定的金额,然后将其存入另一个帐户。取款和存款的金额均为全额,而此交易不能存在任何片面性。交易具有特定的属性。ACID(缩写)属性的定义如下:

  • 原子性:对数据的所有更改都像单个操作一样进行。也就是说,要么执行所有更改,要么不执行任何更改。
  • 一致性:数据从始至终保持一致状态,增强了数据完整性。
  • 隔离性:某个事务的中间状态对其他事务不可见,因此并发运行的事务看起来是序列化的。
  • 持久性:在事务成功完成后,即使系统发生故障,对数据的更改仍然会持续存在并且不会被撤消。

这些特性确保了可靠的事务处理。

什么是关系数据库管理系统 (RDBMS)

关系数据库基于关系数据模型组织数据,而关系数据库管理系统 (RDBMS) 是对基础数据库软件的更具体的引用,使用户能够进行维护。这些程序允许用户在系统中创建、更新、插入或删除数据,并且它们提供:

  • 数据结构
  • 多用户访问
  • 权限控制
  • 网络接入

流行的 RDBMS 系统示例有 MySQL、PostgreSQL 和 IBM DB2。此外,关系数据库系统与基本数据库管理系统 (DBMS) 的不同之处在于,它将数据存储在表中,而 DBMS 则以文件形式存储信息。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

什么是 SQL?

结构化查询语言 (SQL) 由 IBM 的 Don Chamberlin 和 Ray Boyce 发明,它是与关系数据库管理系统交互的标准编程语言,支持数据库管理员轻松添加、更新或删除数据行。SQL 最初称为 SEQUEL,后因商标问题简化为 SQL。SQL 查询还支持用户仅使用几行代码就能从数据库中检索数据。鉴于这种关系,不难理解为什么关系数据库有时也被称为“SQL 数据库”。

使用上面的示例,您可以使用以下代码构造一个查询,以按公司查找特定年份的前 10 个交易记录:

SELECT COMPANY_NAME, SUM(TRANSACTION_AMOUNT)

FROM TRANSACTION_TABLE A

LEFT JOIN CUSTOMER_TABLE B

ON A.CUSTOMER_ID = B.CUSTOMER_ID

WHERE YEAR(DATE) = 2022

GROUP BY 1

ORDER BY 2 DESC

LIMIT 10

此数据联接能力有助于我们减少数据系统内的冗余,以便数据团队为客户维护一个主表,而不是在未来出现其他交易时复制这些信息。要了解更多信息,请点击此处查看 Don 论文中对 SQL 历史的详细介绍。

Mixture of Experts | 4 月 25 日,第 52 集

解码 AI:每周新闻摘要

加入我们由工程师、研究人员、产品负责人等组成的世界级专家团队,他们将突破 AI 的喧嚣,为您呈现最新的 AI 新闻和洞察分析。

关系数据库简史

在关系数据库出现之前,公司使用具有树状数据表结构的分层数据库系统。这些早期的数据库管理系统 (DBMS) 有助于用户组织大量数据。然而,这些系统非常复杂,通常是特定应用程序专有的,并且挖掘数据中的信息的方法也受到限制。这些限制最终促使 IBM 研究员 Edgar F. Codd 于 1970 年发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文(PDF,1.5 MB),将关系数据库模型理论化。在提出的这个模型中,无需专门的计算机知识即可检索信息。他建议根据有意义的关系将数据排列成元组或属性-值对。元组集被称为关系,这最终实现了跨表合并数据。

1973 年,San Jose Research Laboratory(现名为 Almaden Research Center)启动了一项名为 System R(R 表示关系)的计划,以所谓的“工业级实现”来证明这种关系理论。它最终也成为了 SQL 的试验场,使其能够在短时间内得到更广泛的采用。但是,Oracle 对 SQL 的采用并没有影响其在数据库管理员中的受欢迎程度。

到 1983 年,IBM 推出了 DB2 系列关系数据库,之所以这样命名,是因为它是 IBM 的第二个数据库管理软件系列。如今,它已成为 IBM 最成功的产品之一,每天在云基础设施上处理数十亿项事务,并为机器学习应用程序奠定了基础。

关系数据库与非关系数据库

虽然关系数据库会将数据划分为表格格式,但非关系数据库却没有如此严格的数据库架构。事实上,非关系数据库会根据数据库类型按不同方式组织数据。无论非关系数据库的类型如何,它们均旨在解决关系模型中固有的灵活性和可扩展性问题,而这些模型对于非结构化数据格式(如文本、视频和图像)来说却并非理想之选。这些类型的数据库包括:

  • 键值存储:此无模式数据模型采用由键值对组成的字典形式,且每个项目均有一个键和一个值。键可能与 SQL 数据库中的键类似(例如,购物车 ID),而值是一个数据数组(例如,该用户的购物车中的每件物品)。该模型通常用于缓存和存储用户会话信息,例如购物车。不过,在您需要一次提取多条记录时,该模型不太理想。Redis 和 Memcached 是采用此数据模型的两例开源数据库。
  • 文档存储:顾名思义,文档数据库以文档形式存储数据。它们可以帮助管理半结构化数据,通常以 JSON、XML 或 BSON 格式存储数据。在应用程序中使用数据时,这会将数据放在一起,从而减少使用数据所需的转换工作量。开发人员还获得了更大的灵活性,因为不需要在文档之间匹配数据架构(例如 name 与 first_name)。然而,对于复杂事务来说,这可能会造成问题,从而导致数据损坏。文档数据库的常见用例包括内容管理系统和用户档案。面向文档的数据库的一个示例是 MongoDB,它是 MEAN 堆栈的数据库组件。
  • 宽列存储:这些数据库以列形式存储信息,支持用户仅访问他们需要的特定列,而无需为不相关的数据分配额外的内存。该数据库试图弥补键值存储和文档存储的不足之处,但由于它可能是更复杂的系统而难以管理,建议较新的团队和项目不要使用该数据库。Apache HBase 和 Apache Cassandra 是开源宽列数据库的例子。Apache HBase 建立在 Hadoop 分布式文件系统之上,它提供了一种存储稀疏数据集的方法,这在许多大数据应用程序中很常见。另一方面,Apache Cassandra 旨在管理跨多个服务器和涵盖多个数据中心的集群的大量数据。它已用于各种用例,例如社交网络网站和实时数据分析。
  • 图形存储:这种类型的数据库通常存储来自知识图谱的数据。数据元素以节点、边缘和属性的形式存储。任何对象、地点或人物都可能是节点。边缘定义节点之间的关系。图形数据库用于存储和管理图形中元素之间的连接网络。Neo4j(IBM 外部链接)是一种基于 Java 的图形数据库服务,具有开源社区版本,用户可以在其中购买在线备份和高可用性扩展的许可证,或者包含备份和扩展的预打包许可版本。

NoSQL 数据库也优先考虑可用性而不是一致性。

当计算机在网络上运行时,它们始终需要决定是优先考虑一致的结果(每个答案总是相同)还是较长的正常运行时间(称为“可用性”)。这被称为“CAP 理论”,它代表一致性、可用性或分区容错性。关系数据库确保信息始终同步且一致。一些 NoSQL 数据库(例如 Redis)倾向于始终提供响应。这意味着您从查询中获得的信息可能会有几秒钟甚至长达半分钟的误差。在社交媒体网站上,这意味着如果最新的个人资料照片刚刚发布不久,您仍会看到旧的个人资料照片。或者可能出现超时或错误。另一方面,在银行和金融交易中,出错后重新提交可能要好于旧的、不正确的信息。

有关 SQL 和 NoSQL 之间差异的完整概述,请参阅“SQL 与 NoSQL 数据库有何区别?

关系数据库的优势

关系数据库方法的主要优势在于能够通过连接表来创建有意义的信息。通过连接表,可以了解数据之间的关系,或表之间的连接方式。SQL 包括计数、添加、分组以及组合查询的功能。SQL 可以执行基本的数学和小计函数以及逻辑转换。分析师可以按日期、名称或任意列对结果进行排序。这些特点使关系方法成为当今商业领域最流行的查询工具。

与其他数据库格式相比,关系数据库具有多种优势:

易于使用

由于关系数据库的产品生命周期较长,因此围绕它的社区较多,这在一定程度上使它可以持续使用。SQL 还可以轻松地从多个表中检索数据集,并执行简单的转换,例如筛选和聚合。在关系数据库中使用索引还能让他们快速找到此信息,而无需搜索所选表中的每一行。

虽然关系数据库历来被视为一种更加僵化和缺乏灵活性的数据存储选项,但技术的进步和 DBaaS 选择正在改变这种看法。虽然与 NoSQL 数据库产品相比,开发模式的开销仍然较大,但随着向云环境迁移,关系数据库正变得越来越灵活。

减少冗余

关系数据库可以通过两种方式消除冗余。关系模型本身通过一个称为规范化的过程来减少数据冗余。如前所述,客户表应仅记录客户信息的唯一记录,而不是为多个事务复制此信息。

存储程序还有助于减少重复性工作。例如,如果数据库访问仅限于特定角色、职能或团队,则存储程序可以帮助管理访问控制。这些可重复使用的功能为应用程序开发人员腾出了宝贵的时间来处理来处理具有重大影响的工作。

易于备份和灾难恢复

关系数据库是事务性的,它们保证整个系统的状态在任何时候都是一致的。大多数关系数据库都提供简单的导出和导入选项,使得备份和恢复变得简单。这些导出操作甚至可以在数据库运行时发生,从而便于进行故障恢复。基于云的现代关系数据库可以进行连续镜像,使得在恢复时数据的损失以秒或更短的时间来衡量。大多数云托管服务都允许您创建只读副本,例如在 IBM Cloud® Databases for PostgreSQL 中。这些只读副本使您能够在云数据中心存储数据的只读副本。副本也可以提升为读/写实例,以用于灾难恢复

相关解决方案
数据库软件和解决方案

使用 IBM 数据库解决方案满足混合云中的各种工作负载需求。

深入了解数据库解决方案
采用 IBM Db2 的云原生数据库

深入了解 IBM Db2,这是一种关系数据库,为存储和管理结构化数据提供高性能、可扩展性和可靠性。该数据库在 IBM Cloud 上作为 SaaS 提供,也可以用于自托管。

探索 Db2
数据和分析咨询服务

通过 IBM Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。

了解分析服务
采取后续步骤

使用 IBM 数据库解决方案满足混合云中的各种工作负载需求。

深入了解数据库解决方案 深入了解 IBM Db2