I wrote recently of Cogito’s high-performance engine for modeling graphs. Oracle has taken a very different approach to the same problem, and last Monday I drove over to Burlington to be briefed on it.
Name an approach to data management, and Oracle has probably
- Hacked together a version on a consulting contract
- Packaged it up for other customers in the same industry
- Set to work on improving and generalizing it
- Integrated it into SQL as a preference over supporting standalone data manipulation languages for it
- Stopped short of being 100% competitive in that functionality
(At least, that’s the general template; truth be told, most of the important cases deviate in some way or other.)
In the case of graphs, it appears that Oracle first productized direct support in a “Network Data Model” in Oracle10g Release 1. Not to be confused with prerelational CODASYL systems and the like, this is just a way of representing things like map elements (roads, power lines, etc.) that utility companies might care about. Life sciences companies also used this functionality in several ways, but asked Oracle to support the RDF standard (Resource Description Framework).
The basic element of an RDF model is a graph edge – two nodes and a relationship arc, each of which has a URI (Uniform Resource Identifier). In RDF lingo these are (subject, property, object) triples. RDF support was released about 9 months ago in Oracle10g Release 2. Applications seem to be focused on the usual life sciences suspects – pathway tracking, symptom/datapoint relationship tracking, ontology management, etc.* And yes, it’s integrated into SQL, so that you can (for example) intersect the results of RDF and standard SQL queries in a single statement.
*Obviously, RDF is tied into the Tim Berners-Lee’s whole Semantic Web vision. And at least in principle it could be used for a form of MDM as well. But so far as I could tell, that’s still all futures at this point.
The database support for the RDF extension to SQL amounts to half a dozen tables or so, to represent nodes, edges, and so on. The two core tables (using names from this overview, which are not the actual names used in the system) are IdTriples, which stores the actual arcs/triples, and UriMap, which associates URIs with objects (and subjects and properties). Processing thus consists mainly of joining the IdTriples table to itself, and also to UriMap. These are accelerated by all sorts of relational performance goodness from the Oracle infrastructure, especially materialized join views.
So what do I think about all this? Well, it all sounds pretty smart. But that’s what one would expect me to think. Historically I’ve been a huge fan of Oracle’s text-search-in-SQL, OLAP-in-SQL, and so on. And generally I’ve turned out to be rather lonely in my enthusiasm. So on this one, while the story certainly sounds good, I think I’ll wait and see if Oracle can do a better job of being fully competitive than it did in those other areas. Also, I’d be more inclined to give them the benefit of the doubt if they hadn’t allowed themselves to fall behind in supporting XML.
Other links, with thanks to Oracle’s Susie Stephens, include:
- Oracle’s Semantic Technologies Web site is at: http://www.oracle.com/technology/tech/semantic_technologies/index.html
Other URLs you may be interested in include: