我目前正在开发一个项目,涉及将大型MySQL数据库拆分为多个较小的分片。但是,客户端必须能够像以前一样查询数据库,而无需更改用户界面;也就是说,他们通过MySQL客户端(Workbench,DBForge等)发送的任何查询都必须从master数据库返回与其分片相同的结果集。
这要求应用程序位于客户端和服务器之间,以拦截查询,分析它们,修改它们,并根据需要将它们重定向到主数据库或分片。我知道MySQL Proxy特别适合这项任务,但这就是问题所在。
我已经编写了一个C#应用程序,它接受一个MySQL查询字符串,修改它,查询它必须的任何分片,并聚合所有分片的结果。我的问题是我不知道如何将MySQL代理连接到此应用程序。理想情况下,MySQL Proxy会拦截查询,确定它是否“可以”,并将其发送到我的分片应用程序或主数据库。然后,分片应用程序将其结果集发送回MySQL代理,后者将其返回给客户端。
有没有明确的方法来实现这一目标?也许如果我将C#应用程序转换为WCF服务? MySQL代理有连接到数据库的方法,但我不知道它是否可以连接到一个简单的Web服务,更不用说WCF,考虑它是用Lua编写的。是否有一些替代MySQL代理可以更好地满足我的需求?
答案 0 :(得分:0)
Mysql允许您使用Lua编写脚本并连接到C或C ++。我没有C#的经验,但是我觉得你没有问题。
在搜索Lua文档时要小心,因为mysql-proxy实现了Lua 5.1,并且程序在不同版本之间发生了很大的变化。