可扩展性设计之数据切分 - omigaw/spring- GitHub Wiki
数据库的分布式扩展中,可以利用垂直切分和水平切分联合使用。
数据切分后的数据整合方案
- 在每个应用程序模块中配置管理自己需要的一个数据源,直接访问各个数据库,在模块内完成数据的整合
- 通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明。
针对中间代理层的方案,可以自行开发具体业务的中间代理层,有几种比较流行的数据源整合方案。
1.利用MySQLProxy实现数据切分及整合
2.利用Amoeba实现数据切分及整合
3.利用HiveDB实现数据切分及整合
数据切分及整合可能存在的问题
* 引入分布式事务的问题
思考的维度:数据库并不是唯一一个能够解决事务的地方,可以结合数据库以及应用程序两者共同解决,各个数据库解决自己身上的事务,然后通过应用程序来控制多个数据库上面的事务。
* 跨节点Join的问题
通过应用程序来处理。
* 跨节点合并排序分页的问题
通过应用程序来解决。
小结
通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既解决了写入性能瓶颈的问题,同时也再一次提升了整个数据库集群的扩展性。不论是通过垂直切分,还是水平切分,都能够让系统遇到瓶颈的可能性更小。尤其是当我们使用垂直和水平相结合的切分方法之后,理论上将不会再遇到扩展瓶颈了。