Chapter2
1.关系型数据库的特点
- 关系模型。nosql数据库一般不构建关系型数据库的面向行的二维表,这造成关系型数据库的应用设计方法无法完全适用于nosql设计。
- 完整性和设计范式。大部分nosql数据库被成为面向聚合的数据库,或者无模式的数据库。因此对于完整性要求和常见的数据库设计范式,nosql不会完全遵守。
- 事务和ACID。关系型数据库支持事务和所谓强一致性。为了实现分布式部署和数据多副本,nosql对事务和所谓强一致性进行妥协,形成了适合自身的设计理念。
- 分布式。关系型数据库虽然也可以进行分布式部署,但限制较多,无法提供和nosql一样大规模、易横向扩展和集群部署能力。
2.关系型数据模型中将现实世界定义为实体、属性和联系。
3.并发是指多个用户同时存取数据的操作。关系型数据库会对并发操作进行控制,防止用户在存取数据时破坏数据完整性,造成数据错误。
4.事务机制是关系型数据库的重要机制。可以保障用户定义的一组操作序列作为一个不可分割的整体进行提交,一组操作要么都执行,要么都不执行,当事务执行成功时,认为事务被整体提交,所有数据改变均被持久化保存,事务执行发生错误时,事务会进行回滚,返回到尚未开始执行的状态。事务可以被中止或重启。
5.事务机制也是关系型数据库进行并发控制以及故障恢复的基本单元。
6.ACID:关系型数据库事务机制的4个基本属性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
- 原子性:整个事务中所有操作,要么全部完成,要么全不完成,不能停滞在中间某个环节。事务在执行中发生错误,会被回滚到事务开始之前的状态。
- 一致性:事务在开始执行之前和全部完成或回滚之后,数据库的完整性约束没有被破坏,无论同时有多少并发事务或多少串行事务接连发生。
- 隔离性:多个执行相同功能的事务并发时,通过串行化等方式,使得在同一时间仅有一个请求用于同一数据,这会使得每个事务所看到数据只是另一个事务的结果,而非另一个事务的中间结果。
- 持久性:在事务完成后,该事务对数据库所做的更改保存在数据库之中,不会被回滚,不会受到其他故障或操作的影响。
7.分布式数据管理的特点
数据特点:
- 数据结构复杂:数据的结构、维度、单位可能存在差异。采用非关系型数据描述方法(xml、json)可能更加方便。此外,没有范式和完整性要求。
- 数据量大:采用分布式系统而非单机系统支撑。
管理特点:
8.分布式系统的一致性问题
- 分布式系统中一致性的含义:(1)数据的多个副本内容是相同的。数据的更新要同时发生在多个样本上,要么都成功,要么都不成功。(2)系统经过一系列相关联操作后,系统的状态仍然是完整的。
9.CAP原理
- CAP指分布式系统中的 一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三个特性。CAP原理指在分布式系统中,三个特性不可兼得,只能同时满足两个。
- Consistency:分布式系统中所有节点都能对某个数据达成共识。主要关注多个数据的多个副本内容是否相同。
- Availability:系统能够对用户的操作给予反馈的及时程度。
- Partition tolerance:(也叫分区保护性)在部分节点故障,以及出现消息丢包的情况下,集群系统仍然提供服务,完成数据访问。
- 兼顾CA则系统不能采用多副本,兼顾CP则必须容忍系统响应迟缓,兼顾AP则需要容忍系统内多副本数据可能出现不一致的情况。
- 在不同的层面、子系统或模块中,都可以根据CAP原理指定局部设计策略。
CA–不利于扩展–交易型系统、银行核心系统–Mysql、SQL server、Postgressql
AP–遇节点问题,存在数据不一致–web应用,如搜索、论坛、微博–Dynamo、Cassandra、couchDB
CP–遇节点问题,服务等待–统计分析类BI–Neo4j、BigTable、HBase、Redis、MongoDB
10.BASE和最终一致性
- 分布式系统提供弱一致性保障。
- Basically Available(基本可用):允许分布式系统中部分节点或功能出现故障的情况下,系统的核心部分或其他数据仍然可用。
- Soft-state(软状态/柔性事务):允许系统出现“中间状态”,在nosql中体现为允许多个副本存在暂时不一致情况。
- Eventual Consistency(最终一致性):允许系统的状态或者多个副本之间存在暂时的不一致,但随着时间推移,总会变得一致。
11.Paxos算法
- 需要多个节点就某一问题达成共识。例如:主从结构中,主节点出现故障时,需要从多个从节点中选出一个新的主节点。
12.Nosql常见模式
- 键值模式、列存储模式、文档存储模式、图存储模式
- Nosql在通用性、事务能力有较大差距,但在分布式部署和大数据检索方面具有优势。
- 键值对存储模式(Key-Value):数据表中每个实际行只具有行键(key)和数值(value)两个基本内容。无结构,无法预先定义,通过键进行索引。levelDB、Redis
- 文档式(document):值一般是半结构化的,通过json和xml来组织。可以通过关键词查询文档内部结构,允许文档嵌套,实现类似join的查询。通常采用JSON或类似方式描述数据。描述相同的数据结构时JSON比XML更加简洁。MongoDB、CouchDB。
- 列存储模式:面向列的存储模式。一般用在OLAP或数据仓库等场合。不同列或列族的数据存储在不同文件中。不预先定义结构,通过列族的概念来组织数据。Bigtable、Hbase、Cassandra。
- 图存储模式:存储节点和边以及节点之间的连线关系。
待解决:
1.nosql是面向列的嘛?
2.什么是面向聚合的数据库?