Pages

Friday, 29 January 2016

This week I was able to connect with two lovely gentlemen that have been doing some truly inspiring work with Neo4j on a project in Australia. Stuart and Matt have been talking and writing about the project for a while now, and have been very forthcoming about sharing their lessons learnt with the Neo4j community. That's always a great thing to watch, so I literally could not wait to chatting with them - and so we did. Here's the recording:

Here's the transcript of our conversation:

RVB: 00:02 Hello everyone, my name is Rik. Rik Van Bruggen from Neo Technology and here I am recording the longest distance podcast recording ever in the history of this podcast, and that's all the way in Australia, Stuart and Matt. Thank you guys for joining us.

MB: 00:47 I'm Matt Byrne, also contracting out of Sensis in Melbourne. Been on the same project as Stu.

RVB: 00:54 Absolutely, very cool. And you guys have been using Neo for a long time? How long have you been working with Neo4j by now?

SB: 01:01 Well the project kicked off about two years ago but we've been actively using Neo for the last 18 months after a selection process at the very beginning of the project to look at various technologies and Neo was the technology that was chosen.

RVB: 01:16 And I suspect that my dear friend Jim Webber was part of that process, wasn't he?

SB: 01:23 Yes, Jim was part of that process in the very early stages. He was the one that kind of seeded the idea in my mind in particular when he came to Sensis quite a few years ago actually and talked about the benefits of Neo Technology as an alternative to other more traditional database technologies. And I was very interested in what he had to say. Then when we started looking at this project, Neo was a very good fit for the style of application that we were building.

RVB: 01:49 Well that gives me a perfect segue into the first question that I typically ask on this podcast, which is why? Why did you guys get into this? And what made it such a good fit?

SB: 02:03 It's a good fit for a couple of different reasons. The project that we were working on is around content management within the organisation. We're a directory's company so we have a lot of content that's supplied by the various customers. But in many ways it's kind of a configuration and management system that the company sells products and those products are backed by the content. We've gone through a number of iterations of trying to work out a better and different way of managing the content within the backend system and have looked at various things from relational database systems, which there was some early work done on that but we ran into some modelling and performance issues with that. And then we also looked at some hierarchical data systems. But when we got down to it and looked at the data in more detail, it was more of a network model. We were trying to reduce duplication within the data. We were seeing that there was various pieces of data that we used in multiple different ways, the same piece of data used in multiple different contexts, and it's just that the graph made everything so much easier to model in the first instance, and also for the business to understand how we were actually using the data. And the visualisation tools that come with Neo as a standard feature make it really easy to get your message across to, not only the end users but also to the developers that are building the system itself. Anything you'd like to add to that?

MB: 03:29 No, you were part of that selection [?] [chuckles].

RVB: 03:32 [chuckles] Well it's so cool right, because I don't know if you know these guys, but the way Neo got founded in late 90s, early 2000s was for a content management system as well. So it's history repeating itself so to speak, and exactly what you were saying right? It's a modelling fit, it's a performance fit. All of those types of things seem to come back quite regularly, which is super cool. So tell us a little bit more about these performance advantages that you guys wrote about in the blog post. There were some significant improvements there I gather, no?

MB: 04:14 Yeah. So basically we're retrieving a sub-graph of information at a time. So we've got all this dynamically specified amount of data and for us to be able to model that in relational would just kill us. So in the blog post the motivation there was to really show how you could tune Neo and just to show all the tools available to you. So we put some stuff in there as an example of what we've done, but it was really to help people get started and have a bit more competence in it. I think at the time we only found Michael Hunger's article while we were writing the article, our one, because it was just a Google Doc I think. So he published his out and that helped us. It really helped get things going for us.

RVB: 05:06 Your article was really good because it's also illustrating a common problem with time versioning and all of that stuff. You were inspired by Ian Robinson right? One of Jim's mates.

MB: 05:20 Yeah. I came onto the project a bit after-- Stu did the hard work, him and another guy to select the technology, and obviously a bold move to do it with such a core system. And then when we came on, the time-based thing of Ian Robson was great, it fit us. But it also challenges you. You have to bake that in at a low level and it can affect performance. So we were tackling that.

RVB: 05:53 I think everyone should read your blog post. There's some very valuable experiences and lessons to be learned from that I think. Thanks for writing it up. It's really helping our community I think. So guys, where is this going? Where is your project going? And where do you think the technology's going to be going in the next couple of years? Any perspectives on that?

SB: 06:15 I think from the project's perspective, I think it's been particularly successful. We've met the business requirements and also I guess just the user requirements of providing a much richer experience for the users and a much easier and faster turn-around from concept to delivery of the sort of products that we're looking at delivering for Census as an organisation. But it would be good to have other companies and other individuals understand some more about the graph technology. And that's one of the reasons why Matt and I are keen to talk about our experience with the product, and I think that there is a good fit for this kind of technology in a lot of different areas that people may not have thought about. Even in these times of the NoSQL database, I think there's still a lot of people are very familiar SQL style databases and maybe don't think beyond that. So it would be good for people to have this as another option within their tool kit for providing different kinds of solutions to the sorts of problems that they're dealing with.

MB: 07:24 Just to add to that, we've put the article out and a guy Mark in Melbourne's organised Melbourne meet-ups. We're trying to put out Sensis as a strong example of how it can work. But it'd be nice to see other examples in Australia come out, because it gives companies more confidence in Australia to adopt these technologies. And we're just contractors so we'd like to help the next company if that came up. But in terms of Neo, to have confidence in the technology we also wanted to highlight any drawbacks that there are, just so that you know what you're in for. But Cypher is a fantastic query language, it's very easy to use. But it's young compared to SQL. So that's still evolving. A lot more sugar in that, a lot more power coming, and there's always things that we hear. So I'm always keen to see the enhancements to that coming in new versions. And more indexing power. It'd be nice to have them on relationship because there are examples where we do want to query things that way. So some of those things. But all the work that's come in, it's just fantastic to see it improve so much between releases.

SB: 08:49 And the-- I was just going to say, the feedback that we get from Neo for the sorts of requests that we make and just the ways that we using the technology, the feedback from the Neo guys has been terrific all the way through this process as well.

RVB: 09:07 That's super great to hear. Just to address what you were just saying there Matt, there's so many things that we want to do in the product, it is a very long list of things. The cool thing is with Neo, we've actually now hired a very significant engineering team. We had an all notes call earlier today with all the Neo employees. And our engineering team is like over 40 people now, which is super super great, because that allows us to accelerate with those new feature developments as well, right? There's wonderful stuff coming. I can tell you that [chuckles].

MB: 09:46 And the good thing about dealing with the company Neo compared to our traditional database vendors or any other - what people love to call - enterprises is that we do get this great feedback and we do feel like our feedback's taken account. We realise there's only so much that can be done in releases, so we definitely don't feel hard done by. It's great.

RVB: 10:11 Super. Cool. Well guys, thank you so much for coming on the podcast. I'm going to wrap it up here because I want to keep these episodes digestable and short for people's commutes. So thank you again, I really appreciate it and I look forward to meeting you guys in person one day.