将MySQL代理连接到C#应用程序

时间:2012-11-15 19:16:12

标签: c# mysql wcf proxy sharding

我目前正在开发一个项目,涉及将大型MySQL数据库拆分为多个较小的分片。但是,客户端必须能够像以前一样查询数据库,而无需更改用户界面;也就是说,他们通过MySQL客户端(Workbench,DBForge等)发送的任何查询都必须从master数据库返回与其分片相同的结果集。

这要求应用程序位于客户端和服务器之间,以拦截查询,分析它们,修改它们,并根据需要将它们重定向到主数据库或分片。我知道MySQL Proxy特别适合这项任务,但这就是问题所在。

我已经编写了一个C#应用程序,它接受一个MySQL查询字符串,修改它,查询它必须的任何分片,并聚合所有分片的结果。我的问题是我不知道如何将MySQL代理连接到此应用程序。理想情况下,MySQL Proxy会拦截查询,确定它是否“可以”,并将其发送到我的分片应用程序或主数据库。然后,分片应用程序将其结果集发送回MySQL代理,后者将其返回给客户端。

有没有明确的方法来实现这一目标?也许如果我将C#应用程序转换为WCF服务? MySQL代理有连接到数据库的方法,但我不知道它是否可以连接到一个简单的Web服务,更不用说WCF,考虑它是用Lua编写的。是否有一些替代MySQL代理可以更好地满足我的需求?

1 个答案:

答案 0 :(得分:0)

Mysql允许您使用Lua编写脚本并连接到C或C ++。我没有C#的经验,但是我觉得你没有问题。

  • 安装mysql-proxy。您可以确定一个或多个后端mysql DB。
  • 将您的C代码编译为要从Lua调用的模块:link
  • 根据您的代码设置查询的后端IP并重定向。

在搜索Lua文档时要小心,因为mysql-proxy实现了Lua 5.1,并且程序在不同版本之间发生了很大的变化。