To make it "easier" on them, I thought I would get them to talk to me together - in a small group. A bit of an experiment, but I think it worked out. In today's episode we have Pieter Cailliau (of GraphConnect fame with his talk about how Tomtom uses Neo4j) and Luke Gannon have only been with Neo for a few months - but clearly already have a lot of things to say about it. Let's listen:
Here's the transcript of our conversation:
RVB: Hello everyone. My name is Rik Van Bruggen from Neo Technology, and here we are again recording a Neo4j Graph Database podcast. It's a bit of a special podcast today because it's a bit of an experiment, because I've got two people on the phone today, Luke Guerin and Pieter Cailliau. Both of them are consultants at Neo. I'd like them to introduce themselves. Luke, why don't you start?
LG: Hi, Rik. Yes. I joined Neo back in May. I came from a big SI. I've been working in the graph database space for a month now, and it's been good fun working with Neo.
RVB: Super, wow. So you've been using it for how long now, Luke?
LG: I've been playing around with Neo for just over a year, year and a half. I came across it when I was back in the dark days of using MongoDB. I was looking at other solutions, and came across Neo. It's safe to say that I've never looked back.
RVB: Cool. The other person on this Skype call is Pieter Cailliau. I'm sure I'm mispronouncing his name again. Some of you may know Pieter, because he did a presentation at GraphConnect San Francisco last October. Hi, Pieter.
PC: Hi, Rik. Hi, Luke. Yeah, I joined Neo two months ago in April. I used to work for TomTom, where we have to use Neo4j to do math quality. So I've been using Neo4j now for two, three years, let's say. And I'm happy I joined Neo4j.
RVB: Super cool, yeah. I'll put the links to the GraphConnect talk on the blog post that goes with this podcast, so people can take a look at it. They can try to pronounce TomTom a little bit better [laughter]. Very good. So guys, let me just ask you. How did you guys get into graphs? Luke, you're already talking about it a little bit. How did you get into it, and why did you get into it? Could you explain that a little bit more? Let's start with you again, Luke, if that's okay?
LG: Yeah, that's fine. I started using graphs to model connected data for a <???> client at the time. They had lots of data that needed to be connected, and to traverse it and be quick, and to be able to apply quite complex queries over billions of nodes effectively. That's how I got to work with Neo, learning more about the products, seeing the wonders that Cypher can do. Don't really know what else to say.
RVB: So, you were trying to solve a particular problem, is what I'm hearing. It was a particular problem that you needed to solve, and then you started looking for it, and found Neo. Is that--?
LG: Yeah. The problem actually arised when, trying to load relational database and trying to keep it like a graph store. It doesn't work. We know this. If you're constantly doing cache sets across massive tables of billions of entries, you're going to hit some limitations instantly.
RVB: Yeah. And what about you, Pieter? How did you first learn about Neo?
PC: A routable network or actually map is a perfect fit for a graph. So you have where you model the nodes as intersections and the roads in between them, as the relationships effectively. We had a problem that we needed to do real time analysis, or impact analysis actually on our database. So map editor is continuously editing the map, and he wants to have some false feedback if the map is still connected. It's a very complex query to execute on a sequel database. We had the idea to transform our data into a graph, and that was very effective to solve the problem in a graph way. But even better was that we could persist it in a graph database, so we could keep it in acid way we could persist the data and go back in time, how our graph looked in history, and execute that same question over again.
RVB: So that means no more conversions from some kind of tabular formatting to graph, and back, and all that kind of stuff. Is that--?
PC: TomTom keeps them quite... TomTom actually keeps them in sync, so there are different representations of data, but it's a perfect fit to do the complex queries they need to do.
RVB: I understand. Cool. I wanted to ask you guys something, because you guys have been with Neo now for about two or three months. You know, that's actually something that I really want to dig into a little bit. What's it like to work in this industry? You're both young guys, and you're coming from different backgrounds. What's your experience been like working for Neo, working in this domain for the past couple of months? I'll go back to Pieter, for now. Changing the order [chuckles].
PC: I thought I would get some time to think about these questions [chuckles].
RVB: No, not this time, no.
PC: What I really like about it is that, we see so many cool companies out there. The really hot and cool ones that would like to use our product for all different kinds of use cases. Some of them are banks, others are journals, like papers, that want to make recommendations to their readers - all kind of different use cases. It's very intriguing me, it really gets my attention over and over again.
RVB: Yeah. It's very diverse, right [crosstalk]--?
PC: It's very diverse and--
PC: And all hot topics, right? They're all cool stuff to work off.
LG: I agree with Pieter. Pieter's got the nail on the head there. And when you see some of the people that come into us, and wanting to find out more about Neo-- that they could be anywhere within their life cycle from inception, an idea, to trying to solve a problem, and learning more about those demands is actually what keeps us quite interested. And how to apply it within a graph is even more spectacular.
RVB: Super cool. Yeah, so I'll ask one more question, actually two questions in one question. What's your favorite, or your least favorite feature of Neo4j right now? What do you like best, and what do you think needs most work right now? Pieter, tell me. Surprise questions, I like those.
LG: Hey, Pieter. You know, what you do want to get sorted soon, the indexes, that problem.
PC: Yeah, indeed. That's just [chuckles] an issue we had. So we currently have schema indexes. And if you make a schema index on a property which is an array, you can't do an individual item lookup. For example, if you have middle names Rick, Chris, and Pieter as an array property, and you would like to find all persons that have the middle name Rick - the index doesn't leverage the separate items. It only uses the exact array. So, that's a feature I would like to see soon, because I think it's very powerful. Next to of course to much more string-ish like, or regular expression like queries, well, indexes.
RVB: It's amazing how you delve into something really nity-bitty-gritty in detail like that [laughter].
PC: It was a topic we were discussing-- actually, right before this call.
LG: Yeah. We have to put a disclaimer out. You can do it using the legacy indexes.
PC: Yes, you can actually do it.
RVB: But I think everyone agrees that the schema indexes probably needs some more work in Neo4j. I think that's a good one. And what do you like best Pieter?
PC: What I like the best?
RVB: So many things to choose from.
PC: I've actually got it, and it's not nitty-gritty detail. What I like about Neo4j is the way how it brings your code to your data. In typical applications, for example, you have a SQL server and you have an application running on separate machine, which is actually sending data of the wire continuously. By the fact that we have a Cypher language which is very declarative and very smart, but also other APIs we have, you can actually execute your questions close to your data - actually, where the data is. For example in Cypher, we have a shorter spot as an example-- where it can traverse data directly where the data is. And that's, I think, one of the most wonderful features we have in Neo4j.
RVB: Super cool. I think it's very much related to the modeling power of the graph, right? You don't have all these transformations that are going on anymore. It's just you model reality as it is almost. Luke, what about you? Pick a most wonderful, and a least wonderful feature?
LG: What I love is the traceability of Cypher, effectively. When you're building the query-- I don't know if you guys remember from back in the SQL days of trying to work out, where one calculation's going wrong, or where you're trying to do your joints and things like that. Just looking how you can model with Cypher, that query, it makes it so much easier to work out where you're going wrong. I'm sure you know this one, Rik, from seeing all your posts in the Cypher chatroom...
RVB: Well, I like to get my hands dirty, and so sometimes they're covered with mud [chuckles].
LG: My least favorite thing, I want to see some more visualizations. That's what I want to see.
RVB: More interactive visual querying, stuff like that. Is that--?
LG: Yeah. We've got Popoto.js, which is one of the open source projects, which people can use with Neo. That allows you to visually query the database, and it builds your cycle for you. But I'd like to see that brought into the main stack for instance, which would be awesome. If you just could literally drag the different node types onto screen and say, "Build me my Cypher, query my data," it will make people go into production quicker, I think.
RVB: We've had a bunch of other people on this podcast series from Linkurio.us, from Prologram. I've been talking about visualization. It's such an interesting topic, and there's so much work to do there. It's a good one. Absolutely. Cool, guys. I think we'll wrap up this recording for now. Thank you for coming online. I really appreciate it. It was great having you as guests, and I'm sure there'll be lots of other opportunities to see you guys at work, on stage, at one of the meetups, GraphConnect, whenever, right? Thanks a lot. I appreciate it.
PC: Oh, thank you, Rik.
RVB: Cheers, guys. Talk to you later.
PC & LG: Bye.
Subscribing to the podcast is easy: just add the rss feed or add us in iTunes! Hope you'll enjoy it!
All the best