Database trends come and go over the years, dressed up as the new thing to take down the good old fashioned relational database system. New ways to store and retrieve data pop up, gain some interest, and then end up a a niche offering. I have noticed however that some of these upstart alternatives leave a permanent impact on the Oracle eco-system. Take for example pure in-memory databases, databases only in the cloud, data storage methods such as JSON. These have all been adopted by the Oracle database, with the resulting system much faster or more useful. Sometimes Oracle don’t spend time writing their own version of the new kid on the block, they just buy them. This is not a criticism, but a recognition that Oracle cant invent all the new stuff, nor can they build their own market leading versions quickly enough. Oracle do invent their own stuff, look at the fabulous APEX (App-ex), SQL developer and the Data Visualisation product as good examples on in-house market leading products, and of course there is no beating the Oracle database.
This series of blogs is about one product they are adopting as an Oracle offering, the Graph Database. Although not a fully fledged cloud service yet, Oracle have a version of the popular data storage and retrieval system, which is hard for traditional relational developers to get their head around.
Graph databases are weird.
- There is no common naming convention for objects. In our safe relational world we know what a table is, but graphers cant yet agree on a a name for their objects! It is a node or a vertex? Is it an edge or a relationship?
- There are different graph Languages. Where we have SQL, they have vendor specific code. Its bad enough having variants of SQL, lets not compound it by having different versions of Graph Query Language.
- There is no model. What? how does that work? When you build a normal database, you can build the tables and other objects (views, matviews) before you get any data. You can view your data model (in SQL Developer of course), and see all the tables and relationships (joins). But can you do that in a graph db? The only way I found to do it is to create a fake graph that contains the metadata as objects, for example this model of the Analytics eco-system
There is hope, Luke…
It appears that many of the big players in Graph databases have got together to try and sort out the things that need sorting (like naming and language). The Graph Foundation have been formed to work on GraphQL, a stab at getting common language sorted out, sadly there is no sign of Oracle in the members list, but lets hope an industry standard is adopted as soon as possible.
Anyway, weird as they are, there are some things that graph dbs are great at, you just have to look at the advocates to know they are worth looking into – Facebook, Airbnb, AWS
The good news is the Oracle Graph database is FREE. Like Apex Free, in that it is part of the database.
The what is, and why Oracle can be read here: https://www.oracle.com/big-data/what-is-graph-database/ and I particularly like the bold statement:
“Graph databases and graph techniques have been evolving as compute power and big data have increased over the past decade. In fact, it’s become increasingly clear that they will become the standard tool for analyzing a brave new world of complex data relationships. As businesses and organizations continue pushing the capabilities of big data and analysis, the ability to derive insights in increasingly complex ways makes graph databases a must-have for today’s needs and tomorrow’s successes.”
So time to investigate 😃
The next article will cover the install.