当前位置:  开发笔记 > 后端 > 正文

使用可伸缩性选项设置多个MySQL数据库

如何解决《使用可伸缩性选项设置多个MySQL数据库》经验,为你挑选了1个好方法。

我需要建立一个MySQL环境,支持随着时间的推移添加许多独特的数据库(实际上是数千个).我假设在某些时候我需要开始添加MySQL服务器,并希望我的环境事先为案例做好准备,以便轻松过渡到第2,第3,第100服务器.

只是为了让它变得有趣,如果对解决方案进行建模,那么查询数据库的应用程序会将所有查询发送到单个地址并接收结果,这将非常方便.它应该不知道服务器的数量和位置.数据库名称是唯一的,可用于确定哪个服务器拥有数据库.

我已经做了一些研究,并且MySQL Proxy作为主要候选者弹出,但是我还没有找到任何关于如上所述使其执行的具体内容.

任何人?



1> SquareCog..:

好问题.我知道有几家公司已经做到了这一点(Facebook成为最大的公司).没有人感到高兴,但也有其他类型的傻瓜.

您需要考虑更多的事情 - 当某些数据库或服务器发生故障时会发生什么?当您需要进行跨数据库查询时会发生什么(即使您现在不这么认为,也会如此).

这是FriendFeed解决方案:http://bret.appspot.com/entry/how-friendfeed-uses-mysql

它有点"后退",因为它们基本上使用MySQL作为一个美化的键值存储.我不确定他们为什么不切断中间人并使用类似BerkeleyDB的东西来存储他们的对象.可能是连接管理?似乎MySQL的开销太高了,无法支付可以很容易添加的东西(着名的遗言).

你真正想要的(我认为)是一个分布式无共享数据库.有些是基于MySQL和PostgreSQL等开源技术构建的,但没有一个是免费提供的.如果您有购买心情,请查看以下公司:Greenplum,AsterData,Netezza,Vertica.

此外还有大量各种分布式键值存储解决方案.由于缺乏更好的参考,这里有一个起点:http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/.


简单的解决方案是为当前的数据库连接模块编写一个包装器,并让它维护一个连接器池 - 当你要求db句柄时,给它一个方法来找到正确的数据库.这适用于一定数量的dbs和静态映射; 动态映射存在明显问题.我并不是在问你是否需要跨数据库查询; 我告诉你,如果你的项目增长,你将需要跨数据库查询.也许不是很多,但你需要它们.
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有