MichaelBlog

double i = Double.MAX_VALUE; while(i == i + 1){ System.out.print ("学无止境");};

导航

SQL结构化查询语言与RDBMS关系型数据库管理系统

SQL (Structured Query Language:结构化查询语言)

SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

SQL它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server等。SQL标准有:
• 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86
• 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89
• 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)
• 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)
• 2003年,ISO/IEC 9075:2003,SQL:2003
• 2008年,ISO/IEC 9075:2008,SQL:2008
• 2011年,ISO/IEC 9075:2011,SQL:2011
• 2016年,ISO/IEC 9075:2016,SQL:2016
这些标准就与JDK的版本一样,在新的版本中总要有一些语法的变化。不同时期的数据库对不同标准做了实现。

数据库(Database) = 存储数据的仓库,数据是有组织的进行存储

数据库管理系统

  • Databases Management System:DMBS

SQL: Structured Query Language 结构化查询语言,操作关系类型数据库的编程语言,定义操作所有关系类型数据库的同意标准。

RDBMS 指关系型数据库管理系统(Relational Database Management System。)

关系数据库是一种用于存储相互关联的数据点并提供数据点访问的数据库。关系数据库基于关系模型,可在表中直观、直接地表示数据。在关系数据库中,表中的每一行都代表一条记录,每条记录都具有一个唯一的 ID(又被称为),而表中的列则用于存储数据的属性 — 每条记录的每一个属性通常都有一个值。因此,用户可以轻松在数据点之间建立关联。

关系数据库示例

下面给出了一个简单的示例,小型企业可以使用两个表来处理其产品订单。第一个表是客户信息表,每一条记录都包括客户的姓名、地址、配送和账单信息、电话号码以及其他联系信息。信息的每一位(每个属性)则位于自己的列中,每一行(即每一条记录)都将由数据库分配一个唯一的 ID(键)。在第二个表(客户订单表)中,每一条记录包括下订单的客户 ID、订购的产品、数量、所选尺寸和颜色等,但不包括客户的姓名或联系信息。

这两个表只有一个共同点:ID 列(键)。基于这一公共列,关系数据库可以在这两个表之间创建关系。然后,当公司的订单处理应用向数据库提交订单时,数据库可以转至客户订单表,提取关于产品订单的正确信息,并使用该表中的客户 ID 查找客户信息表的客户账单和配送信息。这样,仓库就可以正确提取产品,客户就可以及时收到货物,企业就可以受到货款。

关系数据库的结构

关系模型意味着逻辑数据结构(数据表、视图和索引)与物理存储结构是分开的。这种分离意味着,数据库管理员可以在不影响基于逻辑结构的数据的访问的前提下管理物理数据存储。例如,当对数据库文件重命名时,文件中表的名称不会发生改变。

逻辑与物理之间的区别也适用于数据库操作,这些明确定义的操作可允许应用 处理数据和数据库结构。逻辑操作允许应用指定其所需的内容,物理操作则可确定如何访问该数据然后执行任务。

为了确保数据始终准确、可访问,关系数据库应当遵循特定的完整性规则,例如“禁止在表中复制行,避免错误信息进入数据库”。

关系模式
在数据库的早期年代,每个应用都按照自己独特的结构存储数据。为此,开发人员需要深入了解数据结构才能找到和使用所需数据。大多数时候,这些数据结构都效率低下、难以维护、难以优化,无法支撑和实现良好的应用性能。关系数据库模型就是为解决数据结构随意、混乱的问题而出现的。

关系数据模型提供了一种表示和查询数据的标准方式,可供任何应用使用。事实上,开发人员从一开始就意识到了关系数据库模型的主要优势在于表。利用表,他们可以直观、高效、灵活地存储和访问结构化信息。

此外,随着开发人员开始使用结构化查询语言 (SQL) 在数据库中写入和查询数据,关系模型的另一项优势也逐渐开始显现。多年以来,SQL 被广泛用作数据库查询语言。它以关系代数为基础,提供了一种内部一致的数学语言,可以更轻松地提升所有数据库查询的性能。相比之下,其他方式都需要开发人员对查询进行定义。

关系数据库管理系统的优势
如今,各种类型和规模的企业都使用简单而强大的关系模型来满足各种信息需求,使用关系数据库执行库存跟踪、电子商务事务处理、大量的任务关键型客户信息管理等工作。而这一切都源于关系数据库能够帮助企业安全、基于规则、一致地管理信息,出色满足所有数据点相互关联的信息的需求。

自 20 世纪 70 年代出现以来,关系模型凭借独特的优势一路发展,成为了今天市场接受最广泛的数据库模型。

关系模型和数据一致性
关系模型可最大限度保证各个应用和数据库副本(又被称为实例)之间数据的一致性。例如,当一名客户在 ATM 上存钱结束后,在手机上查看帐户余额时,他希望看到这笔存款立即出现在最新的帐户余额中。在这一方面,关系数据库能够确保数据库的多个实例中的数据始终一致,表现非常出色。

其他类型的数据库很难在处理大量数据的情况下保持这种及时的一致性。NoSQL 等一些最新的数据库仅提供“最终一致性”。在此原则下,当数据库扩容或者多个用户同时访问同一个数据时,数据需要一定的时间来“追赶”。对于某些用途,例如维护产品目录中的列表,最终一致性是可以接受的,但对于诸如购物车交易之类的关键业务操作,关系数据库仍然是黄金标准。

承诺和原子性
关系数据库可非常细粒度地处理业务规则和策略,并具有严格的 提交策略(即永久更改数据库)。例如,某库存数据库跟踪 3 个始终需协同使用的部件,当从库存中提取某一个部件时,也必须同时提取另外两个部件;如果三个部件中的一个不可用,则不应当拉取任何一个部件 — 在数据库做出任何承诺之前,所有三个部件都必须可用。关系数据库只有在知晓所有三个部件都可用时才会提交任何一个部件。这种多方面提交功能被称为原子性。对于确保数据库中数据准确以及符合业务规则、法规和政策,原子性至为关键。

ACID 属性和 RDBMS
关系数据库事务具有 4 个关键属性:原子性、一致性、隔离性和持久性 — 通常称为 ACID

1. Atomicity 原子性定义构成完整数据库事务的所有要素。
2. Consistency 一致性确保事务结束后数据点处于正确状态。
3. Isolation 隔离性指一项事务在被提交之前不会对其他事务产生影响,可避免混淆。
4. Durability 持久性可确保所有对数据的修改在事务提交后都是永久的。

存储过程和关系数据库

许多数据访问都涉及重复性操作。例如,即使是从数据表中获取信息这种简单查询,也可能需要重复数百或数千次才能获得所需结果。通常来说,这类访问需要特定类型的代码予以实现。应用开发人员并不希望在每一个新应用中为这些功能编写新代码。对此,关系数据库支持存储过程,允许开发人员通过简单的应用调用来访问特定的代码块。例如,开发人员可通过一个存储过程,面向多个应用的用户实现一致的记录标记。此外,存储过程还可以帮助开发人员确保以特定方式在应用中实现特定数据函数。

数据库锁定Locking和并发性Concurrency

当多个用户或应用同时尝试更改同一数据时,数据库中可能会发生冲突。对此,锁定和并发技术可在保证数据完整性的同时减少冲突的发生。

数据库锁定可防止其他用户和应用在数据更新期间访问数据。在某些数据库中,锁定作用于整个表,可能对应用性能产生负面影响。而在另外一些数据库(例如 Oracle 关系数据库)中,锁定仅限于特定记录,换言之表中其他未锁定的记录仍然可用,这有助于实现更加卓越的应用性能。

当多个用户或应用同时在同一数据库中调用查询时,并发性将执行活动管理,根据定义的数据控制策略确保用户和应用正确访问。

如何选择关系数据库?

用于存储、管理、查询和检索存储在关系数据库中的数据的软件称为关系数据库管理系统(RDBMS)。它能够在用户、应用和数据库之间提供一个接口和一系列数据存储、访问和性能管理功能。

在选择数据库类型和关系数据库产品时,您需要考虑多种因素,合理决策。同时,如何选择 RDBMS 也取决于您的具体业务需求。做决策前,请首先回答以下问题:

1.数据准确性:数据存储和准确性是否依赖业务逻辑?数据对准确性是否有严格的要求(例如财务数据和政府报告)?
2.可扩展性:数据规模有多大?预计数据增长速度如何?数据库模型是否需要支持镜像数据库副本(作为独立实例)以提高可扩展性?如果需要,能否在实例间保持数据一致性?
3.并发性:是否会有多个用户和应用同时访问数据?数据库软件是否支持并发性,是否能够可靠保护数据?
4.性能和可靠性:是否需要高性能和高可靠性?对查询响应性能有哪些需求?供应商对服务级别协议 (SLA) 或计划外停机的承诺是什么?

关系数据库的未来:自治驾驶数据库

经过多年发展,如今关系数据库已变得更加强大,不仅性能更加卓越,运行速度更快,而且还更加易于使用。但它们也变得更加复杂,而且管理数据库长期以来一直是一项全职工作。为了优化数据库性能,开发人员不得不将大部分时间投入到管理活动上,而不是运用专业知识来开发应用,为企业创造价值。

如今,基于强大关系模型、云数据库技术和机器学习构建的自治技术提供了一种新型的关系数据库。这就是自治驾驶数据库(也称为自治数据库)。它既拥有关系模型的强大功能和优势,同时又能运用人工智能 (AI)、机器学习和自动化技术来监视和改善查询性能以及管理任务。举例来说,,自治数据库可以通过假设和测试索引来加快查询速度,随后将优质索引推入到生产环境中,从而提高查询性能 — 一切都可自主处理。而且,自治数据库还可以持续进行改进,不需要您进行任何干预。

自治技术让开发人员能够从管理数据库的繁琐任务中解放出来。例如,他们无需再预先确定对基础设施的需求,可以按需添加存储和计算资源,灵活满足数据库增长需求。最后,开发人员只需简单几个步骤,就可以轻松创建一个自治关系数据库,大大加快应用开发。

posted on 2022-04-16 09:48  Michael_chemic  阅读(98)  评论(0编辑  收藏  举报