GraphAware Framework Intro

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

description

GraphConnect San Francisco 2014

Transcript of GraphAware Framework Intro

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!