Not too long ago, Neo4j announced the ability for users to purchase Neo4j Aura through the GCP Marketplace. So now there is a fully managed graph database as a service available in GCP, which is sweet.

PubSub on the other hand is a native GCP messaging service that GCP users use to send data between application components. In this post, we’re going to walk through how to make the two work together nicely; how can we take data from PubSub and get it into Neo4j Aura?

By the end of this post, we’re going to have a pipeline which will let…

This article is the latest in a series on advanced graph modeling; the other articles in the series deal with keys, relationships, super nodes, and categorical variables.

Today we’re going to talk about labels in Neo4j, what they are, how to use them, how they get abused, and how to avoid that. Neo4j’s data model is fundamentally called the “Labeled Property Graph (LPG) Model”, and labels are pretty important.

We will cover:

  1. What is a label? What do they mean?
  2. How Neo4j Treats Labels
  3. How should I use them in my models?

What is a label? What do they mean?

Labels are a kind of naming that can be applied to any node in the graph. They are a name only — and so labels are either present or absent. …

This article is the latest in a series on advanced graph modeling; the other articles in the series deal with keys, relationships, and categorical variables.

Today we’re going to talk about super nodes, what they are, the problems they cause, and what to do about them. This article is a summary and round-up of those issues and how they touch Neo4j specifically.

Image for post
Image for post
Super nodes! But not to the rescue

This article will cover what they are, how they happen, and what we can do about them. Let’s get started.

What’s a super node?

A super node is any node that happens to have a lot of relationships. How many relationships? Well that isn’t really defined, so let’s call it a lot. If a thing has way more relationships than other nodes, relative to what else is in the graph, it’s fair to call it a super node. How many is way too many? Well that is really a subjective thing, since everyone is running a machine with different memory configuration and query patterns. …

Neo4j users find themselves needing to monitor the internal health of the system. Halin was built as a tool to help them do that, and presents a “Tasks” screen for each member in a Neo4j cluster, that shows what’s running at any given time.

Image for post
Image for post
Screenshot of tasks in Halin

Often users want to know “what’s going on with my query” — but the query isn’t the only thing that’s going on under the hood. To understand that, we have to look at two other system objects: Transactions and Connections. …

In two previous articles, we covered aspects of graph data modeling such as categorical variables, and how relationships work. In this article, let’s address how to identify things in your graph with keys.

Image for post
Image for post

What’s a Key?

A graph key is a property or set of properties which help you to identify a node or relationship in a graph.

They are frequently used as a starting point for a graph traversal, or used as a condition to constrain.

What do we want out of a key?

Before we get into different options for keys in Neo4j, let’s list the attributes of what makes for a really great database key.

  • Authority: We have to know who is responsible for the key. Someone has to issue it, and someone has to say which is which. That could be the database itself, you the application developer, or maybe some external authority (for example, your local DMV if you use driver’s license numbers as a key). …

Neo4j recently released the BI Connector, which is a general JDBC driver that can process SQL queries against a Neo4j graph and return meaningful results. This enables users of tools like Tableau, that generate SQL queries, to plug directly into graphs. In this article, we’re going to show how you can query Neo4j directly using SQL rather than cypher.

Test Neo4j Database

For my test data, we’re going to load this cypher snippet into a Neo4j 3.5 series database, which just loads a list of cities and countries worldwide.

If you’re using Neo4j 4.0, you can also use this sample, just remember to change the toInt() in the cypher to toInteger() as that changed in Neo4j 4.0. …

In my last article on graph data modeling, we talked about categorical variables, and how to choose whether to model something as a node, property, or label.

With that out of the way, it’s now time to go deep on relationships. In this article, let’s go deeper on what relationships are, what they mean in a domain, and how to use them.

In this article, we’re going to take an example of a social network site, because it makes an easy to understand graph. People create “friend” relationships among their accounts, people “post” content, and “like” content.

Image for post
Image for post

Relationships are verbs!

The simplest way is to think about relationships is to just write declarative sentences about our domain. Write some true facts, and isolate the “nouns” (in bold) and “verbs” (in italics). …

Property graphs provide a lot of flexibility in data modeling; the most frequent question I see that comes up about graph data modeling is whether to make some piece of data a property, a label, or a node.

Image for post
Image for post

The image above shows all three examples; an employee name is a property, City is a node label, and there are three nodes. But behind the hardest questions about how to model specific things are usually categorical variables, so I thought I’d put together a short description of what this challenge is about and how to think it through.

As we go through this, try to keep in mind that data modeling is part art, part science, and requires experience in a domain. So we’ll talk about general principles and trade-offs, but there’s no substitute for thinking your problem through for yourself. …

Neo4j recently released a distribution of Neo4j Enterprise Causal Clustering on Pivotal Container Service (PKS). This distribution makes it easy to spin up a clustered, highly available graph database on top of Kubernetes quickly and easily.

Image for post
Image for post
Neo4j on Pivotal Container Service (PKS). Get it?

This article is going to describe what this is all about, and how to get started with it! To discuss and connect with other community members doing this, make sure to drop by the Neo4j Community Site’s cloud topic.

Getting Started

You can find Neo4j on Pivotal’s PivNet site here. You’ll want to start by downloading both artifacts, the Neo4j Docker image, and the Neo4j Helm Chart package. …

Google Cloud recently announced Cloud Run at the NEXT ’19 conference, and I wanted to kick the tires. Cloud Run lets you run stateless containers easily, with Google managing infrastructure and scaling for you. You can use them in a way that is similar to Google Cloud Functions, except you can bring any runtime you like, because you’re deploying a Docker container.

I thought I’d give Cloud Run a shot as a serverless backend for a GraphQL application, and it turned out to be pretty easy!

Image for post
Image for post
Cloud Run as a serverless back-end for a GraphQL API

This picture above shows what we’re going to be setting up. Starting with a schema, we want to set up a GraphQL microservice. Users issue queries, which get handled by a serverless backend running on Cloud Run. That backend uses a Neo4j database to store the data. …

About

David Allen

Architect at Neo4j

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store