Some years ago Oracle Labs released their engine for Property Graphs named PGX: Parallel Graph AnalytiX.
If you look for a solution to implement Label Property Graphs (or just Property Graphs) that’s a really powerful, flexible and easy to use solution. Worth noting that it isn’t about RDF graphs, those are managed in a different way! (And no need to say that “graphs” aren’t “charts” !!)
Oracle Labs keeps releasing new versions with new feature on their OTN page. You will find the downloads and various links to tutorials, reference documents and Javadoc.
So far so good: everything is available to get you started in a single place with all the references you need.
Tell me where you got your PGX from, and I will tell you what feature you get!
Having such a great tool between their hands it was obvious it would be embedded and linked with some other products of the Oracle landscape. It also is the best way to get traction on a new tool and generate a positive momentum.
That’s why (I believe) you nowadays find PGX into the Oracle Database and into their Big Data solution.
But … there is a BUT!
Sadly, the embedding into other tools created various branches of the PGX product. The OTN version maintained (I believe) by Oracle Labs directly is the one evolving the more and faster. It implements new feature at every single release. They aren’t releasing on a fixed schedule but it seems more like releases when they have something new and fancy to show.
For example, the current available one in OTN is PGX 3.2.0, released end of January 2019. It brings changes in the REST API, the first implementation of Machine Learning algorithms and some other things.
The downside of the OTN versions is the lack of the “connector” to store the graph in an Oracle Database or HDFS.
You get the newest cool feature in PGX but you get a limited list of basic “connectors” to load and persist graphs, mainly files on disk in the end.
Oracle Spatial and Graph (in the database)
I said earlier PGX was also embedded inside Oracle Database, it started with the 12c R2 version and of course it’s still valid for 18c and newer as well as the cloud versions.
This version of PGX has a particular set of feature to use the Oracle Database for storage, making loading and creation of a graph extremely simple as it can be done with standard SQL. Inside the database the graph is stored into tables. When creating a new graph a set of 5 tables is created and the most important are two of them:
– <graph name>VT$ : table containing the vertices
– <graph name>GE$ : table containing the edges
The big downside of the embedded PGX is the version! Currently in Oracle Database 18c XE (18.4) or in Oracle Database 18.3 EE you get PGX 2.5.1 out of the box.
No Machine Learning at all and only PGQL (the graph query language being close to SQL) 1.0 only (while OTN PGX 2.6.1 released in December 2017 had support of PGQL 1.1 already).
Fun fact is that the embedded version is PGX 2.5.1, while there isn’t such a version in OTN. OTN has a 2.5.0 version, an educated guess would be to say that the embedded PGX in Oracle Database 18c is based on OTN PGX 2.5.0 with the addition of the feature reserved to this version making it PGX 2.5.1.
Patch, patch and … patch
Luckily you must not stay with the old version you get out of the box. As long as you manage to find them, there are patches available on My Oracle Support.
Let’s be honest: I didn’t manage to find them till I asked someone at Oracle about it and I have been given a patch number to look for. There is a known incompatibility between me and My Oracle Support search function.
You can look for “Patch 28577866: MISSING LATEST PGX 3.1.X FUNCTIONS IN ORACLE 12.2 AND 18.1” (30-Aug-2018) which will give you PGX 3.1.1. Can’t say exactly what is different in this version as there isn’t an OTN 3.1 version, but it’s pretty close to OTN 3.2 except for the machine learning part I would guess. The REST API seems to be already to the newer, not backward compatible, version as they released a special Cytoscape plugin version to be used after the patch.
Want more? Found a reference to “Patch 29396996: MEMORY LEAK IN PGX IN-MEMORY ANALYST” (22-Feb-2019), which will give you PGX 3.1.5. The only mention I could find about this one is a fix for a memory leak in PGX analyst.
Maybe important to mention that a PGX patch in the database doesn’t look like a real patch. The process to apply it is quite simple and doesn’t need a restart or anything.
It replaces all the files and requires you to run a command in PL/SQL to update the packages into the database. Quite easy and with little impact on the database itself.
Don’t try to mix versions
Knowing you could get 3.1.x on your database is nice, but what if you want to bring in the machine learning support?
No, don’t do what is crossing your (my) mind right now: mixing versions.
First very valid reason to not try to mix pieces of different versions is licensing! Of course all these tools and versions have their own licensing. The one embedded in Oracle Database requires you to have the Oracle Spatial and Graph option, which is an extra piece on top of the basic database license (licensing isn’t really my thing, even less when about the database). The OTN version has a license you accept to download the file etc. One has support, the other doesn’t.
More in general things have a version and have incompatibilities added when the version change as the product is still evolving and even the core API change from time to time.
Being a “packaged product” without having access to source code or detailed changes it’s impossible to predict what could work with a piece from a different version.
I don’t have any confidential information… My guess is to see machine learning joining the database PGX release at some point. At the moment it’s maybe the most visible difference.
I could imagine the OTN version will be extended with more machine learning algorithms, but even if it doesn’t there is already a lot to have fun with right now!
Still not downloaded your version? Get yourself an Oracle Database 18c XE (available for free with property graph support and works on Linux or Windows), patch to the latest version of PGX and start having fun.