关系数据库是一种将数据组织成行和列的数据库,而这些行和列可共同形成一个表,且其中的数据点相互关联。
数据结构通常跨越多个表,这些表可以通过主键或外键连接在一起。这些唯一标识符表明了表之间存在的不同关系,这些关系通常通过不同类型的数据模型来说明。分析师使用 SQL 查询来组合不同的数据点并汇总业务绩效,使组织能够获得洞察分析、优化工作流并发现新机会。
例如,假设您的公司维护着一个包含客户信息的数据库表,其中包含帐户级别的公司数据。可能还有一个不同的表,用于描述与该帐户对应的所有单个交易。这些表可以一起提供购买特定软件产品的不同行业的信息。
客户表的列(或字段)可能包括客户 ID、公司名称、公司地址、行业等;交易表的列可能包括交易日期、客户 ID、交易金额、付款方式等。这些表可以通过共有的客户 ID 字段连接在一起。因此,您可以通过查询该表来生成有价值的报告,例如,按行业或公司划分的销售报告,这些报告可以向潜在客户传递消息。
通常,关系型数据库也与事务型数据库相关,而后者会批量执行命令或事务。用于说明这一点的一个广为人知的示例便是银行转账。从一个帐户中提取规定的金额,然后将其存入另一个帐户。取款和存款的金额均为全额,而此交易不能存在任何片面性。交易具有特定的属性。ACID(缩写)属性的定义如下:
这些特性确保了可靠的事务处理。
关系数据库基于关系数据模型组织数据,而关系数据库管理系统 (RDBMS) 是对基础数据库软件的更具体的引用,使用户能够进行维护。这些程序允许用户在系统中创建、更新、插入或删除数据,并且它们提供:
流行的 RDBMS 系统示例有 MySQL、PostgreSQL 和 IBM DB2。此外,关系数据库系统与基本数据库管理系统 (DBMS) 的不同之处在于,它将数据存储在表中,而 DBMS 则以文件形式存储信息。
了解生成式 AI 的主要优势,以及组织如何将生成式 AI 和机器学习融入到业务中。
阅读数据领导者指南
结构化查询语言 (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 在其位于此处(IBM 外部链接)的论文中详细介绍了 SQL 的更多历史。
在关系数据库出现之前,公司使用具有树状结构数据表的分层数据库系统。这些早期的数据库管理系统 (DBMS) 使用户能够组织大量数据。但是,它们很复杂,通常是特定应用程序专有的,并且它们在数据中的展示方式也受到限制。这些限制最终促使 IBM 研究员 Edgar F. Codd 于 1970 年发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的 论文(IBM 外部链接)(PDF,1.5 MB),将关系数据库模型理论化。在提出的这个模型中,无需专门的计算机知识即可检索信息。他建议根据有意义的关系将数据排列成元组或属性-值对。元组集被称为关系,这最终实现了跨表合并数据。
1973 年,San Jose Research Laboratory(现名为 Almaden Research Center)启动了一项名为 System R(R 表示关系)的计划,以所谓的“工业级实现”来证明这种关系理论。它最终也成为了 SQL 的试验场,使其能够在短时间内得到更广泛的采用。但是,Oracle 对 SQL 的采用并没有影响其在数据库管理员中的受欢迎程度。
到 1983 年,IBM 推出了 DB2 系列关系数据库,之所以这样命名,是因为它是 IBM 的第二个数据库管理软件系列。如今,它已成为 IBM 最成功的产品之一,每天在云基础设施上处理数十亿项事务,并为机器学习应用程序奠定了基础。
虽然关系数据库会将数据划分为表格格式,但非关系数据库却没有如此严格的数据库架构。事实上,非关系数据库会根据数据库类型按不同方式组织数据。无论非关系数据库的类型如何,它们均旨在解决关系模型中固有的灵活性和可扩展性问题,而这些模型对于非结构化数据格式(如文本、视频和图像)来说却并非理想之选。这些类型的数据库包括:
NoSQL 数据库也优先考虑可用性而不是一致性。
当计算机在网络上运行时,它们始终需要决定是优先考虑一致的结果(每个答案总是相同)还是较长的正常运行时间(称为“可用性”)。这被称为“CAP 理论”,它代表一致性、可用性或分区容错性。关系数据库确保信息始终同步且一致。一些 NoSQL 数据库(例如 Redis)倾向于始终提供响应。这意味着您从查询中获得的信息可能会有几秒钟甚至长达半分钟的误差。在社交媒体网站上,这意味着如果最新的个人资料照片刚刚发布不久,您仍会看到旧的个人资料照片。或者可能出现超时或错误。另一方面,在银行和金融交易中,出错后重新提交可能要好于旧的、不正确的信息。
有关 SQL 和 NoSQL 之间差异的完整概述,请参阅“SQL vs. NoSQL Databases: What's the Difference?”
关系数据库方法的主要优势在于能够通过连接表来创建有意义的信息。通过连接表,可以了解数据之间的关系,或表之间的连接方式。SQL 包括计数、添加、分组以及组合查询的功能。SQL 可以执行基本的数学和小计函数以及逻辑转换。分析师可以按日期、名称或任意列对结果进行排序。这些特点使关系方法成为当今商业领域最流行的查询工具。
与其他数据库格式相比,关系数据库具有多种优势:
由于关系数据库的产品生命周期较长,因此围绕它的社区较多,这在一定程度上使它可以持续使用。SQL 还可以轻松地从多个表中检索数据集,并执行简单的转换,例如筛选和聚合。在关系数据库中使用索引还能让他们快速找到此信息,而无需搜索所选表中的每一行。
虽然关系数据库历来被视为一种更加僵化和缺乏灵活性的数据存储选项,但技术的进步和 DBaaS 选择正在改变这种看法。虽然与 NoSQL 数据库产品相比,开发模式的开销仍然较大,但随着向云环境迁移,关系数据库正变得越来越灵活。
关系数据库可以通过两种方式消除冗余。关系模型本身通过一个称为规范化的过程来减少数据冗余。如前所述,客户表应仅记录客户信息的唯一记录,而不是为多个事务复制此信息。
存储程序还有助于减少重复性工作。例如,如果数据库访问仅限于特定角色、职能或团队,则存储程序可以帮助管理访问控制。这些可重复使用的功能为应用程序开发人员腾出了宝贵的时间来处理来处理具有重大影响的工作。
关系数据库是事务性的,它们保证整个系统的状态在任何时候都是一致的。大多数关系数据库都提供简单的导出和导入选项,使得备份和恢复变得简单。这些导出操作甚至可以在数据库运行时发生,从而便于进行故障恢复。基于云的现代关系数据库可以进行连续镜像,使得在恢复时数据的损失以秒或更短的时间来衡量。大多数云托管服务都允许您创建只读副本,例如在 IBM Cloud Databases for PostgreSQL 中。这些只读副本使您能够在云数据中心存储数据的只读副本。副本也可以提升为读/写实例,以用于灾难恢复。
了解 IBM Db2,这是一款云原生数据库,旨在支持低延迟事务和大规模实时分析。
探索 PostgreSQL 即服务,构建为企业级就绪并与 IBM Cloud 本机集成。
Hyper Protect Virtual Servers for Virtual Private Cloud (VPC) 是一个完全托管的机密计算容器运行时,支持在具有技术保障的高度隔离的环境中部署敏感的容器化工作负载。
基于开源 PostgreSQL,在高度安全的企业级数据库上开发和运行应用程序。