P6
1.简述RDBMS和NoSQL数据库的区别¶
- 数据库原理:
- RDBMS基于关系代数理论,拥有统一的理论基础。
- NoSQL数据库没有统一的理论基础,支持多种数据模型。
- 数据规模:
- RDBMS适用于大规模数据,但难以实现超大规模的数据管理。
- NoSQL数据库可以轻松支持超大规模数据,通过横向扩展来满足需求。
- 数据库模式:
- RDBMS具有固定的数据库模式,需要严格定义表格结构。
- NoSQL数据库具有灵活的数据模型,无需固定模式。
- 查询效率:
- RDBMS能够快速执行复杂查询,借助索引机制提供高效率。
- NoSQL数据库在简单查询方面性能良好,但在复杂查询上表现不如RDBMS。
- 一致性:
- RDBMS强调事务的ACID属性,提供强一致性。
- NoSQL数据库通常遵循BASE模型,提供弱一致性和最终一致性。
- 数据完整性:
- RDBMS容易实现数据完整性,支持各种约束条件。
- NoSQL数据库通常无法实现强制数据完整性。
- 扩展性:
- RDBMS难以实现横向扩展,纵向扩展有限。
- NoSQL数据库易于横向扩展,通过添加更多设备来提高性能。
- 可用性:
- RDBMS以保证数据一致性为优先,数据量较大时可用性相对较低。
- NoSQL数据库通常提供更高的可用性。
2.简述CAP定理的含义¶
- CAP定理的核心含义是:在分布式系统中,不可能同时满足一致性、可用性和分区容忍性这三个属性的完全需求。
- 一致性:在分布式系统中的所有节点上访问数据的客户端看到的数据是一致的。
- 可用性:分布式系统的每个节点都能够响应客户端的请求,即使其中的一些节点出现故障或不可用。
- 分区容忍性:分布式系统在节点之间发生通信故障或网络分区时,仍然能够继续运行,并确保一致性和可用性。
- CA:如果选择保证一致性和可用性,则在分区容忍性方面可能需要牺牲,即在网络分区发生时,系统可能会停止响应请求,并且通常扩展性较差。
- CP:如果选择保证一致性和分区容忍性,则可能需要牺牲可用性,即在网络分区发生时,可能会有一些节点无法响应请求。
- AP:如果选择保证可用性和分区容忍性,则可能需要牺牲一致性,即在网络分区发生时,数据可能在不同节点上具有不一致的状态。
3.简述ACID和BASE的区别¶
- BASE:
- BA基本可用性:基本可用性是指分布式系统在面临故障或分区情况下,仍然能够提供基本(部分)的功能和服务。
- S软状态:软状态指的是在分布式系统中的数据状态不是严格的一致性状态,而是可以在一段时间内存在某种程度的不一致,具有一定的滞后性。
-
E最终一致性:经过一段时间后,所有副本的数据状态最终会达到一致。
-
ACID:
- A原子性:事务是原子工作单元,对于其数据的修改要么全部执行,要么全都不执行
- C一致性:事务在完成时,必须使所有的数据都保持一致状态
- I隔离性:由并发事务所做的修改必须与其它任何并发事务所做的修改格利
-
D持久性:事务完成之后,它对于系统的影响是永久性的
-
一致性模型:
- ACID:ACID 模型强调强一致性,要求事务执行后,数据库状态必须保持一致性。
-
BASE:BASE模型放宽了一致性要求,强调最终一致性。
-
数据可用性:
- ACID:ACID模型相对强调一致性,可能在某些情况下会牺牲可用性,特别是在面对网络分区或节点故障时。
-
BASE:BASE模型强调基本可用性,即使在面对网络分区或部分故障时,系统仍然提供基本的功能和服务,不会牺牲可用性。
-
处理分布式系统的能力:
- ACID:ACID模型在传统的关系型数据库系统中有较好的支持,通常不适用于大规模分布式系统。
- BASE:BASE模型更适用于大规模分布式系统,特别是需要高可用性、分区容忍和可扩展性的应用场景。