GraphConnect 2014 SF: Applying the GraphAware Framework
1. GraphAware Framework
advanced Neo4j use cases
!
!
Michal Bachman
@graph_aware
SAN FRANCISCO | 10.22.2014
powered by
GraphAwareTM
2. Advanced Use Cases
GraphAware Framework (implementing advanced functionality)
GraphAware Framework Modules (built by us, used by you)
GraphAwareTM
About this Talk
5. GraphAwareTM
Custom APIs - What?
a.k.a. “unmanaged extensions”
“Stored procedures” on steroids
Implemented and tested (!) in Java
Deployed with Neo4j (same lifecycle)
6. GraphAwareTM
Custom APIs - Why?
Access to native Neo4j API (Java)
Performance
Locking
Too complex for Cypher
Functions missing in Cypher
Custom input/output format
Limit to read-only
…
7. GraphAware Framework makes it extremely easy
to build, test, and deploy custom Neo4j APIs.
GraphAwareTM
Custom APIs (How?)
8. Custom APIs - How? (GraphAware)
GraphAwareTM
pure Spring MVC
test with GraphUnit
drop to plugins
restart Neo
9. GraphAwareTM
Custom APIs - Example
representing time in Neo4j
storing and querying time series data
GraphAware TimeTree
10. Email
Month
from: "..@.."
to: "..@.."
text: "…"
Year
Day
value: 24
SENT_ON
Month
value: 4
Day
value: 23
Day
value: 22
CHILD
NEXT NEXT
value: 5
FIRST NEXT
LAST
CHILD
CHILD
value: 2014
FIRST
LAST
CHILD
CHILD
TimeTreeRoot
CHILD
FIRST
LAST
13. Transaction-Driven Behaviour - What?
GraphAwareTM
Neo4j is fully ACID
“Triggers” on steroids
Implemented and tested (!) in Java
14. Transaction-Driven Behaviour - Why?
GraphAwareTM
Integrations with other systems
In-graph indexing
Additional modifications
Schema enforcement
15. Transaction-Driven Behaviour (How?)
GraphAware Framework makes it extremely easy
to build, test, and deploy custom Transaction-
Driven functionality.
GraphAwareTM
16. Transaction-Driven Behaviour - Examples
GraphAwareTM
Tracking changes in your graph (demo)
Assigning a UUID to each node (demo)
Defining and enforcing constraints (wip)
Auditing
…
19. Asynchronous Computation - What?
GraphAwareTM
Neo4j is primarily OLTP
Requests drive transactions
How about background computation?
20. Asynchronous Computation - Why?
GraphAwareTM
Interesting graph algorithms
Expensive in real-time
Can be approximate
Can be approximated
There are quiet periods / dedicated slaves
21. Asynchronous Computation (How?)
GraphAware Framework makes it possible to
build, test, and deploy functionality executed in
the background during quiet periods.
GraphAwareTM
24. GraphAware Framework makes it easy to build,
test, and deploy generic as well as domain-specific
functionality for Neo4j.
GraphAwareTM
GraphAware Framework
27. GraphAwareTM
GraphAware Framework
Open Source (GPL)
Active
Production Ready
Github (http://github.com/graphaware)
Our Web (http://graphaware.com)
Maven Central
28. GraphAwareTM
GraphAware Framework
Try it
Give us feedback
Contribute
Build Own Modules
Get in touch for consultancy / support
info@graphaware.com / @graph_aware