The Open Query GRAPH engine (OQGRAPH) is a computation engine allowing hierarchies and more complex graph structures to be handled in a relational fashion. In a nutshell, tree structures and friend-of-a-friend style searches can now be done using standard SQL syntax, and results joined onto other tables.
That sounds cool, and it's the first time I've heard of a MySQL 'Computation engine' plugin. Delving further into the manual gives some insight, and there's some unexpected twists there :
- OQG is a storage engine, but data stored is not persistent w.r.t. server crashes.
- All tables have the same schema, storing details of graph 'edges'.
- The fixed schema has a magic column called 'latch'
- Depending on the constant value of latch used in a SELECT statement on the table, the engine will return different 'pseudo results'.
- SELECT where latch = NULL AND ... allows queries on the graph as though it were a list of edges (as the data was entered).
- SELECT where latch = 0 [AND ...] allows queries on the graph as though it were a list of nodes.
- SELECT where latch = 1 [AND ...] allows Dijkstra's shortest path algorithm to be applied to the graph
- SELECT where latch = 2 [AND ...] allows a breadth-first search to be applied to the graph
It's also undeniable that the use of magic numbers and the 'latch' column adds a certain arcane wackiness that charms this reader. It's definitely a MySQL-style solution, continuing the tradition of MyISAM, Blackhole, Federated etc where good-enough gets to market before best, and 20% of the implementation effort delivers 80% of the functionality.
Once again I'd be interested to hear about how this is actually being used, and what sort of difference it is making.
Each of these three cool projects enable new solutions individually and expand the dimensions of what is possible using MySQL. In combination they open up a vast expanse of potential. One of the best things about them is that they all happened outside the confines of MySQL / Sun / Oracle. Hopefully they will get the success they deserve so that we can have more cool new projects in future.