SlideShare a Scribd company logo
1 of 54
© 2022 Neo4j, Inc. All rights reserved.
The Inside Scoop on Neo4j:
Meet the Builders
Stu Moore,
Product Manager for Neo4j Database
YOUR LOGO HERE
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
Inside Scoop on Neo4j
New ways to query the graph
• Node patterns [Gustav]
• Querying Fabric [Tobias]
Finding information faster
• Relationship indexes [Linnea]
Overcoming bottlenecks
• Relationship chain locks
[Valdemar]
2
Meet the Builders:
© 2022 Neo4j, Inc. All rights reserved.
3
New ways to query the graph
Gustav Hendergran
Core Database Engineer
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
4
Node pattern predicates
What is it?
- More advanced pattern matching
- A syntactic alternative for Cypher node patterns
Where is it used?
- MATCH and inside pattern comprehension
When to use it?
- As expressions become more complex
When can't you use it?
- MATCH (a:Person)-->(b:Person) WHERE a.age >
b.age
Improved
Node
Pattern
Matching
in Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
5
Cypher in Neo4j 4.4
MATCH (n:Person WHERE n.age < 2)
RETURN n
MATCH (a:Person)-->(b:Person)
WHERE a.age > b.age
MATCH (n:Person)
WHERE n.age < 2
RETURN n
MATCH (a:Person)-->(b:Person)
WHERE a.age > b.age
Cypher before Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (p:Person)-->(m:Movie)
WHERE p.name STARTS WITH "Bill" AND m.released > 1995
RETURN p.name, m.title, m.released;
+-------------------------------------------------------+
| p.name | m.title | m.released |
+-------------------------------------------------------+
| "Billy Crystal" | "When Harry Met Sally" | 1998 |
| "Bill Paxton" | "Twister" | 1996 |
+-------------------------------------------------------+
6
Node pattern predicates in MATCH before Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (p:Person WHERE p.name STARTS WITH "Bill")-->
(m:Movie WHERE m.released > 1995)
RETURN p.name, m.title, m.released;
+-------------------------------------------------------+
| p.name | m.title | m.released |
+-------------------------------------------------------+
| "Billy Crystal" | "When Harry Met Sally" | 1998 |
| "Bill Paxton" | "Twister" | 1996 |
+-------------------------------------------------------+
7
Node pattern predicates in MATCH in Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (a:Person {name: 'Keanu Reeves'})
RETURN [(a)-->(b:Movie)<--(c:Person)
WHERE b.released > 1997
AND c.name CONTAINS "Nicholson" | b.title]
AS movies;
+----------------------------+
| movies |
+----------------------------+
| ["Something's Gotta Give"] |
+----------------------------+
8
Pattern comprehension before Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (a:Person {name: 'Keanu Reeves'})
RETURN [(a)-->(b:Movie WHERE b.released > 1997)<--
(c:Person WHERE c.name CONTAINS "Nicholson") | b.title]
AS movies;
+----------------------------+
| movies |
+----------------------------+
| ["Something's Gotta Give"] |
+----------------------------+
9
Pattern comprehension in Neo4j 4.4
© 2022 Neo4j, Inc. All rights reserved.
10
New ways to query the graph
with Fabric
Tobias Johansson
Core Database Engineer
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
11
Why Fabric? A way to…
Unlock more business value
• Query across multiple graphs -> FEDERATION
Operate at scale
• Virtually unlimited horizontal scale
• Increase performance w/ vertical scale
• Improved operations
◦ Manage smaller data sets
◦ Backup / restore
• SHARD TB data into 100s GB
Hybrid Cloud queries
• From Neo4j query across Aura & Neo4j*
What is it?
• Execute queries
in parallel across
databases
• Chain queries for
sophisticated
real-time analysis
• Query a
database
composed of
other databases
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
12
cards
shard01 shard02
"Fabric" Database
loans
shard03
Compose a graph from databases across clusters
Cluster01 Cluster02
© 2022 Neo4j, Inc. All rights reserved.
13
Fabric a social example
TBD: Set the scene for your social fabric example
Suggest a data model showing the people and the forums / posts and any info
you are going to show in the example etc
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
14
people posts1
social
posts2
Compose a graph from databases across clusters
cluster
Fabric
database
© 2022 Neo4j, Inc. All rights reserved.
neo4j@social> CALL {
USE social.people
MATCH (p:Person {id: 3})
RETURN p.id AS pid
}
CALL {
USE social.posts1
WITH pid
MATCH (p:Post {pid: pid})
RETURN p.title AS title
}
RETURN title;
15
Querying Fabric
Returns
+----------+
| title |
+----------+
| "Post 2" |
| "Post 3" |
+----------+
© 2022 Neo4j, Inc. All rights reserved.
neo4j@social> CALL {
USE social.people
MATCH (p:Person {id: 1})-
[:FOLLOWS]->(f)
RETURN f.id AS pid, f.name AS name
}
UNWIND social.graphIds() AS gid
CALL {
USE social.graph(gid)
WITH pid
MATCH (p:Post {pid: pid})
RETURN p.title AS title
}
RETURN gid, name, title;
16
Querying Fabric
Returns
+---------------------------+
| gid | name | title |
+---------------------------+
| 1 | "Daniel" | "Post 4" |
| 2 | "Daniel" | "Post 2" |
| 1 | "Daniel" | "Post 5" |
| 1 | "Daniel" | "Post 6" |
| 1 | "Cindy" | "Post 2" |
| 2 | "Cindy" | "Post 1" |
| 1 | "Cindy" | "Post 3" |
+---------------------------+
© 2022 Neo4j, Inc. All rights reserved.
neo4j@social> UNWIND social.graphIds() AS gid
CALL {
USE social.graph(gid)
MATCH (p:Post)
RETURN p.pid AS pid,
p.text AS text,
size(p.text) AS length
ORDER BY length DESC
LIMIT 1
}
RETURN *
ORDER BY length DESC
LIMIT 1;
17
Querying Fabric
Returns
+------------------------------
| gid | length | pid | text
+------------------------------
| 2 | 86 | 4 | "A great
+------------------------------
© 2022 Neo4j, Inc. All rights reserved.
18
Finding information faster
Linnéa Andersson,
Core Database Engineer
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
What it is
19
For Cypher users and Developers
looking for a significant performance
gain when using MATCH on
relationships by type and property
Similar to indexes for properties
associated to nodes, Neo4j 4.3+
provides native index capabilities for
properties associated to
relationships.
Relationship Type &
Property Indexes
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
What it is
20
For DBAs and architects who need to
optimize performance with indexes.
Neo4j 4.3 provided a new index for
node label and relationship types.
Created by default, when a database
is created with empty stores.
When stores are imported in a
database at creation, existing indexes
for labels and types are acquired,
administrators can modify them by
using CREATE/DROP INDEX commands.
Node Label &
Relationship Type lookup
indexes
© 2022 Neo4j, Inc. All rights reserved.
21
Goal: find all the twins in the
database (as quickly as possible)
Relationship type indexes
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (me:Person)-[:TWIN_OF]->(twin:Person) RETURN *
+------------------------+-------------------------------+--------+
| Operator | Details | Rows |
+------------------------+-------------------------------+--------+
| +ProduceResults@neo4j | me, twin | 3981 |
| | +-------------------------------+--------+
| +Filter@neo4j | twin:Person | 3981 |
| | +-------------------------------+--------+
| +Expand(All)@neo4j | (me)-[anon_0:TWIN_OF]->(twin) | 3981 |
| | +-------------------------------+--------+
| +NodeByLabelScan@neo4j | me:Person | 204870 |
+------------------------+-------------------------------+--------+
22
To find all twins in a Neo4j 4.2 database
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (me:Person)-[:TWIN_OF]->(twin:Person) RETURN *
+-------------------------------------+-------------------------------+------+
| Operator | Details | Rows |
+-------------------------------------+-------------------------------+------+
| +ProduceResults@neo4j | me, twin | 3981 |
| | +-------------------------------+------+
| +Filter@neo4j | me:Person AND twin:Person | 3981 |
| | +-------------------------------+------+
| +DirectedRelationshipTypeScan@neo4j | (me)-[anon_0:TWIN_OF]->(twin) | 3981 |
+-------------------------------------+-------------------------------+------+
23
To find all twins in a Neo4j 4.2 database
© 2022 Neo4j, Inc. All rights reserved.
24
Goal: find all parents on parental
leave in the database (as quickly
as possible)
Relationship property indexes
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> MATCH (parent:Person)-[r:PARENT_OF]->(child:Person)
WHERE r.on_parental_leave=true return *;
+------------------------+---------------------------------------------+--------+
| Operator | Details | Rows |
+------------------------+---------------------------------------------+--------+
| +ProduceResults@neo4j | parent, child | 84 |
| | +---------------------------------------------+--------+
| +Filter@neo4j | r.on_parental_leave = true AND child:Person | 84 |
| | +---------------------------------------------+--------+
| +Expand(All)@neo4j | (parent)-[r:PARENT_OF]->(child) | 102000 |
| | +---------------------------------------------+--------+
| +NodeByLabelScan@neo4j | parent:Person | 204872 |
+------------------------+---------------------------------------------+--------+
25
Goal find all parents on parental leave in Neo4j 4.2
© 2022 Neo4j, Inc. All rights reserved.
neo4j@neo4j> CREATE INDEX parental_leave IF NOT EXISTS FOR ()-[r:PARENT_OF]-()
ON ( r.on_parental_leave );
neo4j@neo4j> MATCH (parent:Person)-[r:PARENT_OF]->(child:Person)
WHERE r.on_parental_leave=true return *;
+-----------------------------+---------------------------------------------------------+-----+
| Operator | Details |Rows |
+-----------------------------+---------------------------------------------------------+-----+
| +ProduceResults@neo4j | parent, child | 84 |
| | +---------------------------------------------------------+-----+
| +Filter@neo4j | parent:Person AND child:Person | 84 |
| | +---------------------------------------------------------+-----+
| +DirectedRelationshipIndexS*| BTREE INDEX (parent)-[r:PARENT_OF(on_parental_leave)]-> | 84 |
| | (child) WHERE on_parental_leave = true | |
+-----------------------------+---------------------------------------------------------+-----+
*Abbreviated from DirectedRelationshipIndexScan@neo4j
26
Find all the parents on leave in Neo4j 4.3+
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
Relationship type/property planning
27
Relationship must
have type specified.
MATCH (me)-[knows:KNOWS]->(friend)-
[married:MARRIED_TO]->(friendSpouse)
:TYPE
MATCH (me)-[r]->(friend)-[m]->(friendSpouse)
The following wont work
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
WHERE knows.since IS NOT NULL
WHERE knows.since = 2010
WHERE knows.since IN [2010, 2020]
WHERE knows.since > 2010
WHERE 2000 < knows.since < 2010
WHERE married.witnessed_by STARTS WITH “Dr”
WHERE distance(knows.met_first, point({x:1,y:2})) < 2
Relationship type/property planning
28
• Composite
indexes are
supported.
• Can solve all
the same
predicates as
node indexes
WHERE married.witnessed_by ENDS WITH “Who”
WHERE married.witnessed_by CONTAINS “Who”
Following supported by "lucene+btree-3.0" index provider only
Follow with any one of the following WHERE statements
© 2022 Neo4j, Inc. All rights reserved.
29
Overcoming bottlenecks in the
model
How Neo4j solves for dense nodes, so you don't
have to redesign your model
© 2022 Neo4j, Inc. All rights reserved.
30
Dense node (un)locking
in Neo4j 4.3
Valdemar Roxling,
Core Database Engineer
© 2022 Neo4j, Inc. All rights reserved.
...
Bob
Bob
Bob
Bob
Bob
Dense nodes
Logical representation
GraphConnect Valdemar
SPEAKS_AT
Bob Bob
Bob
Bob
Bob
Bob
Alice
© 2022 Neo4j, Inc. All rights reserved.
...
Bob
Bob
Bob
Bob
Bob
Dense nodes
Logical representation
GraphConnect Valdemar
SPEAKS_AT
Bob Bob
Bob
Bob
Bob
Bob
Alice
Node store Relationship Group store Relationship store
Graph
Connect
SPEAKS_AT
ATTENDS_TO
R1
R2 R3 Rx
... Ry
Physical representation (seen from dense node)
© 2022 Neo4j, Inc. All rights reserved.
Locking problem
Relationships additions/removals prevents any other concurrent changes to either affected node
GraphConnect Bob
TX1
© 2022 Neo4j, Inc. All rights reserved.
Locking problem
Relationships additions/removals prevents any other concurrent changes to either affected node
GraphConnect Bob
TX1
Holds
© 2022 Neo4j, Inc. All rights reserved.
Locking problem
Relationships additions/removals prevents any other concurrent changes to either affected node
GraphConnect Bob
Alice
TX1
TX2
Holds
© 2022 Neo4j, Inc. All rights reserved.
Locking problem
Relationships additions/removals prevents any other concurrent changes to either affected node
GraphConnect Bob
Alice
TX1
TX2
Holds
© 2022 Neo4j, Inc. All rights reserved.
Granular locking
Only lock what is necessary to preserve data integrity
R1 R2 R3 R4 R5 R6 R7
© 2022 Neo4j, Inc. All rights reserved.
Granular locking
Only lock what is necessary to preserve data integrity
R1 R2 R3 R4 R5 R6 R7
TX1
© 2022 Neo4j, Inc. All rights reserved.
Granular locking
Only lock what is necessary to preserve data integrity
R1 R2 R3 R4 R5 R6 R7
TX1 TX2
© 2022 Neo4j, Inc. All rights reserved.
Granular locking
Only lock what is necessary to preserve data integrity
R1 R2 R3 R4
R1 R2 Rtx1 R3 R4
R5 R6 R7
TX1 TX2
R5 Rtx2 R6 R7
TX1
TX2
© 2022 Neo4j, Inc. All rights reserved.
© 2022 Neo4j, Inc. All rights reserved.
Concurrent modifications made total throughput
lower. Why?
41
© 2022 Neo4j, Inc. All rights reserved.
Deadlocks
More granular locks increases the risk of locks taken “out of order”
Transaction 1
Transaction 2
© 2022 Neo4j, Inc. All rights reserved.
Deadlocks
More granular locks increases the risk of locks taken “out of order”
Transaction 1
1
Transaction 2
© 2022 Neo4j, Inc. All rights reserved.
Deadlocks
More granular locks increases the risk of locks taken “out of order”
Transaction 1
1
Transaction 2
2
© 2022 Neo4j, Inc. All rights reserved.
Deadlocks
More granular locks increases the risk of locks taken “out of order”
Transaction 1
1 2
Transaction 2
2
Wait
for
© 2022 Neo4j, Inc. All rights reserved.
Deadlocks
More granular locks increases the risk of locks taken “out of order”
Transaction 1
1 2
Transaction 2
1
2
Wait
for
Deadlock!
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
denseNode.createRelationshipTo(node)
4
5
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
denseNode.createRelationshipTo(node)
denseNode.createRelationshipTo(otherNode)
4
5
2
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
denseNode.createRelationshipTo(node)
denseNode.createRelationshipTo(otherNode)
4
5
2
1
doWork()
3
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
tx.commit()
Commit
denseNode.createRelationshipTo(node)
denseNode.createRelationshipTo(otherNode)
1
2 3
4
5
doWork()
© 2022 Neo4j, Inc. All rights reserved.
Sorting locks
Taking locks in specified order eliminates deadlocks
Transaction
db.beginTx()
tx.commit()
Commit
denseNode.createRelationshipTo(node)
denseNode.createRelationshipTo(otherNode)
1
2
3
4
5
doWork()
© 2022 Neo4j, Inc. All rights reserved.
Summary
• Granular locking on dense nodes
◦ Allows concurrent additions/deletions
• Reworked locking scheme with sorted locks
◦ Greatly reduces risk of unexpected deadlocks
◦ Holds locks for a shorter duration
© 2022 Neo4j, Inc. All rights reserved.
54
Thank you!
Contact us at
sales@neo4j.com
YOUR LOGO HERE

More Related Content

Similar to The Inside Scoop on Neo4j: Meet the Builders

Fun with Fabric in 15
Fun with Fabric in 15Fun with Fabric in 15
Fun with Fabric in 15Neo4j
 
Developers' mDay 2017. - Bogdan Kecman Oracle
Developers' mDay 2017. - Bogdan Kecman OracleDevelopers' mDay 2017. - Bogdan Kecman Oracle
Developers' mDay 2017. - Bogdan Kecman OraclemCloud
 
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0mCloud
 
Adding Complex Data to Spark Stack by Tug Grall
Adding Complex Data to Spark Stack by Tug GrallAdding Complex Data to Spark Stack by Tug Grall
Adding Complex Data to Spark Stack by Tug GrallSpark Summit
 
Oracle to Cassandra Core Concepts Guide Pt. 2
Oracle to Cassandra Core Concepts Guide Pt. 2Oracle to Cassandra Core Concepts Guide Pt. 2
Oracle to Cassandra Core Concepts Guide Pt. 2DataStax Academy
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksNeo4j
 
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxGraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxjexp
 
Record linkage, a real use case with spark ml - Paris Spark meetup Dec 2015
Record linkage, a real use case with spark ml  - Paris Spark meetup Dec 2015Record linkage, a real use case with spark ml  - Paris Spark meetup Dec 2015
Record linkage, a real use case with spark ml - Paris Spark meetup Dec 2015Modern Data Stack France
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsNeo4j
 
Heroku Waza 2013 Lessons Learned
Heroku Waza 2013 Lessons LearnedHeroku Waza 2013 Lessons Learned
Heroku Waza 2013 Lessons LearnedSimon Bagreev
 
Twitter power-user HOWTO
Twitter power-user HOWTOTwitter power-user HOWTO
Twitter power-user HOWTOSteve Blackmon
 
New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12Sergey Petrunya
 
SkySQL Cloud MySQL MariaDB
SkySQL Cloud MySQL MariaDBSkySQL Cloud MySQL MariaDB
SkySQL Cloud MySQL MariaDBlemugfr
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Dzianis Pirshtuk
 
Date dimension table - part II
Date dimension table - part IIDate dimension table - part II
Date dimension table - part IIDirk Cludts
 
Rethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache DrillRethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache DrillMapR Technologies
 
Percona Live Europe 2018 MySQL Group Replication... the magic explained
Percona Live Europe 2018  MySQL Group Replication... the magic explainedPercona Live Europe 2018  MySQL Group Replication... the magic explained
Percona Live Europe 2018 MySQL Group Replication... the magic explainedFrederic Descamps
 

Similar to The Inside Scoop on Neo4j: Meet the Builders (20)

Org Beamer
Org BeamerOrg Beamer
Org Beamer
 
Fun with Fabric in 15
Fun with Fabric in 15Fun with Fabric in 15
Fun with Fabric in 15
 
Developers' mDay 2017. - Bogdan Kecman Oracle
Developers' mDay 2017. - Bogdan Kecman OracleDevelopers' mDay 2017. - Bogdan Kecman Oracle
Developers' mDay 2017. - Bogdan Kecman Oracle
 
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0
Developers’ mDay u Banjoj Luci - Bogdan Kecman, Oracle – MySQL Server 8.0
 
Adding Complex Data to Spark Stack by Tug Grall
Adding Complex Data to Spark Stack by Tug GrallAdding Complex Data to Spark Stack by Tug Grall
Adding Complex Data to Spark Stack by Tug Grall
 
Oracle to Cassandra Core Concepts Guide Pt. 2
Oracle to Cassandra Core Concepts Guide Pt. 2Oracle to Cassandra Core Concepts Guide Pt. 2
Oracle to Cassandra Core Concepts Guide Pt. 2
 
Top 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & TricksTop 10 Cypher Tuning Tips & Tricks
Top 10 Cypher Tuning Tips & Tricks
 
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptxGraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
GraphConnect 2022 - Top 10 Cypher Tuning Tips & Tricks.pptx
 
Record linkage, a real use case with spark ml - Paris Spark meetup Dec 2015
Record linkage, a real use case with spark ml  - Paris Spark meetup Dec 2015Record linkage, a real use case with spark ml  - Paris Spark meetup Dec 2015
Record linkage, a real use case with spark ml - Paris Spark meetup Dec 2015
 
Enabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge GraphsEnabling GenAI Breakthroughs with Knowledge Graphs
Enabling GenAI Breakthroughs with Knowledge Graphs
 
Heroku Waza 2013 Lessons Learned
Heroku Waza 2013 Lessons LearnedHeroku Waza 2013 Lessons Learned
Heroku Waza 2013 Lessons Learned
 
Curso de MySQL 5.7
Curso de MySQL 5.7Curso de MySQL 5.7
Curso de MySQL 5.7
 
Twitter power-user HOWTO
Twitter power-user HOWTOTwitter power-user HOWTO
Twitter power-user HOWTO
 
New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12
 
SkySQL Cloud MySQL MariaDB
SkySQL Cloud MySQL MariaDBSkySQL Cloud MySQL MariaDB
SkySQL Cloud MySQL MariaDB
 
Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2Введение в современную PostgreSQL. Часть 2
Введение в современную PostgreSQL. Часть 2
 
Date dimension table - part II
Date dimension table - part IIDate dimension table - part II
Date dimension table - part II
 
Complex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL dataComplex stories about Sqooping PostgreSQL data
Complex stories about Sqooping PostgreSQL data
 
Rethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache DrillRethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache Drill
 
Percona Live Europe 2018 MySQL Group Replication... the magic explained
Percona Live Europe 2018  MySQL Group Replication... the magic explainedPercona Live Europe 2018  MySQL Group Replication... the magic explained
Percona Live Europe 2018 MySQL Group Replication... the magic explained
 

More from Neo4j

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansNeo4j
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...Neo4j
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AINeo4j
 

More from Neo4j (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansQIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
QIAGEN: Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdfNeo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
Neo4j_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdfRabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
Rabobank_Exploring the Impact of Graph Technology on Financial Services.pdf
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)Neo4j: Data Engineering for RAG (retrieval augmented generation)
Neo4j: Data Engineering for RAG (retrieval augmented generation)
 
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdfNeo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
Neo4j Graph Summit 2024 Workshop - EMEA - Breda_and_Munchen.pdf
 
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdfNeo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
Neo4j_Anurag Tandon_Product Vision and Roadmap.Benelux.pptx.pdf
 
Neo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with GraphNeo4j Jesus Barrasa The Art of the Possible with Graph
Neo4j Jesus Barrasa The Art of the Possible with Graph
 
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
SWIFT: Maintaining Critical Standards in the Financial Services Industry with...
 
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AIDeloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
Deloitte & Red Cross: Talk to your data with Knowledge-enriched Generative AI
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

The Inside Scoop on Neo4j: Meet the Builders

  • 1. © 2022 Neo4j, Inc. All rights reserved. The Inside Scoop on Neo4j: Meet the Builders Stu Moore, Product Manager for Neo4j Database YOUR LOGO HERE
  • 2. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. Inside Scoop on Neo4j New ways to query the graph • Node patterns [Gustav] • Querying Fabric [Tobias] Finding information faster • Relationship indexes [Linnea] Overcoming bottlenecks • Relationship chain locks [Valdemar] 2 Meet the Builders:
  • 3. © 2022 Neo4j, Inc. All rights reserved. 3 New ways to query the graph Gustav Hendergran Core Database Engineer
  • 4. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 4 Node pattern predicates What is it? - More advanced pattern matching - A syntactic alternative for Cypher node patterns Where is it used? - MATCH and inside pattern comprehension When to use it? - As expressions become more complex When can't you use it? - MATCH (a:Person)-->(b:Person) WHERE a.age > b.age Improved Node Pattern Matching in Neo4j 4.4
  • 5. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 5 Cypher in Neo4j 4.4 MATCH (n:Person WHERE n.age < 2) RETURN n MATCH (a:Person)-->(b:Person) WHERE a.age > b.age MATCH (n:Person) WHERE n.age < 2 RETURN n MATCH (a:Person)-->(b:Person) WHERE a.age > b.age Cypher before Neo4j 4.4
  • 6. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (p:Person)-->(m:Movie) WHERE p.name STARTS WITH "Bill" AND m.released > 1995 RETURN p.name, m.title, m.released; +-------------------------------------------------------+ | p.name | m.title | m.released | +-------------------------------------------------------+ | "Billy Crystal" | "When Harry Met Sally" | 1998 | | "Bill Paxton" | "Twister" | 1996 | +-------------------------------------------------------+ 6 Node pattern predicates in MATCH before Neo4j 4.4
  • 7. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (p:Person WHERE p.name STARTS WITH "Bill")--> (m:Movie WHERE m.released > 1995) RETURN p.name, m.title, m.released; +-------------------------------------------------------+ | p.name | m.title | m.released | +-------------------------------------------------------+ | "Billy Crystal" | "When Harry Met Sally" | 1998 | | "Bill Paxton" | "Twister" | 1996 | +-------------------------------------------------------+ 7 Node pattern predicates in MATCH in Neo4j 4.4
  • 8. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (a:Person {name: 'Keanu Reeves'}) RETURN [(a)-->(b:Movie)<--(c:Person) WHERE b.released > 1997 AND c.name CONTAINS "Nicholson" | b.title] AS movies; +----------------------------+ | movies | +----------------------------+ | ["Something's Gotta Give"] | +----------------------------+ 8 Pattern comprehension before Neo4j 4.4
  • 9. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (a:Person {name: 'Keanu Reeves'}) RETURN [(a)-->(b:Movie WHERE b.released > 1997)<-- (c:Person WHERE c.name CONTAINS "Nicholson") | b.title] AS movies; +----------------------------+ | movies | +----------------------------+ | ["Something's Gotta Give"] | +----------------------------+ 9 Pattern comprehension in Neo4j 4.4
  • 10. © 2022 Neo4j, Inc. All rights reserved. 10 New ways to query the graph with Fabric Tobias Johansson Core Database Engineer
  • 11. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 11 Why Fabric? A way to… Unlock more business value • Query across multiple graphs -> FEDERATION Operate at scale • Virtually unlimited horizontal scale • Increase performance w/ vertical scale • Improved operations ◦ Manage smaller data sets ◦ Backup / restore • SHARD TB data into 100s GB Hybrid Cloud queries • From Neo4j query across Aura & Neo4j* What is it? • Execute queries in parallel across databases • Chain queries for sophisticated real-time analysis • Query a database composed of other databases
  • 12. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 12 cards shard01 shard02 "Fabric" Database loans shard03 Compose a graph from databases across clusters Cluster01 Cluster02
  • 13. © 2022 Neo4j, Inc. All rights reserved. 13 Fabric a social example TBD: Set the scene for your social fabric example Suggest a data model showing the people and the forums / posts and any info you are going to show in the example etc
  • 14. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 14 people posts1 social posts2 Compose a graph from databases across clusters cluster Fabric database
  • 15. © 2022 Neo4j, Inc. All rights reserved. neo4j@social> CALL { USE social.people MATCH (p:Person {id: 3}) RETURN p.id AS pid } CALL { USE social.posts1 WITH pid MATCH (p:Post {pid: pid}) RETURN p.title AS title } RETURN title; 15 Querying Fabric Returns +----------+ | title | +----------+ | "Post 2" | | "Post 3" | +----------+
  • 16. © 2022 Neo4j, Inc. All rights reserved. neo4j@social> CALL { USE social.people MATCH (p:Person {id: 1})- [:FOLLOWS]->(f) RETURN f.id AS pid, f.name AS name } UNWIND social.graphIds() AS gid CALL { USE social.graph(gid) WITH pid MATCH (p:Post {pid: pid}) RETURN p.title AS title } RETURN gid, name, title; 16 Querying Fabric Returns +---------------------------+ | gid | name | title | +---------------------------+ | 1 | "Daniel" | "Post 4" | | 2 | "Daniel" | "Post 2" | | 1 | "Daniel" | "Post 5" | | 1 | "Daniel" | "Post 6" | | 1 | "Cindy" | "Post 2" | | 2 | "Cindy" | "Post 1" | | 1 | "Cindy" | "Post 3" | +---------------------------+
  • 17. © 2022 Neo4j, Inc. All rights reserved. neo4j@social> UNWIND social.graphIds() AS gid CALL { USE social.graph(gid) MATCH (p:Post) RETURN p.pid AS pid, p.text AS text, size(p.text) AS length ORDER BY length DESC LIMIT 1 } RETURN * ORDER BY length DESC LIMIT 1; 17 Querying Fabric Returns +------------------------------ | gid | length | pid | text +------------------------------ | 2 | 86 | 4 | "A great +------------------------------
  • 18. © 2022 Neo4j, Inc. All rights reserved. 18 Finding information faster Linnéa Andersson, Core Database Engineer
  • 19. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. What it is 19 For Cypher users and Developers looking for a significant performance gain when using MATCH on relationships by type and property Similar to indexes for properties associated to nodes, Neo4j 4.3+ provides native index capabilities for properties associated to relationships. Relationship Type & Property Indexes
  • 20. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. What it is 20 For DBAs and architects who need to optimize performance with indexes. Neo4j 4.3 provided a new index for node label and relationship types. Created by default, when a database is created with empty stores. When stores are imported in a database at creation, existing indexes for labels and types are acquired, administrators can modify them by using CREATE/DROP INDEX commands. Node Label & Relationship Type lookup indexes
  • 21. © 2022 Neo4j, Inc. All rights reserved. 21 Goal: find all the twins in the database (as quickly as possible) Relationship type indexes
  • 22. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (me:Person)-[:TWIN_OF]->(twin:Person) RETURN * +------------------------+-------------------------------+--------+ | Operator | Details | Rows | +------------------------+-------------------------------+--------+ | +ProduceResults@neo4j | me, twin | 3981 | | | +-------------------------------+--------+ | +Filter@neo4j | twin:Person | 3981 | | | +-------------------------------+--------+ | +Expand(All)@neo4j | (me)-[anon_0:TWIN_OF]->(twin) | 3981 | | | +-------------------------------+--------+ | +NodeByLabelScan@neo4j | me:Person | 204870 | +------------------------+-------------------------------+--------+ 22 To find all twins in a Neo4j 4.2 database
  • 23. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (me:Person)-[:TWIN_OF]->(twin:Person) RETURN * +-------------------------------------+-------------------------------+------+ | Operator | Details | Rows | +-------------------------------------+-------------------------------+------+ | +ProduceResults@neo4j | me, twin | 3981 | | | +-------------------------------+------+ | +Filter@neo4j | me:Person AND twin:Person | 3981 | | | +-------------------------------+------+ | +DirectedRelationshipTypeScan@neo4j | (me)-[anon_0:TWIN_OF]->(twin) | 3981 | +-------------------------------------+-------------------------------+------+ 23 To find all twins in a Neo4j 4.2 database
  • 24. © 2022 Neo4j, Inc. All rights reserved. 24 Goal: find all parents on parental leave in the database (as quickly as possible) Relationship property indexes
  • 25. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> MATCH (parent:Person)-[r:PARENT_OF]->(child:Person) WHERE r.on_parental_leave=true return *; +------------------------+---------------------------------------------+--------+ | Operator | Details | Rows | +------------------------+---------------------------------------------+--------+ | +ProduceResults@neo4j | parent, child | 84 | | | +---------------------------------------------+--------+ | +Filter@neo4j | r.on_parental_leave = true AND child:Person | 84 | | | +---------------------------------------------+--------+ | +Expand(All)@neo4j | (parent)-[r:PARENT_OF]->(child) | 102000 | | | +---------------------------------------------+--------+ | +NodeByLabelScan@neo4j | parent:Person | 204872 | +------------------------+---------------------------------------------+--------+ 25 Goal find all parents on parental leave in Neo4j 4.2
  • 26. © 2022 Neo4j, Inc. All rights reserved. neo4j@neo4j> CREATE INDEX parental_leave IF NOT EXISTS FOR ()-[r:PARENT_OF]-() ON ( r.on_parental_leave ); neo4j@neo4j> MATCH (parent:Person)-[r:PARENT_OF]->(child:Person) WHERE r.on_parental_leave=true return *; +-----------------------------+---------------------------------------------------------+-----+ | Operator | Details |Rows | +-----------------------------+---------------------------------------------------------+-----+ | +ProduceResults@neo4j | parent, child | 84 | | | +---------------------------------------------------------+-----+ | +Filter@neo4j | parent:Person AND child:Person | 84 | | | +---------------------------------------------------------+-----+ | +DirectedRelationshipIndexS*| BTREE INDEX (parent)-[r:PARENT_OF(on_parental_leave)]-> | 84 | | | (child) WHERE on_parental_leave = true | | +-----------------------------+---------------------------------------------------------+-----+ *Abbreviated from DirectedRelationshipIndexScan@neo4j 26 Find all the parents on leave in Neo4j 4.3+
  • 27. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. Relationship type/property planning 27 Relationship must have type specified. MATCH (me)-[knows:KNOWS]->(friend)- [married:MARRIED_TO]->(friendSpouse) :TYPE MATCH (me)-[r]->(friend)-[m]->(friendSpouse) The following wont work
  • 28. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. WHERE knows.since IS NOT NULL WHERE knows.since = 2010 WHERE knows.since IN [2010, 2020] WHERE knows.since > 2010 WHERE 2000 < knows.since < 2010 WHERE married.witnessed_by STARTS WITH “Dr” WHERE distance(knows.met_first, point({x:1,y:2})) < 2 Relationship type/property planning 28 • Composite indexes are supported. • Can solve all the same predicates as node indexes WHERE married.witnessed_by ENDS WITH “Who” WHERE married.witnessed_by CONTAINS “Who” Following supported by "lucene+btree-3.0" index provider only Follow with any one of the following WHERE statements
  • 29. © 2022 Neo4j, Inc. All rights reserved. 29 Overcoming bottlenecks in the model How Neo4j solves for dense nodes, so you don't have to redesign your model
  • 30. © 2022 Neo4j, Inc. All rights reserved. 30 Dense node (un)locking in Neo4j 4.3 Valdemar Roxling, Core Database Engineer
  • 31. © 2022 Neo4j, Inc. All rights reserved. ... Bob Bob Bob Bob Bob Dense nodes Logical representation GraphConnect Valdemar SPEAKS_AT Bob Bob Bob Bob Bob Bob Alice
  • 32. © 2022 Neo4j, Inc. All rights reserved. ... Bob Bob Bob Bob Bob Dense nodes Logical representation GraphConnect Valdemar SPEAKS_AT Bob Bob Bob Bob Bob Bob Alice Node store Relationship Group store Relationship store Graph Connect SPEAKS_AT ATTENDS_TO R1 R2 R3 Rx ... Ry Physical representation (seen from dense node)
  • 33. © 2022 Neo4j, Inc. All rights reserved. Locking problem Relationships additions/removals prevents any other concurrent changes to either affected node GraphConnect Bob TX1
  • 34. © 2022 Neo4j, Inc. All rights reserved. Locking problem Relationships additions/removals prevents any other concurrent changes to either affected node GraphConnect Bob TX1 Holds
  • 35. © 2022 Neo4j, Inc. All rights reserved. Locking problem Relationships additions/removals prevents any other concurrent changes to either affected node GraphConnect Bob Alice TX1 TX2 Holds
  • 36. © 2022 Neo4j, Inc. All rights reserved. Locking problem Relationships additions/removals prevents any other concurrent changes to either affected node GraphConnect Bob Alice TX1 TX2 Holds
  • 37. © 2022 Neo4j, Inc. All rights reserved. Granular locking Only lock what is necessary to preserve data integrity R1 R2 R3 R4 R5 R6 R7
  • 38. © 2022 Neo4j, Inc. All rights reserved. Granular locking Only lock what is necessary to preserve data integrity R1 R2 R3 R4 R5 R6 R7 TX1
  • 39. © 2022 Neo4j, Inc. All rights reserved. Granular locking Only lock what is necessary to preserve data integrity R1 R2 R3 R4 R5 R6 R7 TX1 TX2
  • 40. © 2022 Neo4j, Inc. All rights reserved. Granular locking Only lock what is necessary to preserve data integrity R1 R2 R3 R4 R1 R2 Rtx1 R3 R4 R5 R6 R7 TX1 TX2 R5 Rtx2 R6 R7 TX1 TX2
  • 41. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. Concurrent modifications made total throughput lower. Why? 41
  • 42. © 2022 Neo4j, Inc. All rights reserved. Deadlocks More granular locks increases the risk of locks taken “out of order” Transaction 1 Transaction 2
  • 43. © 2022 Neo4j, Inc. All rights reserved. Deadlocks More granular locks increases the risk of locks taken “out of order” Transaction 1 1 Transaction 2
  • 44. © 2022 Neo4j, Inc. All rights reserved. Deadlocks More granular locks increases the risk of locks taken “out of order” Transaction 1 1 Transaction 2 2
  • 45. © 2022 Neo4j, Inc. All rights reserved. Deadlocks More granular locks increases the risk of locks taken “out of order” Transaction 1 1 2 Transaction 2 2 Wait for
  • 46. © 2022 Neo4j, Inc. All rights reserved. Deadlocks More granular locks increases the risk of locks taken “out of order” Transaction 1 1 2 Transaction 2 1 2 Wait for Deadlock!
  • 47. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx()
  • 48. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx() denseNode.createRelationshipTo(node) 4 5
  • 49. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx() denseNode.createRelationshipTo(node) denseNode.createRelationshipTo(otherNode) 4 5 2
  • 50. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx() denseNode.createRelationshipTo(node) denseNode.createRelationshipTo(otherNode) 4 5 2 1 doWork() 3
  • 51. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx() tx.commit() Commit denseNode.createRelationshipTo(node) denseNode.createRelationshipTo(otherNode) 1 2 3 4 5 doWork()
  • 52. © 2022 Neo4j, Inc. All rights reserved. Sorting locks Taking locks in specified order eliminates deadlocks Transaction db.beginTx() tx.commit() Commit denseNode.createRelationshipTo(node) denseNode.createRelationshipTo(otherNode) 1 2 3 4 5 doWork()
  • 53. © 2022 Neo4j, Inc. All rights reserved. Summary • Granular locking on dense nodes ◦ Allows concurrent additions/deletions • Reworked locking scheme with sorted locks ◦ Greatly reduces risk of unexpected deadlocks ◦ Holds locks for a shorter duration
  • 54. © 2022 Neo4j, Inc. All rights reserved. 54 Thank you! Contact us at sales@neo4j.com YOUR LOGO HERE

Editor's Notes

  1. Node patterns with predicates on properties How to query a graph that is federated or composed of shards Relationship type & property indexes
  2. new (variables in previous MATCH can be used) Tease quantified path patterns in 5.0? Yes we can allude to general improvements
  3. Stu present But not visa versa - you cant query from Aura to self-managed using Fabric
  4. Stu present
  5. Tobias present
  6. 4.2: NodeLabelScanStore 4.3 lookup indexes for node labels and relationship types. The node label lookup index is very similar to the nodeLabelScanStore, whereas the relationship type lookup index is new. The indexes are created by default (when a database is created with empty stores). If stores are imported on database creation, the node label lookup index will be created (since it was there in previous versions but as label scan store). However, no relationship type index will be created, since there was no such index in 4.2. It is possible to create/drop indexes using cypher commands - you can find out how in the cypher documentation.
  7. *
  8. *