【系统架构师】-案例篇(十四)数据库与分布式

1、规范化

不满足3NF,导致的存储异常

原关系模式

航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价)

代理商(代理商编号,代理商名称,客服电话,地址,负责人)

机票代理(代理商编号,航班编号,票价)

旅客(身份证号,姓名,性别,出生日期,电话)

购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)

根据业务,修改后关系模式 机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)

1)数据冗余:代理商名称和客服电话存在于两个关系模式,而且机票代理关系模式中,该代理商代理了多少个航班,则代理商名称和客服电话被重复存储多少次。

 

2)更新异常:当代理商名称或客服电话变更时,不仅需要修改代理商关系模式,还需要修改机票代理关系模式,否则会造成数据不一致。

反规范化方案

1)增加冗余列:指在多个表中具有相同的属性列,常用来在查询时避免连接操作。

2)增加派生列:指增加的列可以通过表中其他属性列加工计算生成,作用是查询时减少计算量。

3)表重组:如果需要经常查询两个表连接之后的数据,则把这两个表重新组成一个表来减少连接而提高性能。

4)表分割:通过将较大的表分割为多个较小的表来提高查询性能,包括水平分割和垂直分割。

2、不满足3NF存储的不一致解决方案

(1)通过程序实现,当修改代理商关系模式数据时,程序同步修改机票代理关系模式;

(2)通过触发器实现,在代理商关系模式上加修改触发器,当修改代理商关系模式数据时,程序同步修改机票代理关系模式。

三种方案

(1)应用程序同步:指的是通过应用程序在更新数据的同时,同步更新对应的冗余数据,这两个操作会放到同一个事务中,从而保证两个操作的原子性。

 

(2)触发器同步:触发器是与表事件相关的特殊存储过程,它由执行事件来触发,由数据库管理系统在后台自动执行。常见的方法是在更新数据的表上增加相应事件的触发器,在触发器内容同步更新冗余数据。强一致性

 

(3)批处理同步:对数据一致性要求不高的场景下。 当更新数据操作执行了一段时间后,根据更新数据进行批量的同步操作,使得冗余数据和更新数据保持一致。

 

3、仅剩一张机票下,两个代理商的操作如下

6c0e185c51fb4e519a76605a22f56c1b.png

1)第一个代理商能够正确售票。第二个代理商查询剩余票数时正确,为l张机票但剩

余票数减一操作时出错,因为该机票已经被第一个代理商售出,此时第二个代理商无票可售。

 

2)并发操作会带来数据不一致问题具体为:丢失修改、读脏数据、不可重复读

4、读写锁应用

4dbca61111504c1e80a80a70a51142d9.png

(1)加写锁 (2)加读锁 (3)加写锁 (4)被阻塞(5)得到通知 (6)加写锁

 

读写锁的缺点:读写锁会造成读写操作的互相阻塞,实际使得用户的操作被串行化,降低了系统的并发性能。设计不好的情况下,可能会出现资源的交叉锁定,形成死锁。

5、分布式数据库

分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或节点。

 

常见实现技术:读写分离、数据分片、数据索引、数据缓存、负载均衡等。

6、多读少写场景,分布式数据库实现方式

系统应采用的分布式数据库实现方式为一主多从分布、读写分离

 

原因:在购物网站中,读操作远多于写操作,在原始的数据库中,当写入的时候必须要锁住数据表,当小数据量的时候并不会出现瓶颈问题。当数据量暴增时,读写数据必然会受到很大的影响。如果把读操作和写操作分离开来,性能将大大提高。

6.1、读写分离主从复制的优点

①避免数据库单点故障:主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。

   

②提高查询效率:根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据查询操作,从而将查询操作分担到不同的从服务器以提高数据库访问效率。

6.2、基于Mysql binlog分析主从复制的过程

当在从库上启动复制时,首先创建I/O线程连接主库,

主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,

I/O线程获取到事件数据后更新到从库的中继日志Relay Log中去,

从库上的SQL线程读取中继日志Relay Log中更新的数据库事件并应用。

6.3、主从复制中同步、异步、半同步区别

(1)同步复制:主数据库需要等待所有备数据库均操作成功才可以响应用户,影响用户体验。这种方式保证了系统的一致性,但牺牲了数据的可用性。

 

(2)异步复制:当用户请求更新数据时,主数据库处理完请求后可直接给用户响应,而不必等待备数据库完成同步,备数据库会异步进行数据的同步,用户的更新操作不会因为备数据库未完成数据同步而导致阻塞。这种方式保证了系统的可用性,但牺牲了数据的一致性。

 

(3)半同步复制:用户发出写请求后,主数据库会执行写操作,并给备数据库发送同步请求,但主数据库不用等待所有备数据库回复数据同步成功便可响应用户,也就是说主数据库可以等待一部分备数据库同步完成后响应用户写操作执行成功。

6.4、Redis与Mysql一致性

读数据时先读取Redis中的key,如读到且未失效则返回key对应的数据:

如读不到或key失效,则读取数据库,并同步Redis;

写数据时先写数据库,并设置内存对应的key失效。

 

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《分布式系统概念与设计》是一本著名的计算机科学教材,主要讲解了分布式系统的基本概念和设计原理。第五版的内容较之前版本有所更新,更贴近当今的分布式系统技术发展趋势。 分布式系统是由多个独立计算机节点构成的系统,节点之间通过网络进行通信和协作。与传统的集中式系统相比,分布式系统具有更好的可扩展性、容错性和灵活性。本书以理论与实践相结合的方式,深入介绍了分布式系统设计的思想与方法。 第五版的内容涵盖了分布式计算基础、分布式一致性分布式对象和分布式文件系统等方面。其中,作者对一致性问题进行了详细的剖析,介绍了各种一致性模型和算法,如Paxos算法、Raft算法等。此外,本书还介绍了分布式系统中的并发控制、故障恢复、安全和性能优化等关键技术。 与之前版本相比,第五版在内容上更加全面且前沿。对于分布式系统的设计和实现有着重要的指导作用。此外,本书还提供了大量的案例研究和实践练习,帮助读者深入理解和掌握分布式系统的设计方法和技术。 通过阅读《分布式系统概念与设计》第五版,读者可以全面了解分布式系统的基本概念和关键技术,掌握分布式系统的设计原理和实践经验。它适用于计算机科学与技术、软件工程等相关专业的学生和从业人员,也可以作为分布式系统领域的参考书籍。 总之,这本书是一本值得深入学习的经典教材,读者通过学习可以加深对分布式系统的理解,并在实践中应用于解决实际问题。 ### 回答2: 《分布式系统概念与设计》是一本经典的分布式系统教材,第五版发行于2011年。本书作者是George Coulouris、Jean Dollimore和Tim Kindberg。 《分布式系统概念与设计》主要介绍了分布式系统的概念、原理、设计和实现等方面的知识。该书首先介绍了分布式系统的基本概念,如进程通信、一致性、容错和可靠性等,为后续内容打下基础。 接着,书中详细讲解了常见的分布式系统模型与技术,例如客户端/服务器体系结构、对等体架构、消息传递和远程过程调用等。这些模型和技术都是分布式系统开发中常用的工具和方法。 在设计部分,书中介绍了分布式系统的设计原则、模式和方法。作者结合了丰富的实例,从不同角度讲解了如何设计出高效可靠的分布式系统。此外,分布式系统的性能和安全问题也被充分讨论。 最后,书中还涵盖了一些新兴的研究领域,如面向服务的体系结构、Web服务和云计算等,这些技术在当今的分布式系统中越来越重要。 《分布式系统概念与设计》第五版具有全面、系统和深入的特点,适合作为大学本科和研究生分布式系统相关课程的教材。该书可以帮助读者全面了解分布式系统的基本原理和设计思想,并且有助于读者在实际开发中应用这些知识。 ### 回答3: 《分布式系统概念与设计》是一本由美国加州大学圣塔巴巴拉分校教授George Coulouris等人合著的经典教材,目前最新版本是第五版。 该教材主要介绍了分布式系统的概念和设计原理。分布式系统是由多台计算机组成的网络系统,其运行在不同位置的计算机上,相互通过网络进行通信和协作。 第五版的《分布式系统概念与设计》全面介绍了分布式系统架构、通信、一致性、容错、安全等方面的知识。其中包括了分布式计算模型、分布式对象和组件、分布式操作系统分布式文件系统分布式数据库系统等内容。 这本教材的设计目标是帮助读者深入了解分布式系统的设计和工作原理,提供相关技术和概念的全面解释,同时提供实际案例和示例代码,帮助读者掌握实际应用和开发分布式系统所需的工具和技术。 在当前云计算和大数据时代,分布式系统已成为一种重要的计算模型和架构,广泛应用于各个领域。学习和掌握分布式系统的概念与设计原理,对于系统架构师、软件工程师、研发人员等具有重要的意义。 通过阅读《分布式系统概念与设计》第五版,读者可以深入了解分布式系统的工作原理和技术,掌握分布式系统的设计思想和开发方法,提升自己在分布式系统领域的技术能力和专业水平。 总之,《分布式系统概念与设计》第五版是一本重要且有价值的分布式系统教材,它为读者提供了深入了解和应用分布式系统的重要资料和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣晨光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值