Category Archives: Cypher

Offers with Neo4j

If you have started or are thinking about starting a Graph project, you ought to get in touch with me. I’ve been involved in hundreds of graph database backed projects and chances are I can point you in the right direction. It doesn’t cost anything to get on a goto meeting for an hour and talk about it. Contact me at max@neo4j.com to schedule it. If you are very serious and have a little budget allocated then I recommend you sign up for one of our bootcamps. You’ll be amazed at what we can accomplish together in a very short time. I’ll even make you a deal, if you sign up for a bootcamp and end up buying a commercial license, we’ll give you a week of professional services absolutely free.
Continue reading

Tagged , , , , , , , ,

Scheduling Meetings with Neo4j

One of the symptoms of any fast growing company is the lack of available meeting rooms. The average office worker gets immense satisfaction to their otherwise mundane workday when they get to kick someone else out of the meeting room they booked. Of course that joy can be cut short (along with their career) once realizing some unnoticed VIP was unceremoniously kicked out. It’s not a super exciting use case, but today I’m going to show you how to use Neo4j to perform some scheduling gymnastics.
Continue reading

Tagged , , , , , , , , ,

Neo4j Geospatial Queries

When I was growing up, the Neo Geo was the high end gaming system around. It was however prohibitively expensive for most people… and definitely out of my price range. I grew up in a mobile home park in Union City, CA. Near the old drive in theater now long gone. It was also next to an industrial park in Hayward where a food truck would make the best burritos $3 could buy. A search for the best burritos in Union City would have missed this food truck gem. Geographic boundaries can be a problem when searching for things by specific places. To get around this problem, we tend to use latitude and longitude and then perform a radius or bounding box search. Today I want to present to you a hybrid approach using Neo4j.

Continue reading

Tagged , , , , , , , ,

Mutual Fund Benchmarks with Neo4j

Just the other day I had a conversation with an Investment Risk Manager about one of the data problems his team was working on and he was wondering if Neo4j could help. Imagine you have about 20,000 mutual funds and etfs and you want to track how they measure up against a benchmark like say the returns of the S&P 500. I’m sorry did I say one? I meant all of them, let’s say 2,000 different benchmarks… and you want to track it every day, for a rolling 5 years period. So that’s 20,000 securities * 2000 benchmarks * 5 years * 252 trading days a year (on average)… or 50 billion data points. That’s a BIG join table if we were using a relational database. How can we efficiently model this in Neo4j?
Continue reading

Tagged , , , , , , , ,

Bill of Materials in Neo4j

Where is da BOM? The above question asks, and the obvious answer is right in the middle of your organization. Nestled between Manufacturing, Design, Sales and Supply Chain. But I have a better answer. Your Bill of Materials should be in Neo4j. Today, I’ll show you why.
Continue reading

Tagged , , , , , , , , , ,

Counting Nodes with Multiple Labels

We have over 6000 users in our #neo4j-users slack channel and get all kinds of requests. About a month ago Thomas Shields asked:

Should counting the set of things with 2 labels really take so long? I’ve got 48M nodes with LabelA and LabelB and the query `MATCH (n:LabelA:LabelB) RETURN COUNT(n)` is taking 80-90 seconds

Let’s see what’s going on by creating a small version of his graph. We will create 1M nodes of LabelA, then 1M nodes with both LabelA and LabelB, and then 1M nodes with just Label B:
Continue reading

Tagged , , , , , ,

Finding Triplets with Neo4j

A user had an interesting Neo4j question on Stack Overflow the other day:

I have two types of nodes in my graph. One type is Testplan and the other is Tag. Testplans are tagged to Tags. I want most common pairs of Tags that share the same Testplans with a Tag having a specific name. I have been able to achieve the most common Tags sharing the same Testplan with one Tag, but getting confused when trying to do it for pairs of Tags.

Continue reading

Tagged , , , , , , , ,

Building a Twitter Clone with Neo4j – Part One

Would you believe there is no shortage of Twitter Clone example applications…maybe because they are easy to replicate (ba dum tss, I’ll be here all week.) The earliest one I remember was written by Salvatore Sanfilippo creator of Redis.
It’s a pretty good read, where he explains the basics of Redis (a Key Value store on steroids) and how to model a social network in it. One of the interesting bits to me is how the status updates (tweets) are handled.
Continue reading

Tagged , , , , , , , , ,

Neo4j is faster than MySQL in performing recursive query

5mysql

A user on StackOverflow was wondering about the performance between Neo4j and MySQL for performing a recursive query. They started with Neo4j performing the query in 240 seconds. Then an optimized cypher query got them down to 40 seconds. Then I got them down to…
Continue reading

Tagged , , , , , , , , , , ,

Writing a Cypher Stored Procedure

luke-cage-jidenna

I’ve been so busy these last 6 months I just finally got around to watching Luke Cage on Netflix. The season 1 episode 5 intro is Jidenna performing “Long live the Chief” and it made me pause the series while I figured out who that was. I’m mostly a hard rock and heavy metal guy, but I do appreciate great pieces of lyrical work and this song made me take notice. Coincidently on the Neo4j Users Slack (get an invite) @sleo asked…
Continue reading

Tagged , , , , , , , , , ,