数据访问层

来源:互联网 发布:苹果赚钱软件哪个好 编辑:程序博客网 时间:2024/06/05 16:08

给数据库减压:1:优化应用,看是否有不必要的压力;2:看有没有办法降低数据库压力,如缓存,搜索引擎等;3:将数据库的数据和访问分到多台数据库上,分开支持。

数据拆分有俩种方式:垂直拆分和水平拆分
垂直拆分带来的影响:
单机的ACID被打破了,要么放弃原来的事务,要么引入分布式事务;
Join操作变的比较困难
靠外键约束的场景会收影响
水平拆分带来的影响:
ACID问题;
Join问题;
外键问题;
生成唯一ID会受影响
针对单个逻辑意义上的表的查询要跨库;

分布式事务:
分布式事务模型:X/OpenDTP模型,定义了三个组件AM,RM,TM
AP与RM之间可以利用RM自身提供的native API进行通信,这种方式不使用事务,当要使用事务的时候,AP需要的到对RM的连接,此连接由TM进行管理,然后使用XA的native API进行交互。
AP与TM之间使用TX接口,用于对事务进行控制,包括启动事务,提交事务,回滚事务等。
TM与RM之间通过XA接口交互,TM管理到RM的连接,并实现俩阶段提交。
2阶段提交:提交之前增加了准备阶段,只有TM控制RM在准备阶段都成功,才会在第二阶段进行提交操作,只要有一个失败,则进行回滚操作。
CAP理论:
一致性:所有节点在同一时间读到同样的数据,
可用性:每个请求都能收到一个响应,
分区容忍性:即使系统有部分问题,但系统仍然能够继续运行。
多机的Sequence问题:
把所有ID集中放在一个地方进行管理。每台机器使用ID时都从这个ID生成器上取。
跨库join问题:在应用层把原来的Join操作分为多次数据库操作;
数据冗余;
借助外部系统(如搜索引擎)解决一些跨库问题。

原创粉丝点击