Skip to content
BHSDuncan edited this page Aug 13, 2014 · 2 revisions

Pacer is a JRuby library built for efficient and fast querying of arbitrarily large and complex graph databases.

It has evolved beyond those original goals to become a powerful general-purpose data stream processing library in addition, though graph databases have remained the focus.

Pacer makes no assumptions about your environment and has no external dependencies.

Pacer also does not assume a global data store. That allows you to choose how your application will manage the graph, and even to run multiple graphs of the same or different types simultaneously with no difficulty. Of course if you decide to put your graph in a global variable, that option is still open to you, but unlike almost every other database library out there, it's not forced on you!

Graph implementations

Pacer is designed to be graph database-agnostic. Out of the box it comes with only the simple in-memory TinkerGraph, an excellent graph for testing and for temporary in-memory data. Start a tinkergraph with:

tinkergraph = Pacer.tg

Neo4j

Neo4j is the primary database used by XN Logic, the team behind Pacer. It's an excellent, reliable and performant graph database that works well for a variety of use cases, and scales to easily support the largest data sets our customers have hit us with. Once the pacer-neo4j gem is installed, you can start a Neo graph with:

require 'pacer-neo4j'
neograph = Pacer.neo4j '/path/to/graph_dir'

As of August 2014, Pacer supports Neo4j v1.9 and v2.0. v2.1 support is in development.

Titan

Pacer has Titan support via the pacer-titan community contributed gem. Titan is a distributed graph database focussed on supporting extremely large graphs. Once you've configured your project as required by the pacer-titan library, you can start a Titan graph like this:

require 'pacer-titan'
titangraph = Pacer.titan 'path/to/titan_config.properties'

Other graphs

Pacer can support OrientDB and Sparksee (formerly known as Dex) graph databases in addition to RDF graphs and others that I may not be aware of. The only requirement is that the graph have a Blueprints adapter. The pacer-neo4j and pacer-titan gems add graph-specific functionality on top of Pacer's built-in capabilities, but any blueprints compatibile graph can easily be used with Pacer with minimal effort.

Plugins

Pacer is built with plugins in mind. It is easy to extend Pacer's functionality in many different ways. For instance, the pacer-xml gem provides streaming XML parsing via Pacer routes. The pacer-parallel gem allows selected portions of routes to be run in parallel. The pacer-bloomfilter gem provides proof-of-concept bloom filtering to Pacer routes.

Getting Help

XN Logic makes a graph database application framework built with Pacer technology. If you think a graph database is appropriate for your problem space, the team at XN can provide you the help you need. The XN framework has extremely powerful data modelling capabilities, tight security and allows you to deliver an incredible domain-specific API to your data with ease.

Pacer also has a mailing list where you can go for community support to get you past whatever problems you encounter.

Finally, there are great meetup groups like GraphTO in Toronto which meets periodically, and conferences like GraphConnect, held in San Francisco and other American cities.

Presentations and other Resources