1

私は現在、大規模な 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 の代替手段はありますか?

4

1 に答える 1

0

Mysql を使用すると、Lua でスクリプトを作成し、C または C++ に接続できます。私は C# の経験はありませんが、問題はないと思います。

  • mysql プロキシをインストールします。1 つ以上のバックエンド mysql DB を決定できます。
  • Lua から呼び出されるモジュールとして C コードをコンパイルします:リンク
  • コードに応じて、クエリのバックエンド IP を設定し、リダイレクトします。

mysql-proxy は Lua 5.1 を実装しており、手順はバージョンごとにかなり異なるため、Lua のドキュメントを検索するときは注意してください。

于 2014-01-30T07:47:45.673 に答える