Hands On With Amazon Neptune

The third day of re:Invent is a big deal for AWS fans. Why? Because it is the day the first keynote takes place with Andy Jassy. I am going to skip the Day Three recap from here at re:Invent. There was a lot of new services announced so I was geeking out on those.

Feel free to check out my Day One and Day Two recaps.

There was one session I managed to squeak into as services were being announced. I managed to get into a hands on lab session for the new Amazon Neptune service.

Introduction to Neptune

Neptune is a new managed graph database provided by AWS. You can store complex cross data set relationships and query them fast.

It is suppose to be a highly available service with all the usual bells and whistles:

  • Read replicas
  • Point in time recovery
  • Backups to S3
  • Encryption at rest
  • VPC integration with IAM permissions

If you are not familiar with graph databases and their use cases. The general idea is to provide a representation of relationships between data. A graph database provides quick query capabilities against those relationships.

You could of course represent these relationships in a relational database. However, querying many relationships across many tables would be complex. This is the core problem graph databases like Neptune are aiming to solve.

Social networking, threat detection, recommendations, or even genome analysis require building up large relationships and querying them. A graph database fits very well for these.

That is the 30,000 foot view of graph databases and a brief intro to Neptune.

Photo by Joel Filipe on Unsplash

The Meat: Hands On with Neptune (kinda)

Amazon Neptune is in what AWS calls Preview. What that means at AWS HQ is a bit of a mystery. For example Elastic File System (EFS) was in Preview mode for a long time. Will that be true for Neptune? Who knows.

What it means right now is that you must be white listed by AWS in order to use Neptune. They said at the hands on lab that it takes about 24 hours for them to respond.

The hands on lab was done in a canned environment that we were granted access to. It consisted of an EC2 instance running a Neptune AMI underneath the hood. We used Metaphactory to get acquainted with it via a GUI.

The interesting bits of the hands on lab were around SPARQL, a SQL like query language for RDF databases. Using SPARQL we crafted queries to pull out information from the Neptune database. The canned data came from Wikidata, GeoNames, and Thomson Reuters.

We walked through a tutorial that explained how we can query Neptune for data relationships or lack thereof. An example:

PREFIX organization: <http://permid.org/ontology/organization/>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
<https://permid.org/1-4295902158> vcard:organization-name ?organizationName.
<https://permid.org/1-4295902158> organization:hasRegisteredPhoneNumber ?phoneNumber.

This is a bit jarring on the eyes, but here is a brief explanation as I understood it.

  1. PREFIX defines a namespace once so you can then use abbreviations later. Notice it is representing a Uri. This Uri is actually an edge between two nodes in the graph.
  2. SELECT * WHERE should be pretty familiar if you are a SQL person.
  3. WHERE { <https://permid.org/1-4295902158> vcard:organization-name ?organizationName. … this looks a bit odd. This is get me the organization-name property associated with the node <https://permid.org/1-4295902158>.

This query will return the organization name and phone number for that given node.

The rest of the hands on lab was centered around expanding on that query language to do more complex things. We explored querying across multiple data sets in the graph via edges that link the two. Visualizing SPARQL results was an interesting topic to see the relationships you are returning. Loading data into Neptune via INSERT statements, not unlike a traditional relational database.

There wasn’t a lot of material on the underlying pieces of Neptune and no definitive release date was given. It was said that a service cannot be announced by AWS unless it is going to be generally available within 90 days. Whether or not that is true will remain a mystery.


The hands on lab was lacking the technical deep dive I wanted. I was hoping to be given more of a peek on what Neptune is and what it is not underneath the hood. That said, I don’t think AWS can answer that yet. They operate on feedback from their customers and they will transform Neptune to match those needs.

A managed graph database on AWS is a big deal and something folks have wanted for a while. Will it be successful? That remains to be seen. But it is clear they have a strong focus here and idea is sound.

Hungry To Learn More?

If you enjoyed this post and are hungry to start learning about Amazon Web Service, I have started putting together a small book! You can learn about AWS services and techniques through the practical example of hosting, delivering, and securing static websites using Amazon Web Services. Stay updated on the progress of the book here.

If you enjoyed this, don’t forget to offer claps to show your support!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.