先说说关系型数据库的概念,即基于关系模型的数据库。关系型数据库是由几个二维的行和列表组成的数据库,这些表可以相互连接。关系模型由三部分组成:关系数据结构、关系操作集和关系完整性约束。

目前的关系型数据库有OracleDB2PostgreSQLMicrosoft SQL ServerMicrosoft AccessMySQL、浪潮K-DBMariaDBSqLite等。

关系型数据库,有什么优缺点?关系型数据库最典型的数据结构是表格,是由二维表格及其关系组成的数据组织。

优势:

结构简单,易于维护:均采用表格结构,格式一致;数据库设计和标准化的过程也简单易懂。

使用简单灵活:使用标准查询语言SQL允许用户几乎没有任何差别地从一个产品访问另一个产品的信息。具有关系数据库接口的应用软件具有类似的程序访问机制,并提供了大量标准的数据访问方法。

复杂操作:可以执行join等复杂查询;

维护数据的一致性;

因为有标准的前提,数据更新的成本小(同一个领域基本只有一个地方)

有很多实践成果和专业技术资料(成熟技术)

劣势:

数据表达能力差:关系数据模型不直接支持复杂数据类型。

由于第一范式的要求,所有数据必须转换为简单类型,如整数、实数、双精度数和字符串。面对复杂的数据类型,有必要对数据结构进行分解。这些分解的结构不能直接表示应用数据,从基本组件进行重构也非常繁琐和耗时。

复杂读写功能差:关系型数据库的标准化,一个实体数据可能被分成很多部分,存储在数据库的不同表中。然后,这种复杂的信息查询过程通常会产生大量的简单表格。在这种情况下,通过访问信息生成的查询必须处理大量的表、复杂的代码链接和连接操作。

支持长事务的能力差:由于RDBMS记录锁定机制的粒度限制,简单的记录级锁定机制不足以注册和查询支持多种记录类型的大块数据。

环境适应性差:在要求系统经常变化的环境中,关系型系统成本高,修改困难。关系数据库和编程语言提供的数据类型不一致,因此从一种环境转换到另一种环境时,需要多达30%的额外代码。

读写性能:面对海量数据的高并发读写需求,效率会变得很差,硬盘I/O是一大瓶颈;

扩展方法:固定表结构,灵活性稍差,如字段不固定时的应用;

关系型数据库遵循ACID规则

关系型数据库具有以下四个特性:

1、原子性

原子性很好理解,也就是说,一个事务中的所有操作要么完成,要么没有完成。事务成功的条件是事务中的所有操作都成功。只要一个操作失败,整个事务就失败,需要回滚。

比如10块钱从账户A转到账户B,分两步:1。从账户A中取出10元;2.10元到B账户。这两步要么一起完成,要么不完成。当只完成了第一步,第二步失败时,这笔钱就会回滚到A账户,否则这笔钱就会莫名其妙的少了10块钱。

2、一致性

一致性也很好理解,就是关系型数据库应该一直处于一致的状态,事务的运行不会改变数据库原有的一致性约束。

例如,现有的完整性约束a+b=10。如果一个事务改变了A,那么必须改变B,使得事务结束后仍然满足a+b=10,否则事务失败。

3、独立性

所谓独立性,就是并发事务不会互相影响。如果一个事务要访问的数据正被另一个事务修改,则只要另一个事务未提交,它所访问的数据就不会受到未提交事务的影响。

比如A账户转入B账户10元,这笔交易还没有完成,B此时查询自己的账户,就看不到新增的10

4、耐久性

持久性是指事务一旦提交,其更改将永久保存在关系型数据库中,即使出现宕机也不会丢失。