分库/分表的扩展模式
- 中间层可以将数据拆解成,对不同数据库进行访问,然后将访问结果在中间层进行汇总。
- 局限性:一个事务的访问在不同的数据库中,如:转账,一个account在数据库A,另一个在数据库B,会将一个事务拆解成两个事务,就很难保证事物的原子性,以及其他的一些性质。 此时,需要将中间层再加一些性质,来保证事物的性质ACID;如:mysql中在数据库中都会提供一些接口给中间件,去做分布式数据库的处理。
- 优点:将数据库之间的通讯降到最低,因为会在意如何拆分业务使负载均衡,在意逻辑;基本大部分都是用这样的扩展方式,这种扩展方式更强。
并行/分布式数据库
- 在数据库内部拆分数据,分到不同节点上执行。此时应用访问数据库就向访问单机数据库一样,对应用友好。
- 优点:不需要将一个查询拆分为子查询,可以分给不同节点不同的东西。不存在对数据库访问受到局限性。
- 局限性:数据库并行/分布式的方式不能做到对应用透明;会采取直接的方式分数据,会导致扩展性上不去,应用和数据库协调的不好
分布式事务
- 有多个节点,其中有一个节点接受到请求,会分发任务到其他节点去执行,那么该节点为主节点(coordinator),其他节点为从节点(participant)
- 认为主节点就做组织工作,不做其他事物;主节点要满足ACID,主节点可以是APP/DB</