`

MySQL+amoeba,轻量级的分布式数据库实现

 
阅读更多

最近因为一个大作业,我需要建立一个分布式数据库系统。Oracle和DB2固然强大,但巨大的资源占用以及软件授权的限制让我放弃选择它们。我的目标是寻找轻量级的、免费(最好是开源)的解决方案,最终目标锁定在国产的amoeba上。
  amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。有关amoeba的更多信息可以参考其文档作者blog。google出来的相关信息并不多,不过作者的这个帖子(含回复)倒是值得一看。
  下面说说我的理解:
  1、amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。
  2、由上一条,建议使用MySQL的Replication机制建立Master-Slave来做副本。我一开始理解有误,使用了amoeba的virtual DB(负载均衡pool)做writePool,结果使得本应插入同一个表中的数据被拆分地写入了不同的物理数据库中。这样自然与副本的语义不符了。
  3、amoeba已经实现了数据的垂直切分与水平切分。水平切分方面,粒度是行。使用SQLJEP语句可以设计出复杂的切分规则,个人认为是比较强大的。垂直切分的粒度是表,可以把针对不同表的请求发送到不同的节点上执行,但不能以列作为分片粒度。从作者的说法看,amoeba不做SQL解析和重写。在目前的机制下似乎是难以实现同一个表不同的列在不同节点上的分布。不过对开发人员来说,设计良好的表结构应该可以实现简单的基于关系属性的负载均衡的。
  要说这个项目最大的不足,我想可能是文档方面的:
  1、软件的文档(0.31版)主要在讲解配置文件怎么修改,却没有说怎么运行amoeba。我以前没有MySQL Proxy以及Java工程方面的经验,下载解压amoeba之后,第一感觉这是一个数据库中间件,要通过Java API编程使用,所以我还纳闷文档中为什么没有API的说明。仔细一看才发现bin目录下有启动脚本。回到文档,发现只在最后的“amoeba性能调优”一节才提到了“amoeba启动脚本”。希望作者改进下一版的文档,让新手不要再疑惑。
  2、文档的“amoeba for aladdin”一节说“(amoeba for aladdin)其性能比MySQL Proxy也好,但比amoeba for mysql微微差了点”,看起来性能优劣是“amoeba for mysql>amoeba for aladdin>MySQL Proxy”;但在这个帖子的回复中,作者又说“(amoeba for mysql)比官方的MySQL Proxy性能大致低10%~20%左右”,两处似乎有矛盾。继续翻这个帖子,才发现原来在0.27版本以后,amoeba的性能逐渐超过了MySQL Proxy。所以,希望作者可以完善一下文档,并在官方网站或blog的显著位置说明最新版本的特性,以免引起误会。
  3、amoeba是一项优秀的工作,有必要提供完整的英文文档,以便国际推广。

分享到:
评论

相关推荐

    amoeba[1]分布式数据库解决方案.pdf

    ### Amoeba: 分布式数据库Proxy解决方案 #### 背景与意义 随着信息技术的快速发展及互联网应用的广泛普及,传统的集中式数据库系统逐渐暴露出其局限性,包括性能瓶颈、可靠性问题以及扩展性不足等。为了克服这些...

    基于Amoeba中间件的分布式数据库管理系统.pdf

    在实现上,本管理系统采用了可插拔机制,这意味着系统设计者可以在不影响现有架构的情况下,随时添加或替换底层数据库连接和路由实现,从而实现数据库的线性扩容。这对于应对大规模数据处理和确保系统在长时间内的...

    Mysql+drbd+heartbeat+amoeba集群配置详解

    根据提供的信息,我们可以详细探讨如何构建一个基于MySQL、DRBD(Distributed Replicated Block Device)、Heartbeat以及Amoeba的高可用性和负载均衡的数据库集群系统。这种集群配置旨在提高系统的稳定性和数据的...

    amoeba分布式数据库解决方案

    AmoebaForMysql是Amoeba框架下的一个具体实现,主要用于MySQL数据库的分布式管理。要开始使用AmoebaForMysql,首先需要确保满足以下先决条件: - **Java环境**:AmoebaForMysql基于Java开发,因此需要在部署环境中...

    Amoeba:分布式数据库Proxy解决方案

    ### Amoeba: 分布式数据库Proxy解决方案 #### 一、引言 随着信息技术的快速发展,数据量的急剧增长使得传统的集中式数据库面临着前所未有的挑战。为了应对这些挑战,分布式数据库技术应运而生,成为了现代企业数据...

    amoeba集群文档+Amoeba使用指南pdf+mysql主从同步

    标题中的“amoeba集群文档+Amoeba使用指南pdf+mysql主从同步”是指一系列关于Amoeba中间件和MySQL数据库集群的知识资源,包括Amoeba的集群部署、使用方法以及MySQL的主从同步策略。这些文档将帮助读者理解如何构建高...

    第三十九章:DRBD+Keepalived+Mysql+Amoeba双主双从高可用集群1

    【第三十九章:DRBD+Keepalived+Mysql+Amoeba双主双从高可用集群1】 本文将深入探讨一种基于DRBD、Keepalived、Mysql和Amoeba技术构建的双主双从高可用集群方案,旨在提供高可靠性和数据安全性。这个集群配置确保了...

    分布式数据库Proxy解决方案(mysql负载均衡)

    AmoebaForMysql 是 Amoeba 框架的一个具体实现,主要用于 MySQL 数据库的分布式管理。它提供了一系列工具和服务,帮助用户快速部署和管理 MySQL 数据库集群。 - **快速配置**: 提供简单易用的配置方法,让用户能够...

    Amoeba+mysql 读写分离 Keepalived+mysql

    **Amoeba+MySQL 读写分离** Amoeba 是一个分布式数据库中间件,主要用于MySQL的读写分离。它的主要作用是将读操作分发到多个从库,从而减轻主库的压力,提高系统整体的读取性能。Amoeba 通过透明的方式工作,应用...

    分布式数据库架构及企业实践——基于Mycat中间件

    互联网的蓬勃发展,业务驱动技术不断升级,在系统越来越庞大,技术越来越复杂,应用部署集群化,所有压力全部指向数据库,数据量巨大,数据库优化也到极限了,数据库的运维难以为继,在这种情况下,分布式数据库似乎...

    分布式数据库解决方案[收集].pdf

    分布式数据库则将数据分散存储在多个地理位置分散的节点上,通过网络进行通信和协调,从而实现负载均衡、提高可用性和易于扩展。 Amoeba 是一个分布式数据库代理系统,它位于客户端和数据库服务器之间,起到中间件...

    网络教学平台下分布式数据库技术的研究.pdf

    相较于集中式数据库管理系统,分布式数据库管理系统能更好地实现信息资源的高度共享和跨地域的数据处理。 网络教学平台利用分布式数据库技术,可以在多个分散的数据库之间集成,从而支持更广泛的教学资源共享与整合...

    amoeba.pdf

    Amoeba项目的目标是简化客户端操作分布式数据的复杂性,通过提供切分规则来降低数据切分对应用的影响,减少数据库与客户端的连接数,并实现读写分离。它为数据库管理员提供了类似SQL语法的数据切分规则,使得客户端...

    MySQL搭建Amoeba_读写分离.docx

    Amoeba 是一个基于 MySQL 的 proxy,能够集中地响应应用的请求,并根据用户事先设置的规则,将 SQL 请求发送到特定的数据库上执行,从而实现负载均衡、读写分离、高可用性等需求。 一、Amoeba 简介 Amoeba 是一个...

    Amoeba for mysql

    Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性...

    amoeba-mysql-binary-2.2.0.tar

    Amoeba是一个分布式数据库中间件,它能够将一个MySQL实例透明地扩展到多个节点,实现数据的高可用性和负载均衡。这个tar文件可能包含了Amoeba运行所需的全部文件,如配置文件、库文件和可执行文件等。 描述中提到了...

    Amoeba搞定mysql主从读写分离

    在Java开发环境中,Amoeba的使用能够帮助开发者构建出高效、稳定的分布式数据库系统。 首先,了解Amoeba的工作原理至关重要。Amoeba作为透明的数据分片中间件,会拦截应用程序对MySQL的SQL请求,然后根据预设的策略...

    amoeba配置详解

    Amoeba是一个分布式数据库代理解决方案,它的出现是为了应对集中式数据库技术在处理性能、可靠性、可扩充性等方面所面临的局限性。在传统的集中式数据库系统中,数据处理集中在单个服务器上,这导致了性能瓶颈,一旦...

    amoeba-mysql-binary-2.2.0.tar.gz

    Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性...

    基于分布式数据库的聚丙烯安全信息管理系统设计与实现.pdf

    【基于分布式数据库的聚丙烯安全信息管理系统设计与实现】是一个针对化工生产安全信息管理的系统,特别是聚焦于聚丙烯这种重要的化工原料。系统利用J2EE平台和Amoeba技术,旨在解决化工企业在地理位置分散的情况下,...

Global site tag (gtag.js) - Google Analytics