Getting Started with Graph Databases with Jennifer Reif from Neo4j
Cloud CommuteJuly 12, 2024x
20
00:26:4324.47 MB

Getting Started with Graph Databases with Jennifer Reif from Neo4j

In this week's episode of simplyblock's Cloud Commute podcast, host Chris Engelbert sits down with Jennifer Reif, a developer advocate at Neo4j. Jennifer dives into the fascinating world of graph databases, explaining how Neo4j stores data as entities and relationships, making it perfect for complex queries involving networks, social structures, supply chains, and more.

In this episode of Cloud Commute, Chris and Jennifer discuss:

  • Use cases of Neo4j, including social networks, permission systems, and complex data relationships
  • Getting started with Neo4j: Cypher query language, Neo4j Aura, and integration with Kubernetes
  • The future of AI and databases: integrating LLMs with databases for improved workflows

Interested to learn more about the cloud infrastructure stack like storage, security, and Kubernetes? Head to our website (www.simplyblock.io/cloud-commute-podcast) for more episodes, and follow us on LinkedIn (www.linkedin.com/company/simplyblock-io). You can also check out the detailed show notes on Youtube (www.youtube.com/watch?v=CdrWQp4Lw5A).

You can find Jennifer Reif on X @JMHReif and Linkedin: /jmhreif.

About simplyblock:

Simplyblock is an intelligent database storage orchestrator for IO-intensive workloads in Kubernetes, including databases and analytics solutions. It uses smart NVMe caching to speed up read I/O latency and queries. A single system connects local NVMe disks, GP3 volumes, and S3 making it easier to handle storage capacity and performance. With the benefits of thin provisioning, storage tiering, and volume pooling, your database workloads get better performance at lower cost without changes to existing AWS infrastructure.

👉 Get started with simplyblock: https://www.simplyblock.io/buy-now

🏪 simplyblock AWS Marketplace: https://aws.amazon.com/marketplace/seller-profile?id=seller-fzdtuccq3edzm


01:00:00
And I always like to give the

01:00:01
example that it took me

01:00:02
learning Cypher in order

01:00:04
to understand what the SQL having

01:00:08
and group by

01:00:09
clause was trying to do.

01:00:15
You're listening to simplyblock's Cloud Commute Podcast,

01:00:17
your weekly 20 minute

01:00:18
podcast about cloud technologies,

01:00:20
Kubernetes, security,

01:00:22
sustainability, and more.

01:00:24
Hello.

01:00:24
Well, welcome back everyone.

01:00:25
Welcome back to the next episode

01:00:26
of simplyblock's

01:00:27
Cloud Commute Podcast.

01:00:29
This week I have another

01:00:31
incredible guest.

01:00:32
I know I say that

01:00:33
every single time.

01:00:34
I, it's, it's just true.

01:00:36
They're all incredible.

01:00:37
And you know that, right?

01:00:38
So, hello Jennifer.

01:00:41
Um, maybe just give us a

01:00:44
quick introduction real quick.

01:00:46
Sure.

01:00:47
My name is Jennifer Reif.

01:00:48
I'm a developer advocate at

01:00:51
Neo4j, focusing on Java

01:00:54
technologies and its ecosystem.

01:00:56
So I cover, cover the gamut

01:00:58
on, yes, anything,

01:01:00
almost anything Java.

01:01:01
I've worked at Neo4j

01:01:04
for the last, well, since 2018,

01:01:07
let me put it that way.

01:01:09
It's been a little bit.

01:01:11
Um, and I do some, show up at

01:01:14
some conferences as well as write

01:01:16
blog posts, do videos, a little

01:01:19
bit of Neo4j's podcast,

01:01:22
graphstuff.fm and code demo

01:01:24
projects and presentations in the

01:01:26
whole, the whole nine yards.

01:01:28
So I am happy to be here to talk

01:01:30
to Christoph and chat a

01:01:32
little bit about technology and

01:01:33
Neo4j and so on.

01:01:35
So.

01:01:36
Awesome.

01:01:36
I think you're actually the first

01:01:37
person who ever said

01:01:38
Christoph on, on the stream.

01:01:40
So now people know how I'm really,

01:01:42
I'm really called.

01:01:45
Chris is fine.

01:01:46
It's, it's so much easier for

01:01:47
the rest of the world, but you

01:01:49
said you're working for Neo4j.

01:01:50
Obviously I know what Neo4j is,

01:01:52
but maybe just give the others a

01:01:54
quick introduction.

01:01:55
What is cool about it?

01:01:56
What is it?

01:01:56
And, you know the spiel.

01:01:58
Sure.

01:02:00
Neo4j is a graph database.

01:02:03
Um, and I guess to start off,

01:02:07
just like any other

01:02:08
database, it stores data.

01:02:10
A lot of people will say, "oh, is

01:02:11
it a layer on top of another

01:02:14
type of database?"

01:02:15
No, it actually is

01:02:16
a storage system.

01:02:17
You store the data rights to disk

01:02:19
and the whole, the

01:02:20
whole gamut there.

01:02:21
Um, but it stores data differently

01:02:24
than, rows, tables,

01:02:28
documents, so on.

01:02:29
It stores data as entities and

01:02:32
then relationships between them.

01:02:34
So you actually write the

01:02:36
relationships to the database.

01:02:37
That makes it really easy to read

01:02:40
those relationships back.

01:02:41
So anything where you have a lot

01:02:43
of complex

01:02:44
relationships or a lot of

01:02:46
relationships and a lot of hops

01:02:47
through different types

01:02:48
of data, a graph database

01:02:50
is going to be optimized and more

01:02:52
performant for

01:02:52
those types of queries.

01:02:54
Right.

01:02:55
Um, so lots of things like

01:02:56
networks or social network

01:02:59
structures, supply

01:03:00
chains, where you have a lot of

01:03:02
depth and hopping

01:03:03
around, even just

01:03:07
fraud detection and

01:03:10
there's a variety of

01:03:11
different use cases, software

01:03:13
dependencies,

01:03:15
lots of other things.

01:03:16
So I've seen it used for kind of

01:03:18
hit or miss just kind of random

01:03:20
things that it's

01:03:21
like, "oh, I would have never

01:03:22
thought to use a graph for that,"

01:03:23
but it works really,

01:03:24
really well, for, for any type

01:03:26
of case where you have

01:03:27
a lot of relationships

01:03:28
and a lot of

01:03:29
connections in your data.

01:03:32
So that's interesting.

01:03:33
I think the weirdest thing that

01:03:34
I've built, and

01:03:36
at the same time,

01:03:38
the most efficient thing was

01:03:40
actually a permission system,

01:03:42
with inheritance,

01:03:43
and roles and permissions and

01:03:44
inheritance between the

01:03:45
different roles, because

01:03:47
you're basically can make a single

01:03:49
like Cypher request

01:03:51
and say, "give me every

01:03:52
permission that is somehow

01:03:56
in the hierarchy or

01:04:00
in the inheritance graph, and

01:04:02
remove everything that

01:04:03
might be overridden"

01:04:05
as, what is the term,

01:04:09
uh, is it out,

01:04:10
um, uh, denied.

01:04:12
That's it.

01:04:13
Yeah.

01:04:13
Blocked or denied.

01:04:14
I like that.

01:04:16
So that was, that was really nice.

01:04:18
And it was so much easier than,

01:04:20
than doing like a

01:04:21
graph, or like a table

01:04:24
tree kind of recursive SQL lookup

01:04:26
on a relational database.

01:04:29
Yeah.

01:04:29
Um, yeah, I think I still

01:04:31
have the code somewhere.

01:04:33
That would be really cool.

01:04:34
You should publish

01:04:35
that somewhere or like, you know,

01:04:36
highlight somewhere.

01:04:37
I can try to find it and,

01:04:39
um, well, let's

01:04:41
see if I, maybe I

01:04:41
hand it to you.

01:04:44
Yeah.

01:04:44
I've seen some geology or

01:04:46
like family tree

01:04:47
type of scenarios.

01:04:48
In just a couple of lines,

01:04:50
it was like, I think, uh,

01:04:52
three types

01:04:54
and four

01:04:55
relationships or something, and

01:04:56
you're done.

01:04:58
I was brilliant.

01:05:00
Yeah.

01:05:01
Anyway.

01:05:02
So you said it's a graph

01:05:05
database and you gave

01:05:06
a couple of

01:05:08
ideas what a graph database

01:05:10
could be used for.

01:05:11
And well, I hinted on why

01:05:15
graph databases might be easier.

01:05:18
Right.

01:05:18
So especially when you do

01:05:20
like topology or

01:05:22
relate any

01:05:25
kind of relation lookups, you

01:05:27
said social

01:05:28
networks, parent or

01:05:32
family trees, anything like that,

01:05:34
where you have relations,

01:05:36
especially like when

01:05:37
you look at European

01:05:39
history, like

01:05:40
between the different

01:05:41
Kings families, and there's a lot

01:05:43
of connections and

01:05:44
relations between

01:05:45
almost all families.

01:05:47
Yeah.

01:05:47
So if you're trying to

01:05:49
understand or to look into

01:05:51
those kinds of things,

01:05:52
graphs are super

01:05:55
helpful and much easier.

01:05:57
But what would you

01:06:00
say is like the biggest

01:06:04
difference from a, from

01:06:05
a typical database, for example,

01:06:06
like a relational

01:06:07
database, except you said that

01:06:10
Neo4j or graph database

01:06:11
store it slightly different.

01:06:13
Yeah.

01:06:13
I'm slightly biased.

01:06:15
So I have a long list of things.

01:06:16
I love a graph database

01:06:18
over other things. But if I had

01:06:20
to narrow it down

01:06:22
to just one, the thing that I find

01:06:24
most impactful is that

01:06:26
you don't need to have

01:06:29
expert knowledge about the data

01:06:31
model in order to pull valuable

01:06:34
data from a graph

01:06:35
database.

01:06:36
So you had mentioned, you

01:06:38
know, you have a few different

01:06:39
types of relationships.

01:06:41
You don't have to know what those

01:06:43
relationships are

01:06:44
going into the graph

01:06:45
database, you say, "hey, look, I

01:06:47
know I have these

01:06:48
entities, find all the ways

01:06:50
they're connected and remove

01:06:53
the connections

01:06:54
that are, you know, the

01:06:55
denials or the denied or blocked

01:06:57
or whatever

01:06:58
credentials or access

01:07:00
paths," and you can filter those

01:07:04
types of relationships out and

01:07:06
with a relational

01:07:08
database, sure,

01:07:09
that's probably possible,

01:07:11
but the amount of work and the

01:07:14
amount of knowledge

01:07:14
you have to have upfront first of

01:07:16
the data model and second of SQL

01:07:18
in order to handle

01:07:19
those very complex filterings and

01:07:22
like sub queries and so

01:07:24
on is a lot higher.

01:07:26
That learning

01:07:27
curve is a lot higher.

01:07:28
Um, so that's the thing that I

01:07:30
love most about graph

01:07:31
databases is the data

01:07:34
model itself is

01:07:38
not required to know it

01:07:39
upfront well, and

01:07:42
then it's naturally very visual.

01:07:44
So it's just easier to navigate

01:07:45
and easier to just

01:07:47
explore without having

01:07:49
this massive learning curve

01:07:50
upfront to know the data.

01:07:53
I love that.

01:07:55
Um, specifically as far as I

01:07:57
remember Neo4j was involved

01:08:00
into a lot of like

01:08:01
analytical use cases, uh, towards

01:08:04
things like the

01:08:05
Panama papers, right?

01:08:06
As far as I remember Panama

01:08:07
papers, like the whole network was

01:08:09
basically put into

01:08:10
Neo4j and then the

01:08:11
journalists started analyzing this

01:08:13
massive graph and how

01:08:15
all those companies worked together.

01:08:17
And that is exactly

01:08:18
what you said, right?

01:08:19
You don't have to understand or

01:08:21
have to know yet how those things

01:08:23
are connected or

01:08:24
is it people, is it companies that

01:08:27
somehow work together

01:08:28
that make the relation?

01:08:30
Um, you figure that out while

01:08:32
you're looking at

01:08:34
the data and while

01:08:34
you're looking at the graph and

01:08:35
trying to

01:08:36
understand what that means.

01:08:38
Yep.

01:08:39
Yeah.

01:08:39
My favorite thing is to just take

01:08:40
a data set that

01:08:41
looks interesting to me.

01:08:43
Dump it into Neo4j and then just

01:08:45
start querying and

01:08:46
see what interesting

01:08:47
things I find from it.

01:08:48
And then that's what I end up

01:08:49
focusing on and playing around

01:08:51
with where I feel like

01:08:52
a relational database,

01:08:53
it's almost the opposite.

01:08:55
Um, you have to really kind of

01:08:56
figure out and look at the data

01:08:57
and the spreadsheets

01:08:59
or whatever, you know, data format

01:09:00
you have and figure

01:09:01
out, "okay, what does the

01:09:02
structure look like?

01:09:03
How can I make the connections

01:09:04
from one hop to the

01:09:05
next table and so on?"

01:09:07
And a graph is a little

01:09:09
bit of the reverse there.

01:09:11
Yeah.

01:09:11
Well, I'm not sure it's about a

01:09:14
general graph database

01:09:15
thing or is that very

01:09:17
specific to Neo4j because you

01:09:19
don't necessarily need a schema.

01:09:22
Yeah.

01:09:22
I know there are some other graph

01:09:24
databases that

01:09:25
kind of have that

01:09:27
optional schema, schemaless,

01:09:29
schema free, however

01:09:30
you want to term it.

01:09:30
Right.

01:09:31
And Neo4j is not the

01:09:34
only one in that category.

01:09:35
But I feel like just

01:09:39
the length of time

01:09:40
that Neo4j has been around

01:09:42
that, you know, we kind of have

01:09:44
like a leg up on a

01:09:46
lot of the other

01:09:48
graph databases, so those that,

01:09:49
that do provide that capability.

01:09:51
Um, it's just a

01:09:53
really nice feature.

01:09:55
Right.

01:09:56
Yeah.

01:09:56
I'm asking because I

01:09:58
think for relational databases

01:10:02
one of the critics or points that

01:10:06
people always talked

01:10:07
about and the whole like

01:10:09
NoSQL thing where it came from

01:10:12
was like, you

01:10:13
don't want the schema.

01:10:14
You want this kind of schemaless,

01:10:16
you have an

01:10:17
optional schema and if the

01:10:19
schema can evolve over time, but

01:10:21
with SQL database,

01:10:22
or at least relational

01:10:22
database, not necessarily SQL, but

01:10:24
relational database,

01:10:25
you have to come up

01:10:26
with like relational

01:10:27
model upfront and define it.

01:10:30
Um, and I think that is where a

01:10:32
lot of like the

01:10:33
problems come when you have an

01:10:35
unknown dataset and a very complex

01:10:37
dataset, if it

01:10:39
evolves over time, it's

01:10:40
probably fine, but when you get

01:10:41
something it's probably much

01:10:45
more complicated.

01:10:47
Yeah.

01:10:49
So as a developer, I mean,

01:10:51
I'm coming from a

01:10:52
relational world.

01:10:53
Um, so I'm a Postgres

01:10:56
developer, but I understand I may

01:10:59
need a graph database

01:11:00
like Neo4j.

01:11:01
So how would I get

01:11:02
started with that?

01:11:04
Well, one of the best ways we have

01:11:06
currently is our

01:11:07
database as a service,

01:11:09
um, called Aura, Neo4j Aura.

01:11:12
Um, and we have free instances.

01:11:14
So we have, you know, different

01:11:15
tiers, of course, uh, we have a

01:11:17
free tier and then

01:11:18
kind of your paid tiers above

01:11:20
that, depending on

01:11:20
your, on your needs there.

01:11:21
But the free tier is a really

01:11:23
great place to start.

01:11:24
Um, there's lots of tools

01:11:27
surrounding that free tier.

01:11:28
So they have like a data importer

01:11:30
tool where you can

01:11:31
dump, you can load up

01:11:33
like PDFs or, or CSVs or, um, some

01:11:36
other different

01:11:37
types of data and it will

01:11:39
kind of help you get

01:11:40
that data into a graph.

01:11:41
So you don't have to have that

01:11:42
knowledge upfront.

01:11:44
Um, and then you can kind of

01:11:45
query or play around with

01:11:48
our visualization

01:11:50
tool called Bloom, and it kind

01:11:52
of is a natural

01:11:54
language query interface.

01:11:56
So you don't have to know

01:11:57
a lot of Cypher upfront.

01:11:59
Um, even the Cypher portion

01:12:01
of it, there's guides that

01:12:02
kind of walk you

01:12:02
through, and so it's just a, we

01:12:05
try our best to have a

01:12:07
very low barrier to

01:12:08
entry pathway there for

01:12:10
people to learn.

01:12:13
I think the... You mentioned

01:12:15
Cypher, the thing that makes

01:12:18
Cypher from my

01:12:19
perspective, so much better than

01:12:20
the other graph

01:12:21
languages is that it

01:12:23
actually looks like ASCII art.

01:12:25
It looks beautiful.

01:12:27
You look at the query and at some,

01:12:29
if you go a little bit

01:12:30
deeper and use some

01:12:31
of more complex constructs, it's a

01:12:34
little bit more complicated to

01:12:36
understand if you

01:12:36
don't know how it works, but like

01:12:39
a standard graph

01:12:40
query over multiple

01:12:42
nodes and relationships, it, you

01:12:45
look at that and it's an arrow

01:12:47
telling you, "oh,

01:12:48
here's a node,

01:12:49
here's the relationship,

01:12:50
and that's what I expect,

01:12:51
and that is how many you

01:12:53
can have between those."

01:12:54
I just love it.

01:12:56
Whoever came up with Cypher.

01:12:57
Thank you.

01:12:58
Thank you for the love of God.

01:13:01
Yeah.

01:13:01
It's a super

01:13:03
approachable query language.

01:13:06
I feel like I had learned

01:13:07
several years of SQL

01:13:08
before I even knew about

01:13:10
Cypher, um, and when I came over

01:13:13
to the

01:13:14
light side, if you will,

01:13:16
at Neo4j, um, and started

01:13:18
exploring Cypher, there were

01:13:19
several things that it's like,

01:13:21
"why in the world isn't everybody,

01:13:22
you know, using

01:13:23
something like this?"

01:13:24
Because it's very easy

01:13:27
to read, very easy to construct,

01:13:29
at least kind of

01:13:30
the general starting

01:13:32
structures, right?

01:13:33
Um, there's way more

01:13:34
complex things you can do with it.

01:13:36
And there's still lots of things I

01:13:37
look at it and go,

01:13:38
okay, "how do I do

01:13:39
this pattern, you know,

01:13:40
construction and manipulation?"

01:13:42
Um, because

01:13:42
patterns are very complex.

01:13:44
Um, but yeah, just at the

01:13:46
outset, it's a much more

01:13:48
approachable language.

01:13:50
I feel like and has some

01:13:51
really cool fun

01:13:52
things to do with it.

01:13:54
And I always like to give the

01:13:55
example that it took me

01:13:57
learning Cypher in order

01:13:58
to understand what the SQL having

01:14:02
and group by

01:14:03
clause was trying to do.

01:14:05
Um, it was just way more apparent

01:14:07
in Cypher than in SQL.

01:14:13
I agree.

01:14:14
And I think, and that is

01:14:15
where a graph

01:14:16
database comes in in general,

01:14:18
as I said earlier, in SQL,

01:14:20
when you have those like

01:14:22
multi hop relationships,

01:14:23
you end up doing something like

01:14:26
this weird recursive SQL.

01:14:28
It works, but it's never

01:14:30
going to be nice.

01:14:31
It's it's a recursive,

01:14:33
common table

01:14:35
expression, with the

01:14:37
union and a join and I have to

01:14:41
look it up every

01:14:42
single time I have.

01:14:42
I've used it so many times.

01:14:44
I always get like 95%

01:14:46
to where I want to be.

01:14:48
And then it just doesn't

01:14:50
work the way I expected.

01:14:51
And I have to look it up and

01:14:52
I probably

01:14:54
made some mistake

01:14:55
on the join type or

01:14:57
on the joint clause.

01:14:59
And with Neo4j or in

01:15:01
general with graph

01:15:02
database and specifically

01:15:03
Cypher, it is so much easier to

01:15:06
model that stuff,

01:15:07
even when you use a

01:15:08
merge or, or something,

01:15:09
it's still way easier.

01:15:11
Yeah.

01:15:11
And for those of you who are not

01:15:14
familiar with

01:15:15
Cypher or thinking

01:15:16
that this is a Neo4j thing.

01:15:18
Um, first of all, we have

01:15:19
OpenCypher, which is a

01:15:22
completely open source.

01:15:23
We open sourced it, I believe back

01:15:24
in 2015, but just

01:15:26
this year, Neo4j

01:15:29
and several other graph database

01:15:30
vendors all got

01:15:31
together and came up with

01:15:33
the ISO GQL standard, "Geequel

01:15:37
standard", that was released, I

01:15:38
think like a month,

01:15:39
month and a half ago now.

01:15:41
Um, and so there is an official.

01:15:43
Graph query language standard now

01:15:45
that Cypher has

01:15:47
poured a lot into that as

01:15:49
well.

01:15:49
Um, there's a lot of things that

01:15:50
have, have come over

01:15:51
from Cypher as well as

01:15:53
some other graph

01:15:53
query languages too.

01:15:55
So it will be an official, like

01:15:57
unified standard.

01:15:59
Of course, whenever, when

01:16:00
everybody can kind

01:16:00
of get to that.

01:16:02
An ISO standard.

01:16:04
Yep.

01:16:04
Wow.

01:16:05
I did not expect that

01:16:06
to see in my lifetime.

01:16:08
That is incredible.

01:16:10
It's been several

01:16:10
years in the making.

01:16:11
And Neo4j and all the other graph

01:16:13
database vendors

01:16:14
have been hard at work

01:16:15
getting that all together, but

01:16:16
yeah, it all got

01:16:17
approved and everything.

01:16:18
Just recently.

01:16:20
So how does it work from

01:16:22
a programming

01:16:22
language perspective?

01:16:24
Um, I know that Neo4j has a

01:16:26
lot of drivers,

01:16:27
obviously it's not a SQL

01:16:29
interface, so you need something

01:16:30
different than for

01:16:31
example, in Java JDBC or in

01:16:33
Go, the scan interface.

01:16:35
Um, but I think there's drivers

01:16:38
for almost every language I've

01:16:42
ever considered.

01:16:43
Yeah.

01:16:44
Um, we provide official drivers

01:16:47
for like the bulk of

01:16:48
your core languages,

01:16:50
and then there's community

01:16:51
drivers that are

01:16:53
very well supported, very

01:16:54
well maintained by partners

01:16:56
or communities or so

01:16:57
on for several

01:16:59
other languages, and then we

01:17:01
also do have like a

01:17:02
JDBC driver and

01:17:04
other things too, as well as

01:17:05
integrations to major frameworks.

01:17:07
So like our Spring Data in Neo4j

01:17:09
integration has

01:17:10
been around forever.

01:17:11
Um, and

01:17:14
several others as well.

01:17:15
And of course, you know, we have

01:17:15
like the, the big

01:17:16
GenAI ones now. your

01:17:18
lang chains, your

01:17:19
llama index, and so on too.

01:17:21
So, basically anything you

01:17:23
want to integrate,

01:17:24
with or around

01:17:26
Neo4j has some kind of connector

01:17:28
integration or driver or something

01:17:30
to do with it.

01:17:33
All right.

01:17:33
Cool.

01:17:34
Um, you already mentioned

01:17:36
Neo4j Aura.

01:17:37
Um, and as far as I know,

01:17:41
we're a cloud podcast,

01:17:42
but we're also Kubernetes

01:17:43
podcast, as far as I know Neo4j

01:17:44
Aura internally uses

01:17:46
Kubernetes, right?

01:17:47
Yes.

01:17:48
As far as I know.

01:17:48
Yep.

01:17:49
Kubernetes I the thing.

01:17:51
Okay.

01:17:51
Yep.

01:17:51
So we're, we're probably on the

01:17:53
same level of understand.

01:17:55
Yeah, there may be some other

01:17:56
things they do as well,

01:17:57
but yes, we run

01:17:59
Kubernetes and we have a

01:18:00
very good integration and

01:18:02
partnership there.

01:18:04
Okay.

01:18:04
So that means I can also use

01:18:06
Neo4j on

01:18:07
Kubernetes outside of Aura.

01:18:09
Yeah.

01:18:10
The thing that, at least I

01:18:12
didn't realize and

01:18:13
still like, until I started

01:18:14
digging in just a little bit, is

01:18:15
running a database on

01:18:17
Kubernetes is not a simple

01:18:20
like spin up X database.

01:18:23
Um, there's a lot of, you know, because...

01:18:25
If you don't care for

01:18:26
persistence, yes.

01:18:29
Right.

01:18:30
Um Kubernetes is very

01:18:33
customized because typically

01:18:35
you're dealing with

01:18:36
enterprise systems and you need

01:18:37
to mess or

01:18:38
customize with individual

01:18:40
components or pieces.

01:18:41
So running Neo4j requires

01:18:45
about four or five different

01:18:46
components that

01:18:48
technically run or would run

01:18:50
separately on Kubernetes.

01:18:52
And so, if you've ever heard

01:18:53
of Helm and Helm

01:18:55
Charts, that's the

01:18:57
easiest way to basically just

01:18:59
outlines, you know, these are the

01:19:00
services, the pieces

01:19:01
that I need in order to run Neo4j,

01:19:03
spin all these up together and

01:19:05
manage them this

01:19:06
way and

01:19:07
replicate them this way.

01:19:09
Um, and so it's actually pretty

01:19:10
easy to get up and

01:19:11
running with the Neo4j

01:19:12
provided managed

01:19:14
supported Helm chart.

01:19:17
Interesting.

01:19:18
So the reason I'm saying

01:19:20
interesting is

01:19:21
because everyone these

01:19:23
days talks about Kubernetes

01:19:24
Operators and "we have the Operator

01:19:27
to set it up for you"

01:19:28
and you say "no

01:19:28
use the Helm chart."

01:19:29
And it's like,

01:19:32
it's so refreshing.

01:19:33
I haven't heard that in a while.

01:19:35
I think the reason is that

01:19:37
Operators give you a

01:19:38
lot more like operational...

01:19:41
Well, you can react at

01:19:45
runtime to certain situations

01:19:47
where the

01:19:49
Helm chart is basically just be

01:19:50
the installation.

01:19:51
I think that is the reason why a

01:19:52
lot of people use or

01:19:54
move towards the Operator.

01:19:56
Um, but that's just my guess.

01:20:01
Um, maybe it's just like cool to

01:20:03
have an Operator these days.

01:20:05
The latest thing.

01:20:09
Yeah.

01:20:09
Um, so let me see.

01:20:11
We talked about developers,

01:20:13
we talked about the

01:20:14
programming languages,

01:20:16
we know you can

01:20:17
run it on Kubernetes.

01:20:18
Um, make sure you have a

01:20:20
persistent volume if

01:20:21
you run a database.

01:20:22
We talked about that.

01:20:24
Yep.

01:20:25
And if you need a persistent

01:20:26
volume provider, I

01:20:28
heard that simplyblock

01:20:30
might have something for you.

01:20:32
Um, but there's

01:20:33
a lot of others as well.

01:20:34
Um, actually just yesterday,

01:20:37
or on the

01:20:40
weekend, I started

01:20:42
a small website where you can

01:20:44
look for all the

01:20:45
different CSI providers.

01:20:46
Basically the volume

01:20:48
providers that can be

01:20:50
plugged in into

01:20:51
Kubernetes everything that I know

01:20:53
and found, and

01:20:55
I split them by

01:20:56
features and you can search.

01:20:58
So, if you're in the

01:21:00
search for a CSI

01:21:01
provider, storageclass.info

01:21:03
is probably what

01:21:04
you want to look into.

01:21:05
If you find something

01:21:07
that is wrong, feel free

01:21:08
to send a pull request.

01:21:09
It's GitHub pages.

01:21:11
Just like

01:21:14
as a side note. Okay,

01:21:17
because we're

01:21:18
pretty much out of time.

01:21:20
Um, what do you think is the next

01:21:23
big thing in cloud,

01:21:25
in graph database,

01:21:26
in databases in general, in AI,

01:21:30
feel free to name two

01:21:32
of three things as well.

01:21:34
Yeah.

01:21:34
Well, I think, you know, AI is

01:21:36
kind of or it's kind of the big

01:21:40
thing right now,

01:21:42
but I think we'll start seeing

01:21:43
that not

01:21:45
necessarily taper off, but we'll

01:21:47
start seeing that integrate into,

01:21:49
kind of just our

01:21:52
standard day to day,

01:21:53
rather than that, I think being

01:21:54
the focus for everything.

01:21:57
Um, I think we'll kind of see, you

01:21:59
know, us not go

01:22:01
back to, but

01:22:03
kind of modify what was our

01:22:05
workflow to integrate

01:22:07
LLMs and GenAI stuff into,

01:22:09
into our day to day things.

01:22:11
Um, and so it will become just a

01:22:13
piece of the

01:22:14
deployment puzzle or, you

01:22:16
know, building a puzzle or

01:22:18
application puzzle, whatever it is.

01:22:20
Um, and so I think that will kind

01:22:22
of get standardized

01:22:23
a little bit better.

01:22:24
We'll kind of figure out where

01:22:25
the super useful

01:22:27
applications are and the

01:22:29
highly critical and impactful

01:22:31
workflows that we need to use it.

01:22:33
Um, and so I think databases

01:22:36
are going to be a

01:22:37
huge component of that.

01:22:38
Uh, whether it's, you know, graph

01:22:40
or, or something

01:22:40
else entirely we're

01:22:43
seeing this shift from,

01:22:45
"okay, use LLM for

01:22:46
everything," realizing that

01:22:48
LLM has some limitations, right.

01:22:51
And some, and some weaknesses, but

01:22:53
I think those are weaknesses and

01:22:55
limitations that databases can

01:22:57
really help mitigate.

01:22:59
They're not going to completely

01:22:59
solve them, but they

01:23:00
can help mitigate that.

01:23:02
Um, because we have lots of good

01:23:04
data in our

01:23:05
data structures already.

01:23:06
Um, and so pairing the two, I

01:23:08
think together, this

01:23:09
is where you see that

01:23:10
retrieval, augmented generation or

01:23:12
RAG concept

01:23:14
pairing the database with

01:23:15
an LLM I think is going to

01:23:17
continue to improve

01:23:19
that story together.

01:23:21
Uh, true.

01:23:23
Um, you said how to use it

01:23:26
best or where to use it.

01:23:28
The, I mean, right now

01:23:31
there's this meme

01:23:31
going around, like,

01:23:34
"I want my LLM to do my dishes and,

01:23:37
I don't know whatever."

01:23:39
Well, so it was,

01:23:41
it was differently.

01:23:42
"I don't want my AI

01:23:44
to do art and whatever.

01:23:47
I wanted to do it, but dishes,

01:23:50
so I can do the art."

01:23:51
Yeah.

01:23:52
I want to mitigate the low or

01:23:53
delegate the low

01:23:54
impact things to the LLM.

01:23:56
Exactly.

01:23:58
Um, I don't, unfortunately I can't

01:24:00
remember exactly

01:24:01
what it was right now.

01:24:03
Um, but if I find it, I'll

01:24:04
put it in a show notes.

01:24:05
Um, I read that and I was like,

01:24:07
yes, that is exactly it.

01:24:08
Why do we give the complicated

01:24:10
tasks or the stuff that

01:24:12
we love to do to an AI

01:24:14
instead of trying to offload the

01:24:17
stuff we really don't like?

01:24:19
Yeah.

01:24:19
Um, a good example of that would

01:24:21
probably be writing the

01:24:23
initial documentation for stuff.

01:24:25
Um, looking at the source code,

01:24:26
at the comments and

01:24:28
coming up with an

01:24:29
initial draft for the

01:24:30
documentation of that, whatever.

01:24:32
Um, I mean, where most of us are

01:24:35
engineers and

01:24:35
engineers love one thing,

01:24:37
which is writing code, but

01:24:39
they hate the

01:24:40
other thing, which is, well,

01:24:42
love hate the other thing, which

01:24:43
is documentation.

01:24:45
Yeah.

01:24:45
Right.

01:24:45
Um, so maybe, maybe that is

01:24:48
something where we

01:24:48
should look into and figure

01:24:50
out if maybe

01:24:51
it helps us that way.

01:24:53
All right.

01:24:54
Um, cool.

01:24:55
Yeah.

01:24:56
Um, that was a pleasure.

01:24:58
Thank you very

01:24:58
much for being here.

01:24:59
Thank you so much for having me.

01:25:01
Um, my pleasure.

01:25:04
Yes.

01:25:04
And for the audience,

01:25:06
Jennifer prepared a demo

01:25:09
which unfortunately

01:25:10
doesn't work for an audio podcast,

01:25:12
but we'll put it

01:25:13
in the show notes.

01:25:14
It will show you exactly like how

01:25:15
you can set up a Neo4j on

01:25:18
Kubernetes yourself.

01:25:20
Um, and we may

01:25:22
actually do a recording.

01:25:24
Um, so I can put that as well.

01:25:26
Uh, we'll

01:25:26
see. Maybe not yet.

01:25:28
Maybe it's somewhere

01:25:29
in the near future.

01:25:30
Um, like a plan.

01:25:32
Yeah.

01:25:32
I know, I know.

01:25:34
Sometimes I have plans,

01:25:36
not a lot of times, but sometimes.

01:25:38
Whether they actually get

01:25:39
implemented, you know, who knows.

01:25:42
Exactly.

01:25:43
You can always have good ideas.

01:25:46
And there's plenty of those, not

01:25:47
all of them are

01:25:48
getting implemented.

01:25:51
All right.

01:25:51
Yeah.

01:25:51
Uh, as I said,

01:25:52
thank you very much.

01:25:53
Uh, it was a pleasure.

01:25:54
Uh, it was good to talk to you

01:25:55
after two years,

01:25:58
three years again.

01:26:00
Um, yeah, something like that.

01:26:01
Yeah.

01:26:01
Time just flies.

01:26:04
Um, hopefully we'll connect in

01:26:05
person at a conference sometime in

01:26:07
the future again.

01:26:08
I hope so.

01:26:10
I hope so.

01:26:11
Um, I mean there is a lot of

01:26:14
database conferences, a lot of Java

01:26:16
conferences, so there's a good

01:26:18
chance, I guess.

01:26:19
Yeah.

01:26:21
All right.

01:26:21
And for the audience,

01:26:22
thank you very much

01:26:23
for being here again.

01:26:24
Uh, see you all next week.

01:26:26
Uh, we'll be next

01:26:27
episode and the next guest.

01:26:29
Thank you very

01:26:29
much for being here.

01:26:30
The cloud commute podcast is sponsored by

01:26:32
simplyblock your own elastic

01:26:33
block storage engine for the cloud.

01:26:35
Get higher IOPS and low predictable

01:26:37
latency while bringing down your

01:26:38
total cost of ownership.

01:26:40
www.simplyblock.io