At the side it has a MySQL-Server and a MySQL-Client (we usually call it the proxy). Currently this is implemented as libmysql-proxy which is then used by the proxy plugin to implement the proxy.
By splitting up the design into 3 different layers:
- chassis
- low-level protocol + protocol states
- proxy implementation as plugin
we can
- use the chassis for any kind of application
- implement MySQL apps based indepenent of the proxy features
- implement plugins for the chassis which don't use MySQL
For most of the chassis I used functionality provided already by glib2:
- GOption + GKeyFile
- the log facilities
- GModule
as we don't want to invent another platform independent API.
For the future I plan to clean up the second layer a bit and perhaps write a load generator that:
- can handle more than 100 connections
- and is scripted
We already have all the parts for it.
BTW, this is 0.7.0 aka trunk. The 0.6.1 is already built, but is stuck because of problems on win32.