Top Banner
GraphAware Framework advanced Neo4j use cases Michal Bachman @graph_aware SAN FRANCISCO | 10.22.2014 powered by GraphAware TM
29

GraphAware Framework Intro

Nov 28, 2014

Download

Software

bachmanm

GraphConnect San Francisco 2014
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GraphAware Framework Intro

GraphAware Frameworkadvanced Neo4j use cases

!!

Michal Bachman @graph_aware

SAN FRANCISCO | 10.22.2014

powered by

GraphAwareTM

Page 2: GraphAware Framework Intro

GraphAwareTM

Advanced Use Cases

GraphAware Framework (implementing advanced functionality)

GraphAware Framework Modules (built by us, used by you)

About this Talk

Page 3: GraphAware Framework Intro

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

Page 4: GraphAware Framework Intro

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

Page 5: GraphAware Framework Intro

GraphAwareTM

a.k.a. “unmanaged extensions”

“Stored procedures” on steroids

Implemented and tested (!) in Java

Deployed with Neo4j (same lifecycle)

Custom APIs - What?

Page 6: GraphAware Framework Intro

GraphAwareTM

Access to native Neo4j API (Java)

Performance

Locking

Too complex for Cypher

Functions missing in Cypher

Custom input/output format

Limit to read-only

Code to Data

Custom APIs - Why?

Page 7: GraphAware Framework Intro

GraphAwareTM

GraphAware Framework makes it extremely easy to build, test, and deploy custom Neo4j APIs.

Custom APIs (How?)

Page 8: GraphAware Framework Intro

GraphAwareTM

pure Spring MVC

test with GraphUnit

drop to plugins

restart Neo

Custom APIs - How? (GraphAware)

Page 9: GraphAware Framework Intro

GraphAwareTM

representing time in Neo4j

storing and querying time series data

GraphAware TimeTree

Custom APIs - Example

Page 10: GraphAware Framework Intro

from: "..@.."to: "..@.."text: "…"

Email

value: 24

Day

SENT_ON

value: 23

Day

value: 22

Day

NEXTNEXT

value: 4

Month

value: 5

Month

NEXTFIRST

LAST

CHILD

CHILD

CHILD

value: 2014

Year

FIRSTLAST

CHILD

CHILD

TimeTreeRoot

CHILD

FIRST

LAST

Page 11: GraphAware Framework Intro

GraphAwareTM

TimeTree Demo

Page 12: GraphAware Framework Intro

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

Page 13: GraphAware Framework Intro

GraphAwareTM

Neo4j is fully ACID

“Triggers” on steroids

Implemented and tested (!) in Java

Transaction-Driven Behaviour - What?

Page 14: GraphAware Framework Intro

GraphAwareTM

Integrations with other systems

In-graph indexing

Additional modifications

Schema enforcement

Transaction-Driven Behaviour - Why?

Page 15: GraphAware Framework Intro

GraphAwareTM

GraphAware Framework makes it extremely easy to build, test, and deploy custom Transaction-Driven functionality.

Transaction-Driven Behaviour (How?)

Page 16: GraphAware Framework Intro

GraphAwareTM

Tracking changes in your graph (demo)

Assigning a UUID to each node (demo)

Defining and enforcing constraints (wip)

Auditing

Transaction-Driven Behaviour - Examples

Page 17: GraphAware Framework Intro

GraphAwareTM

Transaction-Driven Behaviour - Demo

Page 18: GraphAware Framework Intro

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

Page 19: GraphAware Framework Intro

GraphAwareTM

Neo4j is primarily OLTP

Requests drive transactions

How about background computation?

Asynchronous Computation - What?

Page 20: GraphAware Framework Intro

GraphAwareTM

Interesting graph algorithms

Expensive in real-time

Can be approximate

Can be approximated

There are quiet periods / dedicated slaves

Asynchronous Computation - Why?

Page 21: GraphAware Framework Intro

GraphAwareTM

GraphAware Framework makes it possible to build, test, and deploy functionality executed in the background during quiet periods.

Asynchronous Computation (How?)

Page 22: GraphAware Framework Intro

GraphAwareTM

Page Rank

Recommendations

Similarities

Centralities

Statistics

Asynchronous Computation - Examples

Page 23: GraphAware Framework Intro

GraphAwareTM

Asynchronous Computation - Demo

Page 24: GraphAware Framework Intro

GraphAwareTM

GraphAware Framework makes it easy to build, test, and deploy generic as well as domain-specific functionality for Neo4j.

GraphAware Framework

Page 25: GraphAware Framework Intro

GraphAwareTM

TimeTree

Algorithms

ChangeFeed

UUID

NodeRank

GraphAware Framework

Page 26: GraphAware Framework Intro

GraphAwareTM

GraphUnit & RestTest

RelCount

WarmUp

Schema (wip)

Recommendation Engine (wip)

GraphAware Framework

Page 27: GraphAware Framework Intro

GraphAwareTM

Open Source (GPL)

Active

Production Ready

Github (http://github.com/graphaware)

Our Web (http://graphaware.com)

Maven Central

GraphAware Framework

Page 28: GraphAware Framework Intro

GraphAwareTM

Try it

Give us feedback

Contribute

Build Own Modules

Get in touch for consultancy / support

[email protected] / @graph_aware

GraphAware Framework

Page 29: GraphAware Framework Intro

GraphAwareTM

www.graphaware.com @graph_aware @bachmanm

Thank You!