views:

869

answers:

3

Are there any alternatives for MySQL Proxy. I don't want to use it since it's still in alpha.

I will have 10 MySQL servers with table_1 table_2 table_3 table_4 ... table_10 spread across the 10 servers. Each table is identical in their structure, their just shards with different data sets.

Is there a alternative to MySQL Proxy, where I can have my client application connect to a single SQL Server (A proxy), which looks at the query and fetches the data on behalf of it.

For example, if the client requests "SELECT * FROM table_5 WHERE user=123" from the Proxy, which connects to the 5th SQL Server that houses table_5 and gets the data?

A: 

Why aren't you using table partitioning on one server?

tpdi
In a perfect world, there would only be one table called "table" in one server. But this is extremely large (in the order of 100 million rows), a single server would not be able to handle.
The Unknown
+3  A: 

Spock Proxy supports range-based horizontal paritioning of a large MySQL database. The proxy intercepts SQL queries from the client, sends queries to the correct databases based on how the database is partitioned, then aggregates the results from each database and returns them to the client as a regular MySQL result set.

CodeToGlory
A: 

I can see that adding a proxy could enable you to change little or nothing in the app but it's worth considering that you're adding a big single point of failure.

I would suggest that you move the logic required to decide which database to go looking in up into the application layer.

James C
There are multiple application components that access the databases... that's why I am looking to move it out of the application layer. If I need to change the configuration of the demultiplexer, I would need to change the several applications, this does not seem realistic. Client Application -> HA Proxy (selects a LB Proxy) -> LB Proxy (a MySQL Proxy) -> SQL DB
The Unknown