2012-11-15 56 views
1

我目前正在研究一個涉及將大型MySQL數據庫拆分爲多個較小碎片的項目。但是,客戶端必須能夠像以前一樣查詢數據庫,而不必更改用戶界面;也就是說,通過MySQL客戶端(Workbench,DBForge等)發送的任何查詢都必須從主數據庫返回與其分片相同的結果集。將MySQL代理連接到C#應用程序

這需要在客戶端和服務器之間安裝一個應用程序,以攔截查詢,分析查詢,修改它們,並根據需要將它們重定向到主數據庫或碎片。我知道MySQL代理特別適合這個任務,但這就是問題所在。

我已經寫了一個C#應用程序,它接受一個MySQL查詢字符串,修改它,查詢它必須的分片,以及聚合來自所有碎片的結果。我的問題是我不知道如何將MySQL Proxy連接到這個應用程序。理想情況下,MySQL代理將攔截一個查詢,確定它是否「可分片」,並將其發送給我的分片應用程序或主數據庫。然後,分片應用程序會將其結果集發送回MySQL代理,然後將其返回給客戶端。

有沒有什麼明確的方法可以做到這一點?也許如果我將C#應用程序變成WCF服務? MySQL Proxy具有連接數據庫的方法,但我不知道它是否可以連接到簡單的Web服務,更不用說WCF,因爲它是用Lua編寫的。有更好的方式可以滿足我的需求嗎?

+0

我只是好奇,爲什麼要使用C#應用程序呢? –

+0

在開始這個項目之前,我已經有了很多適用的C#代碼,所以我覺得這比在Lua中從頭開始編寫代碼更容易。 – Jawshooah

+0

然後我想我錯過了一些東西,這個問題聽起來像C#應用程序和MySQL代理做同樣的事情。有什麼區別? –

回答

0

Mysql允許您使用Lua編寫腳本並連接到C或C++。我沒有C#的經驗,但我認爲你沒有問題。

  • 安裝mysql-proxy。您可以確定一個或多個後端mysql數據庫。
  • 將您的C代碼編譯爲要從Lua調用的模塊:link
  • 根據您的代碼設置查詢的後端IP並重定向它。

在搜索Lua文檔時要小心,因爲mysql-proxy實現了Lua 5.1,並且程序在版本之間變化很大。