graphconnect 2014 sf: applying the graphaware framework

Post on 24-Jun-2015

324 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

GraphConnect 2014 SF: Applying the GraphAware Framework

TRANSCRIPT

GraphAware Frameworkadvanced Neo4j use cases

!!

Michal Bachman @graph_aware

SAN FRANCISCO | 10.22.2014

powered by

GraphAwareTM

GraphAwareTM

Advanced Use Cases

GraphAware Framework (implementing advanced functionality)

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

About this Talk

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

GraphAwareTM

a.k.a. “unmanaged extensions”

“Stored procedures” on steroids

Implemented and tested (!) in Java

Deployed with Neo4j (same lifecycle)

Custom APIs - What?

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

Custom APIs - Why?

GraphAwareTM

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

Custom APIs (How?)

GraphAwareTM

pure Spring MVC

test with GraphUnit

drop to plugins

restart Neo

Custom APIs - How? (GraphAware)

GraphAwareTM

representing time in Neo4j

storing and querying time series data

GraphAware TimeTree

Custom APIs - Example

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

GraphAwareTM

TimeTree Demo

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

GraphAwareTM

Neo4j is fully ACID

“Triggers” on steroids

Implemented and tested (!) in Java

Transaction-Driven Behaviour - What?

GraphAwareTM

Integrations with other systems

In-graph indexing

Additional modifications

Schema enforcement

Transaction-Driven Behaviour - Why?

GraphAwareTM

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

Transaction-Driven Behaviour (How?)

GraphAwareTM

Tracking changes in your graph (demo)

Assigning a UUID to each node (demo)

Defining and enforcing constraints (wip)

Auditing

Transaction-Driven Behaviour - Examples

GraphAwareTM

Transaction-Driven Behaviour - Demo

GraphAwareTM

Custom APIs

Transaction-Driven Behaviour

Asynchronous Computation

Advanced Use Cases

GraphAwareTM

Neo4j is primarily OLTP

Requests drive transactions

How about background computation?

Asynchronous Computation - What?

GraphAwareTM

Interesting graph algorithms

Expensive in real-time

Can be approximate

Can be approximated

There are quiet periods / dedicated slaves

Asynchronous Computation - Why?

GraphAwareTM

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

Asynchronous Computation (How?)

GraphAwareTM

Page Rank

Recommendations

Similarities

Centralities

Statistics

Asynchronous Computation - Examples

GraphAwareTM

Asynchronous Computation - Demo

GraphAwareTM

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

GraphAware Framework

GraphAwareTM

TimeTree

Algorithms

ChangeFeed

UUID

NodeRank

GraphAware Framework

GraphAwareTM

GraphUnit & RestTest

RelCount

WarmUp

Schema (wip)

Recommendation Engine (wip)

GraphAware Framework

GraphAwareTM

Open Source (GPL)

Active

Production Ready

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

Our Web (http://graphaware.com)

Maven Central

GraphAware Framework

GraphAwareTM

Try it

Give us feedback

Contribute

Build Own Modules

Get in touch for consultancy / support

info@graphaware.com / @graph_aware

GraphAware Framework

GraphAwareTM

www.graphaware.com @graph_aware @bachmanm

Thank You!

top related