我需要建立一个MySQL环境,支持随着时间的推移添加许多独特的数据库(实际上是数千个).我假设在某些时候我需要开始添加MySQL服务器,并希望我的环境事先为案例做好准备,以便轻松过渡到第2,第3,第100服务器.
只是为了让它变得有趣,如果对解决方案进行建模,那么查询数据库的应用程序会将所有查询发送到单个地址并接收结果,这将非常方便.它应该不知道服务器的数量和位置.数据库名称是唯一的,可用于确定哪个服务器拥有数据库.
我已经做了一些研究,并且MySQL Proxy作为主要候选者弹出,但是我还没有找到任何关于如上所述使其执行的具体内容.
任何人?
好问题.我知道有几家公司已经做到了这一点(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/.