什么是关联式资料库(RDBMS)?
关系式资料库是一种资料库,用于储存并存取相关的资料点。关联式资料库的基础建立于关联模型之上,以直接且直觉的方式于资料表上显示资料。在关系式资料库中,资料表中的每一列资料行都是一条记录,并有唯一的ID,称为索引键。资料表的资料列中存放着资料的属性,每条记录通常有一个属性值,这样就很容易建立资料点之间的关系。
关联式资料库范例
以下简单范例显示,一个小型企业可能会使用两个资料表来处理其产品的订单。第一个资料表是客户资讯表,所以每条记录都包括客户的姓名、地址、运送地址和帐单地址资讯、电话号码和其他联络资讯。每个资讯位元(每个属性) 都在自己的资料列中,资料库会为每列资料行分配唯一的ID (索引键)。在第二个表格- 客户订单表格- 每笔记录都包括下订单的客户ID、订购的产品、数量、选择的尺寸和颜色等,但不包括客户的姓名或联络资讯。
这两个表格只有一个通用项目:ID 资料栏(索引键)。但是由于这个共同的资料列,关系式资料库可以在两个资料表间建立关系。然后,公司订单处理应用程式将订单提交至资料库时,资料库就可以进入客户订单表,提取正确的产品订单资讯,并利用该表格的客户ID 在客户资讯表中查询客户的帐单和出货资讯。接着仓库就可以调出正确的产品,客户就可以及时收到订单,公司就可以获得付款。
关联式资料库的结构
关联模型代表逻辑资料结构(资料表、检视和索引) 与实体储存结构分离。这种分离代表资料库管理员可以管理物理资料储存,而不影响将这些资料作为逻辑结构存取。例如,重新命名一个资料库档案并不会重新命名其中储存的资料表。
逻辑操作和实体操作的区分也适用于资料库操作,这些操作是明确定义的动作,使应用程式能够管理资料和资料库结构。逻辑操作允许应用程式指定其所需的内容,而实体操作则确定应如何存取该资料然后执行任务。
为了确保资料总是准确并可供存取,关系式资料库会遵循一定的完整性规则。例如,完整性规则可以指定资料表中不允许有重复的资料行,以消除错误资讯进入资料库的可能性。
关联式模型
在资料库初期,每个应用程式都以自己独特的结构储存资料。当开发人员想要构建应用程式来使用这些资料时,他们必须对特定的资料结构有很多了解,才能找到所需的资料。这些资料结构效率低下且难以维护,也难以最佳化以提供良好的应用效能。关系式资料库模型就是为了解决多种任意资料结构的问题而设计的资料库。
关联式资料模型提供了一种标准方式来表示和查询资料,任何应用程式均可加以使用。从一开始,开发人员就知道关系式资料库模型的主要优势在于对资料表的使用,资料表既直觉又高效率,可灵活储存和存取结构化资讯。
随着时间的推移,关系模型又出现了另一个优势,因为开发人员开始使用结构化查询语言(SQL) 来编写和查询资料库中的资料。多年来,SQL 已被广泛使用为资料库查询语言。以关系代数为基础,SQL 提供了内部一致的数学语言,使所有资料库查询的效能更容易提高。相比之下,其他方法必须定义个别查询。
关联式资料库管理系统的优点
各种类型和规模的组织简单而强大的关系模型将各种类型和规模的组织用来满足各种资讯需求。他们将关系式资料库用于追踪库存、处理电子商务交易、管理大量的关键客户资讯等等。关系式资料库可用来考虑任何资讯需求,在这些需求中,资料点彼此相互关联,并且必须以安全且符合规则的一致方式加以管理。
关系式资料库从1970 年代开始就已经出现了。现今,关系模型的优势仍然使它成为最广泛接受的资料库模型。
关联式模型和资料一致性
关系模型最擅长在应用程式和资料库副本(称为执行个体) 之间保持资料一致性。例如,当客户在自动提款机上存款,然后在手机上查看帐户余额时,客户希望看到这笔存款立即反映在更新的帐户余额中。关系式资料库擅长处理这种资料一致性,确保一个资料库的多个执行个体一直拥有相同的资料。
对于其他类型的资料库,以维持此一即时一致性与大量资料相当困难。有些最新的资料库(如NoSQL) 只能提供最终的一致性。」在本原则中,当资料库被扩展或当多位使用者同时存取同一资料时,资料需要一些时间来「跟上进度」。有些使用情境可接受最终一致性,比如维护产品目录中的清单,但对于关键的业务操作,比如购物车交易,关系式资料库仍然需要采行黄金标准。
承诺和原子性
关系式资料库会在极精细层次上处理业务规则和策略,有严格的承诺策略(即使资料库的改变变为永久性)。例如,假设有库存资料库追踪三个总是一起使用的零件。当有一个零件从库存中调出时,您也必须调出另外两个零件。如果这三个部分的其中一个无法使用,则您不需要先提取其中一个部分,全部的三个部分都必须先可供使用,然后再执行任何承诺。关联式资料库将不确认一部分,除非知道它可适用于这三个条件。这种多方位的承诺能力被称为原子性。原子性是保持资料库中资料准确的关键,也是确保资料符合业务规则、法规和政策的关键。
ACID 特性和RDBMS
四个重要特性定义关联式资料库交易:单元、一致性、隔离以及持久性(通常称为ACID)。
- 原子性定义了构成完整的资料库交易的所有元素。
- 一致性定义了在交易后保持资料点处于正确状态的规则。
- 隔离性使交易的效果在提交之前不会向其他人显示,以避免混淆。
- 耐久性确保一旦提交交易后,资料变化就成为永久性。
储存程序和关联式资料库
资料存取涉及许多重复操作。例如,从资料表中获取资讯的简单查询可能需要重复数百次或数千次才能得到所需结果。这些资料存取功能需要某种类型的程式码来存取资料库。应用程式开发人员不想要在每个新应用程式中撰写这些函数的新程式码。幸运的是,关系式资料库允许您储存过程,它是可以透过简单的应用程式呼叫来存取的程式码区块。例如,一个储存过程可以为多个应用程式的使用者提供一致的记录标记。储存过程还可以协助开发人员确保以特定方式实现应用程式中的某些资料功能。
资料库锁定和并行
当多个使用者或应用程式试图同时更改相同的资料时,资料库内会出现冲突。锁定和并行技术可以减少冲突的可能性,同时保持资料的完整性。
锁定可以防止其他使用者和应用程式在更新资料时存取资料。在一些资料库中,锁定适用于整个资料表,但这会对应用程式的效能产生负面影响。其他资料库(如Oracle 关系式资料库) 会在记录层级上套用锁定,使资料表内的其他记录可用,有助于确保更好的应用程式效能。
并行管理多个使用者或应用程式同时在同一资料库上调用查询时的活动。这种功能可以根据为资料控制所定义的策略,为使用者和应用程式提供正确的存取权限。
选择关联式资料库时应注意哪些事项
用于储存、管理、查询和撷取关联式资料库中所储存资料的软体,称为关联式资料库管理系统(RDBMS)。RDBMS 提供使用者和应用程式与资料库之间的介面,以及管理资料储存、存取和效能的管理功能。
在资料库类型和关系式资料库产品中选择时,有几个因素可以指导您的决策。您选择的RDBMS 需视您的业务需求而定。问自己以下问题:
- 我们的资料准确性要求为何?资料的储存和准确性是否会仰赖业务逻辑?我们的资料是否对准确性有严格的要求(例如,财务资料和政府报告)?
- 我们需要可扩展性吗?需要管理的资料规模是多少,预期增长是多少?资料库模型是否需要支援镜像资料库副本(作为独立的执行个体) 以实现可扩展性?如果需要,它能在这些执行个体之间保持资料的一致性吗?
- 并行有多重要?多个使用者和应用程式是否需要同时存取资料?资料库软体是否在保护资料的同时支援并行?
- 我们对效能和可靠性的需求为何?我们是否需要高效能且高可靠性的产品?对查询-回应效能有什么要求?服务层级协议(SLA) 或非计画性停机的厂商承诺为何?
未来关联式资料库:自主驱动资料库
多年来,关系式资料库已经变得更好更快、更强大也更容易使用。不过,他们也变得更复杂,而管理资料库一直以来都是全职的工作。开发人员不得不把大部分时间花在最佳化资料库效能所需的管理活动上,而不是利用他们的专业知识来专注开发能为业务带来价值的创新应用。
[自主式技术]现今建置于关联式模型、[云端资料库]技术及机器学习的优势,以提供全新的关联式资料库。自主驱动资料库(又称自主资料库) 保持了关系模型的强大功能和优势,但使用人工智慧(AI)、机器学习和自动化来监控和改善查询效能和管理任务。例如,为了提升查询效能,自我驱动资料库可假设并测试索引,让查询更快,然后将最佳索引推送至实际执行环境- 全部都在各自独立执行。自主驱动资料库可以持续地进行这些改进,而不需要人工参与。
[自主技术]让开发人员能从管理资料库的日常工作得到解脱。例如,他们不再需要提前确定基础架构要求。相反地,有了自主驱动资料库,他们可以根据需要新增储存和运算资源,以支援资料库的成长。只需几个步骤,开发人员就可以轻松建立自主关系式资料库,从而加快应用开发的时间。