这个作业我的答案应该很多地方都不是很完善或者欠妥的内容。架构层面的东西还是要多学习,多混经验。
1.谈谈你是如何理解ACID的?
答:ACID应该是关系型数据库应该遵循的一些基本原则。ACID指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
(1)原子性是为了保证数据的事物的一致性,事物如果全部完成则保存,事物如果发生错误,则回退到最初的状态。
(2)一致性,在事物开始前和事物结束后,数据库的完整约束性没有被破坏。
(3)隔离性 不同的事物在执行过程中是相互独立的,不会出现相互干扰和查看。
(4)持久性 事物完成后,事物对数据的更改会永久的保存在数据库之中,不会被回滚。
关系型数据库一个非常重要的作用就是事物性,如果在数据库的设计的过程中注重这些方面的性质会保证数据的强一致性,从而满足对事物性要求很高的数据的一致性要求。
2.设计3种架构体系,让他们分别满足CAP理论的CA架构,AP架构和CP架构.
答:(1)CA架构:CA架构是一钟为了保证一致性和高可用性的架构。适合于强调事物性和高可用的数据库。典型的比如Oracle的RAC架构。通过一个数据库多实例,并且能够保证单节点的失败,可以马上切换到别的节点,从而保证其的高可用性。而且它将球事物的一致性,所以适合CA架构。
(2)AP架构适合高可用性和分区容错性的架构。这种架构的数据库可以牺牲一定的数据库一致性,但是保证其最终一致性。这种架构每个节点都有一个备用的数据库来实现其可用性,并且对数据库进行了分区部署,各个节点间的数据库通过网络实时传输信息,来保证数据的一致性,提高客户的即时响应率。但是可能造成分区间因为网络等原因造成相互间的信息传递受阻,从而使部分客户节点读取的数据可能会出现不一致问题。比如一些微博这种就比较适合。
(3)CP架构合适追求一致性和分区容错性的架构。这种架构可以牺牲可用性但是也要保证其一致性。比如一个架构为了提高响应速度设置了多个节点分区,如果其中某个分区的节点发生了断开,无法保证事物的一致性,那么就会停止响应客户的请求,直到恢复连接,重新同步一致性以后,才会继续响应客户的请求。
3.描述一种你认为最适用于最终一致性的系统架构(现实中的应用).
答:我觉得我们生活中的微博就是一个最终一致性的系统架构。微博的数据库设计偏向于AP架构,不是要求强一致性。属于R+W<N的性质。但是它有一种机制,当某个节点为不可用时,会从别的节点同步一些相关的信息过来,从而在用户时间窗口等待的过程中,进行数据一致性的同步,最终反馈给客户正确的信息。但是正是由于用户能够接受这个等待同步的过程,所以使得这种AP架构能够得以应用,这种架构能使用户获得更快的相应速度,提高用户的体验,而最终一致性的架构也使得这种架构适用于这种,对一致性的要求不是很高的社交类平台的数据库架构中。
4.在PPT里谈到的分布式Oracle数据库中,你认为中间件最核心作用是什么?
答:
(1)在分布式事务中,中间件首先要在事物处理阶段提供并行查询服务,能够将数据库的查询条件从多个分布式的数据库中抽出来相应的数据,然后对相关的数据进行组合处理,最终返回最终的结果给查询的用户。(2)中间件也要提供负载均衡和容错服务。现在的3层架构或多层架构中,一般都要求中间件有提供这种功能,通过这种作用,保证应用的可靠性和高可用性能,防止单点故障。
(3)提供系统管理服务,通过中间件能够对系统的应用程序和数据库和中间件进行一些监控上的服务,日志报警服务等,提高系统的可控性能。
本文出自 “无双城” 博客,谢绝转载!