原博客地址:http://blog.csdn.net/yongsheng0550/article/details/6600749
Amoeba for MySQL是Amoeba开源社区发布的一款MySQL数据库中间层代理软件,致力于数据库的切分整合、负载均衡、高可用性等。Amoeba for MySQL 对客户端程序来说就是一个虚拟的MySQL,客户端可以像使用MySQL一样使用它。Amoeba开源社区还发布了支持其他数据库的类似软件,Amoeba for Aladdin支持所有提供jdbc驱动的数据库(Oracle、SQL Server、MySQL等) ,Amoeba for MongoDB支持NoSQL数据库MongoDB。
Amoeba for MySQL可在MySQL之上实现的功能有:数据切分整合、Query路由、Query过滤、读写分离、负载均衡。通过这些功能,Amoeba降低了应用处理分布式数据库的复杂性,增强了MySQL数据库的高可用性,提升了整个系统的可扩展性。
随着计算机网络技术的飞速发展和业务应用范围的不断扩充,数据库技术面临着超大数据量和高性能高可用性的多重挑战。传统的集中式数据库系统由于可用性低、可扩展性差、存在性能瓶颈等问题,已无法满足业务应用系统的需要。在这种情况下,分布式数据库系统发展迅速,其良好的可扩展性解决了性能瓶颈问题,也增强了整个系统的可用性。但是,分布式数据库系统带来诸多好处的同时,也带来了一些麻烦。分布式的结构,增加了应用开发的复杂度,也对数据维护造成了一定的困难,客观上使得整个系统更加的复杂和难于维护。为了解决分布式数据库系统带来的这些麻烦,分布式数据库中间层(代理)软件应运而生。
数据库中间层软件处于应用程序与数据库服务器之间,用于分布式数据库的整合切分、负载均衡、读写分离等。数据库中间层软件实现了分布式数据库系统对应用透明,降低了应用开发难度,削弱了应用对数据库实际位置的依赖,使得整个系统更易于维护。
Amoeba for MySQL就是一款MySQL分布式数据库系统的中间层软件,其他的MySQL分布式数据库系统的中间层软件还有MySQL Proxy,HiveDB。Amoeba for MySQL相较于其他软件有以下优势:
a.基于XML的配置文件,用SQLJEP语法编写规则,配置比较简单(MySQL Proxy需要编写大量Lua脚本才能实现),有比较完善的使用帮助文档
b.同时支持水平切分和垂直切分(HiveDB只支持水平切分)
c.目前的版本已经比较稳定,已有很多企业用于生产环境
d.支持HA机制、支持活动连接数均衡、支持权重配置
Amoeba for MySQL不支持事务:其实,分布式事务的问题是所有数据库中间层普遍面临的问题,不是Amoeba独有的问题;目前通常的解决办法是,将事务拆分成几个单数据库内的小事务,由应用程序进行总控。
Amoeba for MySQL不支持跨节点JOIN:同样,这个问题也不是Amoeba独有的,通常的解决办法是由应用程序先从一个节点取出数据,然后由应用程序去其他节点JOIN。
Amoeba for MySQL不支持跨节点排序:这个问题也不是Ameoba独有的,通常的解决办法是由应用程序从多个节点中取出数据,然后进行排序。
Amoeba for MySQL不适合返回大量(超过10万)数据的查询。
Amoeba for MySQL不支持分库分表,只能做到分数据库实例。