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

标签 c# mysql wcf proxy sharding

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

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

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

有什么明确的方法可以做到这一点吗?也许我要将 C# 应用程序转换为 WCF 服务? MySQL Proxy 有连接数据库的方法,但我不知道它是否可以连接到简单的 Web 服务,更不用说 WCF,考虑到它是用 Lua 编写的。有没有 MySQL 代理的替代方案可以更好地满足我的需求?

最佳答案

Mysql 允许您使用 Lua 编写脚本并连接到 C 或 C++。我没有使用 C# 的经验,但我想您不会有任何问题。

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

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

关于c# - 将 MySQL 代理连接到 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404528/

相关文章:

c# - 以适当且简单的方式将数字参数传递给存储过程

c# - 如何检查 PCL 项目 xamarin 中的服务器是否可达?

c# - 在不知道类型的情况下将 Json.NET 对象转换为传统的 .NET 对象

mysql - MySQL中如何表示 "greater than any number including NULL"?

c# - 在 C# 中挂接 KeyPress 事件

mysql - 迁移 Grail 的 HSQLDB 嵌入式数据库

mysql - 如何使 sequelize 在 View 中有很多关联小写

asp.net - Stream.read 方法接受长度作为整数类型???然而

wcf - 从 Metro 应用程序客户端运行 WCF 服务

c# - WCF 更新服务引用不再为数据协定生成类型