Oracle Labs PGX Downloads

Thank you for downloading this release of the Oracle Labs Parallel Graph Analytics (PGX) toolkit. This toolkit includes tools useful for Parallel in-memory Graph Analysis.
You must accept the OTN License Agreement to download this software.
Accept License Agreement | Decline License Agreement

Download Oracle Labs PGX release 1.1.0
Download green-marl-compiler-32bit-2015.06.30.jar

Getting started instructions are available here.

Supported platforms

You will need a Linux x86 system (kernel >= 2.6) with GCC  (>= 4.4.7) installed.
Examples of such systems include (but are not limited to):

  • Oracle Linux Server (x86) Release 6.5
  • Ubuntu (x86) LTS
  • Ubuntu (x86) 14.04.1 LTS
  • Mint (x86) 17.1
  • ArchLinux (x86) 2011.08.19

About this OTN Release

PGX is a research artifact from Oracle Labs, whereas the current OTN release is a technology preview version of it. Henceforth, this release is intended for information purpose only, and may not be incorporated into any contract. This is not a commitment to deliver any material, code, or functionality to Oracle products, and thus should not be relied upon in making any purchase decisions. The development, release and timing of any features or functionality described for products of Oracle remains at the sole discretion of Oracle.

What's new in 1.1.0

  • Improved Java API
    • Methods in Core interface are now abstracted into object-oriented classes. Core interface is now internal
    • Analyst no longer session-bound
    • You can now use the same Analyst to analyze multiple different graphs (or multiple snapshots of the same graph).
    • Added blocking version of every API method. Asynchronous methods returning a future are now suffixed with Async
    • Updated all tutorials to reflect new API
  • New shell based on Groovy 1.8 now included in download package.
    • No more separate installation of Groovy needed.
    • Use blocking Java API directly in shell. No more inconsistency between Java API and shell commands
    • Support for basic UNIX commands (lsmvpwdcp and cat)
    • Built-in javadoc command which prints the Javadocs of shell variables, class names and methods directly in the shell
  • Improved filter expressions: you can now specify both vertex and edge filters. 
  • Added more built-in algorithms: degree centrality, degree distribution, filtered Dijkstra, bidirectional Dijkstra, Bellman Ford, hop distance, weakly and strongly connected components
  • Support to point at multiple snapshots of the same graph within the same session
  • Added support for new database format: two-tables format
  • Added support for new text-based file format: two-files format
  • Released an experimental preview version of PGX.DIST, a new distributed back-end for PGX which leverages more than one machine. See the experimental/dist/doc directory for documentation
  • fixed bug: Java client doing wrong request when trying to delete a transient property
  • fixed bug: crash on reverse edge creation and sorting for huge graphs with single thread

What's new in 1.0.0

  • Compiler optimization: improved performance by merging properties
  • Compiler robustness: better dead-code and return statement checks
  • Reduced memory consumption of date properties
  • Reduced download package size
  • Improved Javadocs

What's new in 0.9.1

  • Improved documentation
  • Fixed bug which led to array index out of bounds error when undirecting a certain type of graph
  • Fixed bug which wrongfully rejected list of given edge properties when requesting a bipartite subgraph in the remote case

What's new in 0.9.0

  • 64bit support: ability to load more than 2^32 edges
  • Added remote support
    • Deploy PGX as a web application
    • Core interface exposed via REST
    • Connect to running web application via HTTP, client PGX shell or client Java application
  • Added Hadoop support
    • Load/Store graph data from/to HDFS
    • Run PGX as YARN application (single-node only)
  • New built-in algorithm: Fattest path
  • Allow modification of the PGX runtime configuration values
  • Added support for PGX-managed scalars
  • New APIs to modify PGX-managed maps
  • Added support to load graph data from Oracle NoSQL
  • Added support to load graph data from Apache HBase
  • Create subgraphs from filter expressions
  • Updated Groovy dependency to 2.4.0 
  • Support for Green-Marl specification 0.6.2
    • Placeholder in group assignments
    • Read-only input arguments
    • Removed @-syntax for reductions
    • Date/time type and edge built-ins
  • Simplified sparsification APIs
  • Added more Green-Marl compiler optimizations
  • Decreased the size of the Green-Marl compiler binary
  • Added Green-Marl compiler support for 32bit Linux platforms
  • Improved binary format loader: use memory mapping for better performance
  • Refactored text-based graph loaders
  • Load file-based graph data from classpath
  • Improved graph configuration handling
    • Added support for inheritance of configuration schemas
    • Added schema-specific graph factories and builders
    • Added support to load configuration files from classpath
    • Added support for configuration files in the Java properties format
  • Analysis timeout is now called task timeout and also applies to loading tasks
  • Added constants "Properties.ALL" and "Properties.NONE" to fix inconsistencies between "null" and empty lists

Known Issues

  • When you load a graph, then change the graph and try to load the same graph again, the PGX engine will assume it is the same graph and give you a cached result. Use Core.refreshGraphWithProperties() instead to reload the graph.