Ulf Wendel

Vote NO for MySQL – Election 2012: NoSQL

Do I have to look out for a new job? Some analysists say so: NoSQL is getting stronger. Given the prediction it is time for me to learn what NoSQL is.

http://de.slideshare.net/nixnutz/vote-no-for-mysql (Slides: Vote NO for MySQL)

As a matter of fact there is no one kind of NoSQL but many. Four different kinds of NoSQL stores are competing with MySQL: Key Value Stores, Document Database, Graph Databases and Big Data/Column-oriented. Each of them has their specific strengths.

Key Value Stores are all about performance. MySQL 5.6 introducesMemcache interfaces for both InnoDB and MySQL Cluster. MySQL Cluster is really fast and scales well. Both for reads and writes.

Document stores are schema free. That must appeal to any web developer. But recalling what normalization means, how useful relations can be and what impact the pure existance of a schema has on the disk footprint may make you think twice. And, MySQL 5.6 InnoDB Online DDL (ALTER TABLE) makes schema changes a little less of an issue.

So, things are crystal clear? Not quite… there is some MySQL critique in the slides. However, using some of the core ideas of NoSQL and incorporating them into MySQL setups can’t be wrong, if MySQL 5.6 is really a limiting factor for you. For example, use the good old divide-and-conquery approach: identify small sets of related data that you can easily shard. Then, use batch processing for rebuilding aggregates from shards: map and reduce the data to create views that you can query… Possibly, you want to use the new high performance interfaces for it, if your queries are simple.

Graph Databases and Big Data are beyond the scope of presentation, which I gave today at the PHP user group Hamburg. Please, be gentle with the presentation: there is a difference between the live show and the slides. In case you would like to see me perform live, why not invite me? I’m based in Kiel (Germany). If your company is nearby, ping me…

Happy hacking.

@Ulf_Wendel Follow me on Twitter