关系数据库
本基本指南将解释关系数据库的工作原理以及如何将其与其他的数据库选项相比较。
撰稿方:IBM Cloud Education
屏幕上蓝色背景下显示的是代表着复杂数据库的数字和字母
什么是关系数据库?

关系数据库将数据组织到可以基于通用数据进行连接或  关联的——表中。 此功能使您能够通过单一查询从一个或多个表中的数据检索全新的表。 它还允许您和您的企业更好地了解所有可用数据之间的关系,并获得新的洞察,以便做出更好的决策或发现新的机会 。

例如,假设贵公司维护着包含有关每个客户账户的公司数据的一个客户表,以及包含对每个交易进行描述的数据的一个或多个交易表 。

客户表的列(或字段)可能是  客户 ID、  公司名、  公司地址 等等;交易表的列可能是  交易日期、  客户 ID、  交易金额和  付款方法 等等。 表可以基于通用的  Customer ID 字段进行关联。 因此,您可以查询这些表,以生成有价值的报告,如综合客户对账单 。

报表生成器接受这些查询,并按需运行它们,以创建正式报表。 许多企业用来跟踪库存、销售、财务甚至执行财务预测的文档都来自在幕后运行的关系数据库 。

特色产品

Db2 on Cloud

IBM Cloud Databases for PostgreSQL

IBM Cloud Hyper Protect DBaaS


什么是 SQL ?

您可以使用结构化查询语言 (SQL) 与关系数据库通信,SQL 是与管理系统交互的标准语言。 SQL 允许使用几行代码来连接表,大多数的非技术员工都能很快学会这种结构 。

使用 SQL,分析师不需要知道订单表在磁盘上的位置、如何执行查找才能找到特定订单、或者如何连接订单表和客户表。 数据库编译查询并找出正确的数据点。


优点

关系数据库方法的主要优势在于它能够通过连接表来创建有意义的信息。 连接表使您能够了解数据之间的  关系 ,或者表的连接方式。 SQL 具有计数、添加、分组及合并查询能力。 SQL 可以执行基本的数学和小计函数与逻辑转换。 分析师可以按日期、名称或任何列对结果进行排序。

这些功能使关系方法成为当今企业中最受欢迎的查询工具。

其他数据库格式相比,关系数据库有几个优点:

灵活性 

SQL 具有用于创建名为数据定义语言 (DDL) 的表的内置语言。 DDL 允许您添加新列、添加新表、重命名关系和进行其他更改,即使在数据库运行和查询期间也不例外。 这使您可以动态改变模式或数据模拟方法。

减少冗余 

关系数据库消除了数据冗余。 面向单个客户的信息集中在一个位置显示 — 客户表中的单个条目。 订单表只需要存储通往客户表的链接。 分离数据以避免冗余的做法称为规范化。 步进式数据库设计器可确保表在设计过程中规范化。

轻松备份和灾难恢复 

关系数据库是事务型数据库 — 可以保证整个系统的状态在任何时间都是一致的。 大部分关系数据库都提供轻松导出和导入选项,导致备份和恢复非常简单。 这些导出甚至可以在数据库运行时发生,从而使故障恢复变得容易。 基于云的现代关系数据库可以进行连续镜像,从而可以在几秒内甚至更短时间内完成数据恢复,避免数据丢失。 大多数的云管理型服务都允许您创建读取副本 (Read Replicas),例如在 

IBM Cloud Databases for PostgreSQL中。 这些读取副本允许您在云数据中心存储数据的只读副本。 副本可以升级为读/写实例,以便同时用于 灾难恢复 。

关系数据库示例

许多数据库产品都实施了关系数据库模型。 它们或者使用 SQL 数据库来处理请求,或者至少可以处理面向请求和数据库更新的 SQL 语句。 这些数据库的范围广泛,从小型桌面系统到基于云的大规模系统。 它们可以是内部支持的开源系统、商业支持的开源系统,也可以是商用闭源系统。 其中几个常用的包括:

MySQL

MySQL 是易于启动的通用型低内存/磁盘/CPU 数据库。 它支持所有基本的 SQL 命令,以及交易和原子性、一致性、隔离性和持久性 (ACID) 性能。 MySQL 是集成了  WordPress 网站的最常用的数据库。

PostgreSQL

PostgreSQL 也是开源数据库。 它通过命令行界面以及 web 直接访问提供企业级功能,如安全性、可扩展性以及对更多自动化的支持。 PostgreSQL 支持存储过程,这是一种构建在 SQL 之上的更复杂的编程语言。 工作团队可以使用存储过程在系统之间进行数据提取、转换和加载。 该用例的示例包括保险索赔处理以及复杂订单处理等。 Postgres 也可与 QGIS (链接位于 ibm.com 之外)或 地理服务器  (链接位于 ibm.com 之外)协作,以存储和保存全局信息。

有关详细信息,请参阅"数据库详解:PostgreSQL。”

Db2

Db2 是 IBM 提供的享受商业支持的关系数据库,分为 云托管版本 和 本地版本。 


关系数据库 vs. NoSQL

NoSQL 数据库 提供了在关系表之外存储、搜索和检索数据的方法。 二者的几个关键区别包括: 

键值对

NoSQL 数据库最常用的形式是简单的键值对。 键值对将所有数据放置在单个表中。 这个键是唯一元素。 对员工或客户而言,键可能是电子邮件地址。 对于订单,它将是订单号。 只要每个键都是唯一的,键值对就可以将所有关系存储在一个“表”中。 

可用性优于一致性 

当计算机在 

网络上运行时,它们无一例外地需要决定是一致的结果更重要,还是长时间的正常运行即所谓的“可用性”更重要(答案始终都是前者)。 这被称为“CAP 理论”,CAP 代表一致性 (Consistency)、可用性 (Availability)或分区容错性 (Partition Tolerance)。 关系数据库可确保信息始终是同步且一致的。 某些 NoSQL 数据库,如 Redis,趋向于提供响应。 这意味着您从查询中接收到的信息可能会存在几秒钟(最长可能达到半分钟)的延迟,因此是不正确的。 在社交媒体网站上,这意味着您看到的将是过时的资料图片,虽然最新的资料图片与此距离只有几秒钟的时间。 您看到的也可能是超时或错误。 另一方面,在银行和金融交易中,错误和重新提交可能要好于过时的、不准确的信息。 

灵活的模式

关系数据库具有一组预定义的行和列,而 NoSQL 数据库的结构则更加类似于文档。 如果您知道信息在文档中的位置,便可以检索它。 如果材料仍在文档中,您可以添加其他的结构化信息,无需改变规则。 如果操作正确,原始查询仍可以工作,从而允许您在不进行正式更新的情况下更轻松地扩展数据库。 

其他的 NoSQL 数据库格式包括文档故事、图形和对象数据库。 NoSQL 数据库的广义术语是非关系型数据库。 

有关 SQL 和 NoSQL 之间差异的完整说明,请参阅"SQL 与 NoSQL 数据库:有何区别? ” 


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

特定的非关系数据库的一些示例包括:

Redis

Redis 是通用的 NoSQL 数据库,常用于我们之前讨论的数据库类型。 通过只执行一次查找而非连接或关联,然后将处理移至 web 浏览器,  Redis 可提供快速响应。 响应时间对于竞争激烈的现代网站至关重要。

JanusGraph

JanusGraph 是图型数据库,旨在存储和处理面向大图的查询。 这些大图中包含存储在多机集群中的数千亿个条边和顶点。 JanusGraph 可以支持数以千计的同时查询,并可与新硬件同步扩展。 JanusGraph 存储的数据类型可能适用于动画或空气动力学建模。

MongoDB

MongoDB 是将记录存储为结构松散的文档进行存储的文档数据库。 这可能非常适用于将网页存储为文档、存储电子商务产品目录或社交网络应用程序。 与 Redis 一样,MongoDB 与关系模型的不同之处也在于它无需遵从 ACID。

也请参阅“数据库详解:MongoDB。”

etcd

etcd 是另一个键值数据库,常用于分布式系统的配置数据。 常见的 etcd 用例是可以根据需求进行扩展、以提供单一数据库来存储配置信息的基于云的服务器。

RabbitMQ

RabbitMQ 是开源消息传递队列。 消息通常是结构由客户定义的一定数量的文本。  RabbitMQ 允许系统将消息推送到队列中,而不是将其作为永久性的记录进行保存,以便其他应用可以根据需要拉取消息。 异步推/拉使分布式应用能够进行消息传递。

Elasticsearch

Elasticsearch 是使用 web API 接口的全文搜索引擎。 这意味着主值是返回的结果。 一个完整的网站可将它自己存储在 Elasticsearch中。 通过查找键值对,您便可以获得网站的文本。 Elasticsearch 的真正强大之处在于搜索,允许网站添加准确、快速的搜索按钮。 Elasticsearch 可以快速而强大地搜索任何大型文本结构。

有关不同类型的可用数据库的完整分类,请参阅“数据库环境概述。”


数据库模式

数据库模式是指采用形式语言定义的结构。 SQL 中有两种形式语言:数据定义语言 (DDL) 和数据操作语言 (DML)。

要想从表中选择、更新或删除数据,程序员可使用 DML。 要想操纵数据库,或者创建和定义表和关系,他们可以使用 DDL 或使用工具来创建 DDL。

DDL 中包括 CREATE、 DROP、 ALTER、 COMMENT 和 RENAME 等命令。 第一个 DDL 命令是 CREATE TABLE。 此命令定义了主键(必须是唯一的)、字段、这些字段存储数据的方式、以及其他的表约束条件。 一旦定义完成,您便可以将数据库作为其定义语言和 DML 的组合 插入 到表的行中。

下面举例说明了用于创建员工表的 DDL 命令。 正如您将看到的那样,模式可以规定哪些列是必须的,哪些列必须是唯一的(一个键),哪些列必须在其他表中有引用。

在本示例中,工作表描述了每个职务的头衔、说明和职务级别。 名为 pay_grades 的单独的表显示了每个职务级别的工资。 整数是非负整数;char(100) 最多为文本预留出 100 个字符的位置。

 

 

从 jobs 表中删除行会发生什么情况? DDL 允许程序员在案例中指定待办事宜。 员工表中的列可以自动更新为 NULL,就像在本例中一样,也可将其设置为 CaseCade delete。 例如,如果分支机构资料库因关闭而被删除,那么,他们尚未转出的资料也可能被删除。


某些关系数据库也许支持具有不同表的多个模式,并且能够为其分配读写权限。 多模式意味着 HR 用户可在同一个数据库中获得有关员工的 HR 信息,但不包括保密的员工信息(反之亦然)。

CREATE TABLE 员工 (     employeeID 是唯一的整数,非零,     first_name char(100) (100),非零,     last_name char(100),非零,     jobID 整数,        出生日期,非零,     governmentID char(9),     外键 (jobID) 引用作业(jobID) );

软件许可

从许可的角度来看,开源关系数据库和商用关系数据库存在重要区别:

  • 开源数据库  没有设置成本,但不提供“开箱即用”的商业支持。
  • 商用数据库  包括一定程度的支持,但也无法解决合法使用数据库的问题,例如程序员引入的错误导致的意外删除。
  • 您可以将关系数据库托管在云端、本地服务器上、在桌面机上、私有云上、甚至物联网(IoT) 设备上,只要您遵守许可证即可。


如何创建关系数据库

关系数据库需要两个元素才能运行 — 数据库软件本身和创建它所需的数据定义语言 (DDL)。

如想支持本地安装,管理员需要考虑到所有的可能性。 例如,运行数据库的底层操作系统是否需要导致服务器停机数小时的更新。 实现高可用性需要复制数据库,副本在父级关闭时仍保持有效。 本地数据库需要考虑如何使用多个用户同步缩放,以及如何进行备份与恢复。

替代方法是在云端运行数据库。 云端的数据库可以自动配置为高可用性,这意味着您拥有多个成员的数据副本,并且每个成员都位于单独的可用性区域中。

如果整个数据中心故障停机,数据库仍可继续运行。 数据跨区域复制,允许您在发生中断事件时维护全部的数据并继续保持运营。 此外,供应商还将管理安全性能的改进以及操作系统和数据库版本升级。 用户涌向云托管数据库,以实现开箱即用的企业安全性、高可用性、在线扩展和自动备份。


关系数据库和 IBM Cloud

IBM 支持很多关系数据库的云托管版本。

  • IBM Db2 on Cloud 是构建用于提供强健性能的卓越的商用关系数据库,其高可用性选项可以满足 99.99% 正常运行时间 SLA 需求。 
  • IBM Cloud Databases for PostgreSQL 提供企业就绪型全托管式 PostgreSQL,利用内置在 IBM Cloud 中的本机集成进行构建。 
  • IBM Cloud Hyper Protect DBaaS for PostgreSQL 是在高度安全的企业云服务中存储数据的下一代方法,非常适用于具有敏感数据的工作负载 
  • IBM Data Management Platform for EDB Postgres Enterprise and Standard 是集成式开源 PostgreSQL 平台,提供一站式体验,包括采购、部署、使用、管理和支持。 

了解有关 IBM 对关系数据库的看法的更多信息。

通过 IBM Cloud 账户开始免费试用


相关解决方案

IBM DB2 on Cloud


IBM Cloud Databases for PostgreSQL

发现 PostgreSQL 即服务,通过与 IBM Cloud 的本机集成以企业就绪方式构建。


IBM Cloud Hyper Protect DBaaS

IBM Cloud Hyper Protect DBaaS 是高度安全的云数据库环境,允许您通过标准化 API 管理多类数据库。


EDB Postgres Enterprise 版和 Standard 版与 IBM

在基于开源 PostgreSQL 的安全性丰富的企业级数据库上开发和运行应用。