私は現在、大規模な MySQL データベースを複数の小さなシャードに分割するプロジェクトに取り組んでいます。ただし、クライアントは、ユーザー インターフェイスを変更することなく、以前と同じようにデータベースにクエリを実行できる必要があります。つまり、MySQL クライアント (Workbench、DBForge など) を介して送信されるすべてのクエリは、シャードから送信されるのと同じ結果セットをマスター データベースから返す必要があります。
これには、クライアントとサーバーの間にアプリケーションを配置して、クエリをインターセプトし、分析し、変更し、必要に応じてマスター データベースまたはシャードにリダイレクトする必要があります。MySQL Proxy がこのタスクに特に適していることは知っていますが、ここで問題が発生します。
私はすでに、MySQL クエリ文字列を受け取り、それを変更し、必要なシャードにクエリを実行し、すべてのシャードからの結果を集計する C# アプリケーションを作成しました。私の問題は、MySQL Proxy をこのアプリケーションに接続する方法がわからないことです。理想的には、MySQL Proxy がクエリをインターセプトし、それが「シャーディング可能」かどうかを判断し、それをシャーディング アプリケーションまたはマスター データベースのいずれかに送信します。次に、シャーディング アプリケーションはその結果セットを MySQL Proxy に送り返し、MySQL Proxy はそれをクライアントに返します。
これを達成する明確な方法はありますか?おそらく、C# アプリケーションを WCF サービスに変えるとしたら? MySQL Proxy にはデータベースに接続する方法がありますが、Lua で記述されていることを考えると、単純な Web サービス、ましてや WCF に接続できるかどうかはわかりません。私のニーズにより適した MySQL Proxy の代替手段はありますか?