Over the years I’ve seen a couple of interesting sharding solutions for the shared-nothing storage MySQL architecture, I can honestly say that none were ever worth writing home about. Scalebase provide a fairly robust looking solution however at a very high cost – and the cost of scaling your database shouldn’t have to be astronomical, especially when the database is open-source.
Sharding at the application level or at an even higher level (i.e. varnish-apache-mysql silos handling balanced requests) is a viable solution however it requires considerable development time and requires careful attention to architecture & design. NoSQL stores can provide really good storage for sharding metadata (sharding keys, data distribution & reporting) however once again there are no off-the-shelf tools that can provide this functionality.
A new feature being developed by the guys over at Oracle seems to be the way forward with respect to MySQL sharding. The feature known as MySQL Fabric provides sharding through a very interesting mechanism – the sharding actually happens at the level of the shard aware connector collaborating with the MySQL Fabric node essentially splitting the data both for reads & writes. MySQL Fabric also provides support for high availability groups i.e. replicated node groups (similar to MongoDB replicasets) which can be combined with sharding to provide shard groups.
The technology under development looks very promising and is the only sharding solution for MySQL which provides: