I'm working on a SQL proxy for distributing load as a project at
university. The idea is to have a system, which can transparently be
inserted between an existing database and its clients, to allow the system
performance to scale by adding more databases as the load increases. This
way we don't need to recode the clients.
Below is a diagram of the system.
Client 1 Database 1
| | | |
| |<----- Proxy (distributor) ----->| |
|___| | SQL _____ SQL | |___|
. | | .
. ------------->|___|<----------- .
| SQL SQL |
Client n | | Database m
_____ | | _____
| | | | | |
| |<----- ----->| |
The job of the proxy is to look at the querys: If the query is a select it
can be transmitted to only on of the databases, but if it is an
update/insert it has to go to all of them. Furthermore it should monitor
the set of databases, and exclude databases that stop working, and update
them when thay again become available.
I have been browsing a bit around mysql.com and looking at the c client
library, but I haven't been able to find any information about the
protocol used between the mysql database and the client, Is such
information available anywhere, or could anyone point me to areas of
interest in the mysql server code?
Thanks in advance!
Bye, Peter Korsgaard