titan: the rise of big graph data

181
TITAN MARKO A. RODRIGUEZ MATTHIAS BROECHELER http://THINKAURELIUS.COM THE RISE OF BIG GRAPH DATA

Upload: marko-rodriguez

Post on 08-Sep-2014

74.563 views

Category:

Technology


6 download

DESCRIPTION

A graph is a data structure composed of vertices/dots and edges/lines. A graph database is a software system used to persist and process graphs. The common conception in today's database community is that there is a tradeoff between the scale of data and the complexity/interlinking of data. To challenge this understanding, Aurelius has developed Titan under the liberal Apache 2 license. Titan supports both the size of modern data and the modeling power of graphs to usher in the era of Big Graph Data. Novel techniques in edge compression, data layout, and vertex-centric indices that exploit significant orders are used to facilitate the representation and processing of a single atomic graph structure across a multi-machine cluster. To ensure ease of adoption by the graph community, Titan natively implements the TinkerPop 2 Blueprints API. This presentation will review the graph landscape, Titan's techniques for scale by distribution, and a collection of satellite graph technologies to be released by Aurelius in the coming summer months of 2012.

TRANSCRIPT

Page 1: Titan: The Rise of Big Graph Data

TITAN

MARKO A. RODRIGUEZMATTHIAS BROECHELER

http://THINKAURELIUS.COM

THE RISE OF BIG GRAPH DATA

Page 2: Titan: The Rise of Big Graph Data

A graph is a data structure composed of vertices/dots and edges/lines. A graph database is a software system used to persist and process graphs. The common conception in today's database community is that there is a tradeoff between the scale of data and the complexity/interlinking of data. To challenge this understanding, Aurelius has developed Titan under the liberal Apache 2 license. Titan supports both the size of modern data and the modeling power of graphs to usher in the era of Big Graph Data. Novel techniques in edge compression, data layout, and vertex-centric indices that exploit significant orders are used to facilitate the representation and processing of a single atomic graph structure across a multi-machine cluster. To ensure ease of adoption by the graph community, Titan natively implements the TinkerPop 2 Blueprints API. This presentation will review the graph landscape, Titan's techniques for scale by distribution, and a collection of satellite graph technologies to be released by Aurelius in the coming summer months of 2012.

ABSTRACT

Page 3: Titan: The Rise of Big Graph Data

Dr. Marko A. Rodriguez is the founder of the graph consulting firm Aurelius. He has focused his academic and commercial career on the theoretical and applied aspects of graphs. Marko is a cofounder of TinkerPop and the primary developer of the Gremlin graph traversal language.

Dr. Matthias Broecheler has been researching and developing large-scale graph database systems for many years in both academia and in his role as a cofounder of the Aurelius graph consulting firm. He is the primary developer of the distributed graph database Titan. Matthias focuses most of his time and effort on novel OLTP and OLAP graph processing solutions.

SPEAKER BIOGRAPHIES

Page 4: Titan: The Rise of Big Graph Data

SPONSORS

As the leading education services company, Pearson is serious about evolving how the world learns. We apply our deep education experience and research, invest in innovative technologies, and promote collaboration throughout the education ecosystem. Real change is our commitment and its results are delivered through connecting capabilities to create actionable, scalable solutions that improve access, affordability, and achievement.

Aurelius is a team of software engineers and scientists committed to applying graph theory and network science to problems in numerous domains. Aurelius develops the theory and technology whereby graphs can be used to model, understand, predict, and influence the behavior of complex, interrelated social, economic, and physical networks.

Jive is the pioneer and world's leading provider of social business solutions. Our products apply powerful technology that helps people connect, communicate and collaborate to get more work done and solve their biggest business challenges. Millions of users and many of the worldʼs most successful companies rely on Jive day in and day out to get work done, serve their customers and stay ahead of their competitors.

Page 5: Titan: The Rise of Big Graph Data

1. ThE GRAPH LANDSCAPE

OUTLINE

2. INTRODUCTION TO TITAN

3. THE FUTURE OF AURELIUS

An introduction to graph computing.Graph technologies on the market today.

Getting up and running with Titan.Titan's techniques for scalability.

Satellite technologies and the OLAP story.The graph landscape reprise.

Page 6: Titan: The Rise of Big Graph Data

PART 1: ThE GRAPH LANDSCAPE

MARKO A. RODRIGUEZ

Page 7: Titan: The Rise of Big Graph Data

GRAPH

Page 8: Titan: The Rise of Big Graph Data

VERTEXEDGE

GRAPH

Page 9: Titan: The Rise of Big Graph Data

VERTEXEDGE

GRAPH

G = (V, E)Graph Vertices Edges

Page 10: Titan: The Rise of Big Graph Data

G = (V, E)Classic Textbook Graph Structure

Page 11: Titan: The Rise of Big Graph Data

V

A homogenous set of vertices...

Page 12: Titan: The Rise of Big Graph Data

E

...connected by a homogenous set of edges.

Page 13: Titan: The Rise of Big Graph Data

RESTRICTED MODELING

People and follows relationships...

Page 14: Titan: The Rise of Big Graph Data

RESTRICTED MODELING

People and follows relationships... ...xor webpages and citations.

Page 15: Titan: The Rise of Big Graph Data

AN INTEGRATED MODEL

IS TYPICALLY DESIRED

mentions

follows

references

references

createdBy

references

follows

Page 16: Titan: The Rise of Big Graph Data

AN INTEGRATED MODEL

IS USEFUL

mentions

follows

references

references

createdBy

references

follows

Allows for more interesting/novel algorithms.

Allows for a universal model of things and their relationships.

(beyond "textbook" graph algorithms)

(a single, unified model of a domain of interest)

Page 17: Titan: The Rise of Big Graph Data

THE PROPERTY GRAPH

Current Popular Graph StructureG = (V, E, λ)

* Directed, attributed, edge-labeled graph* Multi-relational graph with key/value pairs on the elements

Page 18: Titan: The Rise of Big Graph Data

VERTEX

Page 19: Titan: The Rise of Big Graph Data

VERTEX

name:hercules

PROPERTIES

Page 20: Titan: The Rise of Big Graph Data

VERTEX

name:hercules

PROPERTIES

KEY VALUE

Page 21: Titan: The Rise of Big Graph Data

name:hercules

Page 22: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

Page 23: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

EDGE

LABEL

Page 24: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

Page 25: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

name:jupitertype:god

father

Page 26: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

name:jupitertype:god

father

IS HERCULES A DEMIGOD?

DEMIGOD = HALF HUMAN + HALF GOD

Page 27: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

name:jupitertype:god

father

gremlin> hercules==>v[0]

Page 28: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

name:jupitertype:god

father

gremlin> hercules.out('mother','father')==>v[1]==>v[2]

Page 29: Titan: The Rise of Big Graph Data

name:hercules

mother

name:alcmene type:human

name:jupitertype:god

father

gremlin> hercules.out('mother','father').type==>human==>god

DEMIGOD = HALF HUMAN + HALF GOD

Page 30: Titan: The Rise of Big Graph Data

name:herculestype:demigod

mother

name:alcmene type:human

name:jupitertype:god

father

gremlin> hercules.type = 'demigod'==>demigod

DEMIGOD = HALF HUMAN + HALF GOD

Page 31: Titan: The Rise of Big Graph Data

STRUCTURE

PROCESS

COMPUTING

Page 32: Titan: The Rise of Big Graph Data

GRAPH

TRAVERSAL

STRUCTURE

PROCESS

COMPUTING

Page 33: Titan: The Rise of Big Graph Data

GRAPH

TRAVERSAL

STRUCTURE

PROCESS

COMPUTING GRAPH-BASEDCOMPUTING

Page 34: Titan: The Rise of Big Graph Data

WhY GRAPH-BASED COMPUTING?

Page 35: Titan: The Rise of Big Graph Data

INTUITIVE MODELING

WhY GRAPH-BASED COMPUTING?

Page 36: Titan: The Rise of Big Graph Data

INTUITIVE MODELING

EXPRESSIVE QUERYING

WhY GRAPH-BASED COMPUTING?

Page 37: Titan: The Rise of Big Graph Data

INTUITIVE MODELING

EXPRESSIVE QUERYING

NUMEROUS ANALYSES

Centrality

Mixing Patterns

GeodesicsPath Expressions

RankingInferenceMotifs

Scoring

WhY GRAPH-BASED COMPUTING?

Page 38: Titan: The Rise of Big Graph Data

f( )→

ANALYSES ARE THE EPIPHENOMENA OF TRAVERSAL

Page 39: Titan: The Rise of Big Graph Data

WHAT IS THE SIGNIFICANCE OF GRAPH ANALYSIS?

Page 40: Titan: The Rise of Big Graph Data

ANALYSES YIELD INSIGHTS ABOUT THE MODEL

=

DATA

PRODUCTS

DATA-DRIVEN

DECISION SUPPORT

Page 41: Titan: The Rise of Big Graph Data

RECOMMENDATION

People you may know.

Products you might like.

Movies you should watch and the friends you should watch them with.

SOCIAL GRAPH

RATINGS GRAPH

SOCIAL+RATINGSGRAPH

Page 42: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

WHO ELSE MIGHT HERCULES KNOW?

Page 43: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

gremlin> hercules==>v[0]

Page 44: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

gremlin> hercules.out('knows')==>v[1]==>v[2]==>v[3]

Page 45: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

gremlin> hercules.out('knows').out('knows')==>v[4]==>v[5]==>v[5]==>v[6]==>v[5]

Page 46: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

gremlin> hercules.out('knows').out('knows').groupCount.cap==>v[4]=1==>v[5]=3==>v[6]=1

Page 47: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

knows

HERCULES PROBABLY KNOWS NEPTUNE

Page 48: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

knows

HERCULES PROBABLY KNOWS NEPTUNE

THIS IS A "TEXTBOOK STYLE" GRAPH

Page 49: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

...PROBABLY MORE SO WHEN OTHER TYPES OF EDGES ARE ANALYZED

HERCULES PROBABLY KNOWS NEPTUNE

Page 50: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

Page 51: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

likes

Page 52: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

likes

SOCIAL GRAPH

Page 53: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

SOCIAL GRAPH

Page 54: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

likes

likes

SOCIAL GRAPH

Page 55: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

likes

likes

8

tartarus

SOCIAL GRAPH

Page 56: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

likes

likes

8

likes likes

tartarus

dislikes

SOCIAL GRAPH

Page 57: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

likes

likes

8

likes likes

tartarus

dislikes

SOCIAL GRAPH

RATINGS GRAPH

Page 58: Titan: The Rise of Big Graph Data

0 2

hercules

1

3

5

4

6

cerberus

nemean

hydra

knows

knows

knows

pluto

neptune

jupiter

knows

knows

knows

knows

knows

father

brother

7

human flesh

likes

likes

likes

composedOf

8

likes likes

tartarus

dislikes

NEMEAN MIGHT LIKE TARTARUS

smellsOf

SOCIAL GRAPH

RATINGS GRAPH

PRODUCT GRAPH

* Collaborative Filtering + Content-Based Recommendation

Page 59: Titan: The Rise of Big Graph Data

PATH FINDING

How is this person related to this film?

Which authors of this book also wrote a New York Times bestseller?

Which movies are based on a book by a New York Times bestseller?

MOVIE GRAPH

BOOK GRAPH

MOVIE+BOOKGRAPH

Page 60: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 61: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules==>v[0]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 62: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn')==>v[7]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 63: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie')==>v[7]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 64: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor')==>v[8]==>v[10]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 65: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role')==>v[0]==>v[6]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 66: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules)==>v[0]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 67: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules).back(2)==>v[8]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 68: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules).back(2).out('actor')==>v[9]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 69: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules).back(2).out('actor') .as('star')==>v[9]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie star

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 70: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules).back(2).out('actor') .as('star').select==>[movie:v[7], star:v[9]]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie star

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 71: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

gremlin> hercules.out('depictedIn').as('movie').out('hasActor') .out('role').retain(hercules).back(2).out('actor') .as('star').select{it.name}==>[movie:hercules in new york, star:arnold schwarzenegger]

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

movie star

WHO PLAYED HERCULES IN WHAT MOVIE?

Page 72: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

Page 73: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

Page 74: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

depictedIn

Page 75: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

Page 76: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

14

albuquerquelivesIn

Page 77: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

14

albuquerquelivesIn

1525-North

santa fe

Page 78: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

14

albuquerquelivesIn

1525-North

santa fe

16

markorodriguez

livesIn

Page 79: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

14

albuquerquelivesIn

1525-North

santa fe

16

markorodriguez

livesIn

thinksHeIs

Page 80: Titan: The Rise of Big Graph Data

0

hercules

arnoldschwarzenegger

hasActor7

hercules in new york

depictedIn

10 8actor

role

9hasActor

6

role

jupiter

ernestgraves

actor11

depictedIn

12 the arms ofhercules

fredsaberhagen

13

depictedIn

writtenBy

14

albuquerquelivesIn

1525-North

santa fe

16

markorodriguez

livesIn

thinksHeIs

MOVIE GRAPH

BOOK GRAPH

TRANSPORTATION GRAPH

PROFILE GRAPH

Page 81: Titan: The Rise of Big Graph Data

SOCIAL INFLUENCE

Who are the most influential people in java, mathematics, art, surreal art, politics, ...?

Which region of the social graph will propagate this advertisement this furthest?

Which 3 experts should review this submitted article?

Which people should I talk to at the upcoming conference and what topics should I talk to them about?

SOCIAL + COMMUNICATION + EXPERTISE + EVENT GRAPH

Page 82: Titan: The Rise of Big Graph Data

PATTERN IDENTIFICATION

This connectivity pattern is a sign of financial fraud. When this motif is found, a red flag will be raised.

Healthy discourse is typified by a discussion board with a branch factor in this range and a concept clique score in this range.

TRANSACTION GRAPH

DISCUSSION GRAPH

Page 83: Titan: The Rise of Big Graph Data

KNOWLEDGE DISCOVERY

The terms "ice", "fans", "stanley cup," are classified as "sports"

Given that all identified birds fly, it can be deduced that all birds fly. If contrary evidence is provided, then this "fact" can be retracted.

WIKIPEDIA GRAPH

EVIDENTIAL LOGIC GRAPH

Page 84: Titan: The Rise of Big Graph Data

WORLD MODEL

Page 85: Titan: The Rise of Big Graph Data

WORLD MODEL

WORLD PROCESSES

Page 86: Titan: The Rise of Big Graph Data

WORLD MODEL

WORLD PROCESSES

A single world model and various types of traversers moving through that model to solve problems.

Page 87: Titan: The Rise of Big Graph Data

GRAPH

TRAVERSAL

STRUCTURE

PROCESS

COMPUTING GRAPH-BASEDCOMPUTING

Page 88: Titan: The Rise of Big Graph Data

GRAPH COMPUTINGENGINES

Page 89: Titan: The Rise of Big Graph Data

MEMORY-BASED GRAPHS

Application

iGraphhttp://igraph.sourceforge.net/

NetworkXhttp://networkx.lanl.gov/

JUNGhttp://jung.sourceforge.net/

Graph Framework

Page 90: Titan: The Rise of Big Graph Data

Application Application

DISK-BASED GRAPHS

Application

Neo4jhttp://neo4j.org/

OrientDBhttp://orientdb.org

Graph Database

InfiniteGraphhttp://objectivity.com

DEXhttp://www.sparsity-technologies.com/dex

Page 91: Titan: The Rise of Big Graph Data

CLUSTER-BASED GRAPHS

Hamahttp://incubator.apache.org/hama/

Giraphhttp://incubator.apache.org/giraph/

GoldenOrbhttp://goldenorbos.org/

Application

3

Application

2

Application

1

Bulk Synchronous Parallel Processing

* In the same spirit as Google's Pregel

Page 92: Titan: The Rise of Big Graph Data

MEMORY-bASED GRAPHS

Graph size is constrained by local machine's RAM.Rich graph algorithm and visualization packages.Oriented towards "textbook-style" graphs.

* Based on typical behavior

Page 93: Titan: The Rise of Big Graph Data

MEMORY-bASED GRAPHS

DISK-BASED GRAPHS

Graph size is constrained by local machine's RAM.Rich graph algorithm and visualization packages.Oriented towards "textbook-style" graphs.

Graph size is constrained by local disk.Optimized for local graph algorithms.Oriented towards property graphs.

* Based on typical behavior

Page 94: Titan: The Rise of Big Graph Data

MEMORY-bASED GRAPHS

DISK-BASED GRAPHS

CLUSTER-BASED GRAPHS

Graph size is constrained by local machine's RAM.Rich graph algorithm and visualization packages.Oriented towards "textbook-style" graphs.

Graph size is constrained by local disk.Optimized for local graph algorithms.Oriented towards property graphs.

Graph size is constrained to cluster's total RAM.Optimized for global graph algorithms.Oriented towards "textbook-style" graphs.

* Based on typical behavior

Page 95: Titan: The Rise of Big Graph Data

TINKERPOP

Open source graph product groupSupport for various graph vendors

Provides a vendor-agnostic graph framework

* Encompassing the various graph computing styles

Simple, well-defined products

* Based on future directionshttp://tinkerpop.com

Page 96: Titan: The Rise of Big Graph Data

TINKERPOP

Generic Graph API

Dataflow Processing

TraversalLanguage

Object-GraphMapper

GraphAlgorithms

GraphServer

http://tinkerpop.com

http://${project.name}.tinkerpop.com

Page 97: Titan: The Rise of Big Graph Data

TINKERPOP INTEGRATION

http://tinkerpop.com

Page 98: Titan: The Rise of Big Graph Data

AND NOW THERE IS ANOTHER...

Page 99: Titan: The Rise of Big Graph Data
Page 100: Titan: The Rise of Big Graph Data
Page 101: Titan: The Rise of Big Graph Data
Page 102: Titan: The Rise of Big Graph Data
Page 103: Titan: The Rise of Big Graph Data
Page 104: Titan: The Rise of Big Graph Data

TITAN

Page 105: Titan: The Rise of Big Graph Data

PART 2: INTRODUCTION TO TITAN

MATTHIAS BROECHELER

Page 106: Titan: The Rise of Big Graph Data

...need to represent and process graphs at the 100+ billion edge scale w/ thousands of concurrent transactions.

...desire a free, open source distributed graph database.

...need both local graph traversals (OLTP) and batch graph processing (OLAP).

WhY CREATE TITAN?

A number of Aurelius' clients...

Page 107: Titan: The Rise of Big Graph Data

..."infinite size" graphs and "unlimited" users by means of a distributed storage engine.

...distribution via the liberal, free, open source Apache2 license.

...real-time local traversals (OLTP) and support for global batch processing via Hadoop (OLAP).

TITAN's KEY FEATURES

Titan provides...

Page 108: Titan: The Rise of Big Graph Data

matthias$

Page 109: Titan: The Rise of Big Graph Data

matthias$ wget http://thinkaurelius/titan.zip % Total % Received % Xferd Average Speed Time Time 100 99999 0 99999 0 0 11078 0 --:--:-- 0:01:01matthias$

Page 110: Titan: The Rise of Big Graph Data

matthias$ wget http://thinkaurelius/titan.zip % Total % Received % Xferd Average Speed Time Time 100 99999 0 99999 0 0 11078 0 --:--:-- 0:01:01matthias$ unzip titan.zipArchive: titan.zip creating: titan/ ...matthias$

Page 111: Titan: The Rise of Big Graph Data

matthias$ wget http://thinkaurelius/titan.zip % Total % Received % Xferd Average Speed Time Time 100 99999 0 99999 0 0 11078 0 --:--:-- 0:01:01matthias$ unzip titan.zipArchive: titan.zip creating: titan/ ...matthias$ cd titantitan$

Page 112: Titan: The Rise of Big Graph Data

matthias$ wget http://thinkaurelius/titan.zip % Total % Received % Xferd Average Speed Time Time 100 99999 0 99999 0 0 11078 0 --:--:-- 0:01:01matthias$ unzip titan.zipArchive: titan.zip creating: titan/ ...matthias$ cd titantitan$ bin/gremlin.sh

\,,,/ (o o)-----oOOo-(_)-oOOo-----gremlin>

Page 113: Titan: The Rise of Big Graph Data

gremlin> g = TitanFactory.open('/tmp/local-titan')==>titangraph[local:/tmp/local-titan]

Page 114: Titan: The Rise of Big Graph Data

gremlin> g = TitanFactory.open('/tmp/local-titan')==>titangraph[local:/tmp/local-titan]

LOCAL MACHINE MODE

Page 115: Titan: The Rise of Big Graph Data

gremlin> g.createKeyIndex('name',Vertex.class)==>nullgremlin> g.stopTransaction(SUCCESS)==>null

Page 116: Titan: The Rise of Big Graph Data

gremlin> g.loadGraphML('data/graph-of-the-gods.xml')==>null

name:tartarustype:location

name:plutotype:god

lives

brother

name:jupitertype:god

brother

name:neptunetype:god

pet

name:cerberustype:monster

lives

father

name:saturntype:titan

brother

name:seatype:location

lives

name:skytype:location

lives

father

battled

name:herculestype:demigod

name:hydratype:monster

battled

name:nemeantype:monster

battled

name:alcmenetype:human

mother

time:1 time:2 time:12

* The Graph of the Gods is a toy dataset distributed with Titan

Page 117: Titan: The Rise of Big Graph Data

gremlin> hercules = g.V('name','hercules').next()==>v[24]

name:tartarustype:location

name:plutotype:god

lives

brother

name:jupitertype:god

brother

name:neptunetype:god

pet

name:cerberustype:monster

lives

father

name:saturntype:titan

brother

name:seatype:location

lives

name:skytype:location

lives

father

battled

name:herculestype:demigod

name:hydratype:monster

battled

name:nemeantype:monster

battled

name:alcmenetype:human

mother

time:1 time:2 time:12

Page 118: Titan: The Rise of Big Graph Data

gremlin> hercules.out('mother','father')==>v[44]==>v[16]

name:tartarustype:location

name:plutotype:god

lives

brother

name:jupitertype:god

brother

name:neptunetype:god

pet

name:cerberustype:monster

lives

father

name:saturntype:titan

brother

name:seatype:location

lives

name:skytype:location

lives

father

battled

name:herculestype:demigod

name:hydratype:monster

battled

name:nemeantype:monster

battled

name:alcmenetype:human

mother

time:1 time:2 time:12

Page 119: Titan: The Rise of Big Graph Data

gremlin> hercules.out('mother','father').name==>alcmene==>jupiter

name:tartarustype:location

name:plutotype:god

lives

brother

name:jupitertype:god

brother

name:neptunetype:god

pet

name:cerberustype:monster

lives

father

name:saturntype:titan

brother

name:seatype:location

lives

name:skytype:location

lives

father

battled

name:herculestype:demigod

name:hydratype:monster

battled

name:nemeantype:monster

battled

name:alcmenetype:human

mother

time:1 time:2 time:12

Page 120: Titan: The Rise of Big Graph Data

THAT WAS TITAN LOCAL.

NEXT IS TITAN DISTRIBUTED.

Broecheler, M., Pugliese, A., Subrahmanian, V.S., "COSI: Cloud Oriented Subgraph Identification in Massive Social Networks,"Proceedings of the 2010 International Conference on Advances in Social Networks Analysis and Mining, pp. 248-255, 2010.http://www.knowledgefrominformation.com/2010/08/01/cosi-cloud-oriented-subgraph-identification-in-massive-social-networks/

Page 121: Titan: The Rise of Big Graph Data

-OR-

BACKEND AGNOSTIC

Page 122: Titan: The Rise of Big Graph Data

titan$ bin/gremlin.sh

\,,,/ (o o)-----oOOo-(_)-oOOo-----gremlin> conf = new BaseConfiguration();==>org.apache.commons.configuration.BaseConfiguration@763861e6gremlin> conf.setProperty("storage.backend","cassandra");gremlin> conf.setProperty("storage.hostname","77.77.77.77");gremlin> g = TitanFactory.open(conf); ==>titangraph[cassandra:77.77.77.77]gremlin>

TITAN DISTRIBUTEDVIA CASSANDRA

* There are numerous graph configurations: https://github.com/thinkaurelius/titan/wiki/Graph-Configuration

Page 123: Titan: The Rise of Big Graph Data

INHERITED FEATURES

Continuously available with no single point of failure.

Cassandra available at http://cassandra.apache.org/

No write bottlenecks to the graph as there is no master/slave architecture.

Elastic scalability allows for the introduction and removal of machines.

Caching layer ensures that continuously accessed data is available in memory.

Built-in replication ensures data is available during machine failure.

Page 124: Titan: The Rise of Big Graph Data

titan$ bin/gremlin.sh

\,,,/ (o o)-----oOOo-(_)-oOOo-----gremlin> conf = new BaseConfiguration();==>org.apache.commons.configuration.BaseConfiguration@763861e6gremlin> conf.setProperty("storage.backend","hbase");gremlin> conf.setProperty("storage.hostname","77.77.77.77");gremlin> g = TitanFactory.open(conf); ==>titangraph[hbase:77.77.77.77]gremlin>

TITAN DISTRIBUTED

VIA HBASE

* There are numerous graph configurations: https://github.com/thinkaurelius/titan/wiki/Graph-Configuration

Page 125: Titan: The Rise of Big Graph Data

INHERITED FEATURES

Linear scalability with the addition of machines.

HBase available at http://hbase.apache.org/

Strictly consistent reads and writes.

HDFS-based data replication.

Base classes for backing Hadoop MapReduce jobs with HBase tables.

Generally good integration with the tools in the Hadoop ecosystem.

Page 126: Titan: The Rise of Big Graph Data

TITAN AND THE CAP THEOREM

Consistency

Partitionability

Availability

Page 127: Titan: The Rise of Big Graph Data

Titan is all about ...

Page 128: Titan: The Rise of Big Graph Data

Titan is all about numerous concurrent users...

Page 129: Titan: The Rise of Big Graph Data

Titan is all about numerous concurrent users...high availability....

Page 130: Titan: The Rise of Big Graph Data

Titan is all about numerous concurrent users...high availability....

dynamic scalability...

Page 131: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

VERTEX-CENTRIC INDICES

DATA MANAGEMENT

THE HOW OF TITAN

Page 132: Titan: The Rise of Big Graph Data

DATA MANAGEMENT

THE HOW OF TITAN

Page 133: Titan: The Rise of Big Graph Data

DATA MANAGEMENTMAIN DESIGN PRINCIPLES

Optimistic Concurrency Control

Fined-Grained Locking Control

Immutable, Atomic Edges

battledhercules cerberus

battledhercules time:12 cerberus

battledhercules

time:12successful:true cerberus

1

2

3

+++

+

+-

Page 134: Titan: The Rise of Big Graph Data

DATA MANAGEMENT

hercules jupiterfather

father mars

Functional Declarations

Datatype ConstraintsTYPE DEFINITION

TitanKey timeKey = g.makeType().name("time") .dataType(Integer.class)

time:12

TitanLabel father = g.makeType().name("father") .functional()

Edge Label SignaturesTitanLabel battled = g.makeType().name("battled") .signature(timeKey)

battledhercules

time:12

cerberustime:"twelve"

Data management configurations allow Titan to optimize how information is stored/retrieved from disk.

Page 135: Titan: The Rise of Big Graph Data

DATA MANAGEMENT

Unique Property Key/Value Pairs

TYPE DEFINITION

Endogenous Indicesg.createKeyIndex("name",Vertex.class)

name:hercules

name:hermes

name:jupiter

name:jupiterstatus:king of the gods

name:neptunestatus:king of the gods

TitanKey status = g.makeType().name("status") .unique()

Data management configurations allow Titan to optimize how information is stored/retrieved from disk.

Page 136: Titan: The Rise of Big Graph Data

DATA MANAGEMENT

Ensures consistency over non-consistent storage backends.

LOCKING SYSTEM

hercules

neptune

father

father jupiter

hercules

write

write

fatherjupiterhercules

1. Acquire lock at the end of the transaction. - locking mechanism depends on storage layer consistency guarantees.

2. Verify original read.

3. Fail transaction if any precondition is violated.

Page 137: Titan: The Rise of Big Graph Data

DATA MANAGEMENTID MANAGEMENT

Global ID Pool Maintained by Storage Engine

[0,1,2,3,4,5,6,7,8,9,10,11]

Page 138: Titan: The Rise of Big Graph Data

DATA MANAGEMENTID MANAGEMENT

Pool Subsets Assigned to Individual Instances

Global ID Pool Maintained by Storage Engine

[0,1,2] [3,4,5]

[6,7,8] [9,10,11]

[0,1,2,3,4,5,6,7,8,9,10,11]

Page 139: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

THE HOW OF TITAN

Page 140: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

Natural graphs have a small world, community/cluster property.

Watts, D. J., Strogatz, S. H., "Collective Dynamics of 'Small-World' Networks," Nature 393 (6684), pp. 440–442, 1998.

Community 1 Community 2

High intra-connectivity within a community and low inter-connectivity between communities.

Page 141: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

Page 142: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

12345678 12345683

knows

Page 143: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

12345678 12345683

knows

Page 144: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

12345678 12345683

knows

12345678 9 12345683 24 bytes

Page 145: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

12345678 12345683

knows

12345678 9 12345683 24 bytes

12345678 9 +5

Page 146: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

12345678 12345683

knows

12345678 9 12345683 24 bytes

12345678 9 +5

12345678 9 +5 7 bytes

Page 147: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

THE HOW OF TITAN

Page 148: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

Natural, real-world graphs contain vertices of high degree.

Even if rare, their degree ensures that they exist on many paths.

Traversing a high degree vertex means touching numerous incident edges and potentially touching most of the graph in only a few steps.

THE SUPER NODE PROBLEM

Page 149: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

A "super node" only exists from the vantage point of classic "textbook style" graphs.

In the world of property graphs, intelligent disk-level filtering can interpret a "super node" as a more manageable low-degree vertex.

Vertex-centric querying utilizes B-Trees and sort orders for speedy lookup of incident edges with particular qualities.

A SUPER NODE SOLUTION

Page 150: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICESPUSHDOWN PREDICATES

knowsknows

knows

likeslikes

likes likes

likes

stars:5

stars:3stars:3

stars:2 stars:2

vertex.query()

8 edges

Page 151: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICESPUSHDOWN PREDICATES

knowsknows

likeslikes

likes likes

likes

stars:5

stars:3stars:3

stars:2 stars:2

vertex.query().direction(OUT)

7 edges

Page 152: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICESPUSHDOWN PREDICATES

likeslikes

likes likes

likes

stars:5

stars:3stars:3

stars:2 stars:2

vertex.query().direction(OUT) .labels("likes")

5 edges

Page 153: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICESPUSHDOWN PREDICATES

likes

stars:5

1 edge

vertex.query().direction(OUT) .labels("likes").has("stars",5)

Page 154: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICESPUSHDOWN PREDICATES

Query Query.direction(Direction)Query Query.labels(String... labels)Query Query.has(String, Object, Compare)Query Query.has(String, Object)Query Query.range(String, Object, Object)

Iterable<Vertex> Query.vertices()Iterable<Edge> Query.edges()

PREDICATES

GETTERS

Page 155: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

battled

battled

battled

knows

knows

time:1

time:2

time:12

DISK-LEVEL SORTING/INDEXING

Page 156: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

battled

battled

battled

knows

knows

battled

knows

time:1

time:2

time:12

DISK-LEVEL SORTING/INDEXING

Page 157: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

battled

battled

battled

knows

knows

battled w/ time 1-5

knows

TitanLabel battled = g.makeType().name("battled") .primaryKey(time)

time:1

time:2

time:12

battled w/ time 5-10

DISK-LEVEL SORTING/INDEXING

Page 158: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

DISK-LEVEL SORTING/INDEXING

father

battled

knows

brother

mother

Page 159: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

DISK-LEVEL SORTING/INDEXING

father

battled

knows

brother

mother

Page 160: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

DISK-LEVEL SORTING/INDEXING

father

battled

knows

brother

mother

family

TypeGroup family = TypeGroup.of(2,"family");TitanLabel father = g.makeType().name("father") .group(family).makeEdgeLabel();TitanLabel mother = g.makeType().name("mother") .group(family).makeEdgeLabel();TitanLabel brother = g.makeType().name("brother") .group(family).makeEdgeLabel();

Page 161: Titan: The Rise of Big Graph Data

VERTEX-CENTRIC INDICES

DISK-LEVEL SORTING/INDEXING

father

battled

knows

brother

mother

family

vertex.query().group("family")...

Page 162: Titan: The Rise of Big Graph Data

EDGE COMPRESSION

VERTEX-CENTRIC INDICES

DATA MANAGEMENT

THAT IS HOW TITAN WORKS

Page 163: Titan: The Rise of Big Graph Data

WHAT IF YOU WANTED TO CREATETWITTER FROM SCRATCH?

SIMULATING TWITTER

Page 164: Titan: The Rise of Big Graph Data

3 BILLION EDGES

100 MILLION VERTICES

10000 CONCURRENT USERS

50 MACHINES

1 GRAPH DATABASE

COMING JULY 2012

Page 165: Titan: The Rise of Big Graph Data

PART 3: THE FUTURE OF AURELIUS

MATTHIAS BROECHELERMARKO A. RODRIGUEZ

Page 166: Titan: The Rise of Big Graph Data

AURELIUS' GRAPHCOMPUTING STORY

Titan as the highly scalable, distributed graph database solution.

OLTP

Page 167: Titan: The Rise of Big Graph Data

AURELIUS' GRAPHCOMPUTING STORY

Titan as the highly scalable, distributed graph database solution.

Titan as the source (and potential sink) for other graph processing solutions.

OLTP OLAP

Page 168: Titan: The Rise of Big Graph Data

FAUNUS

GOD OF HERDS

Page 169: Titan: The Rise of Big Graph Data

FAUNUSPATH ALGEBRA FOR HADOOP

hercules

battled battled

theseuscretan bull

theseushercules

ally

Derived graphs are single-relational and are typically much smaller than their multi-relational source. Therefore, derived graphs can be subjected to "textbook-style" graph algorithms in both a meaningful and efficient manner.

WHO IS THE MOST CENTRAL ALLY?

A ·A� ◦ n(I)

Page 170: Titan: The Rise of Big Graph Data

FAUNUSPATH ALGEBRA FOR HADOOP

allyally

ally

ally

ally

allyally

ally

ally

ally

allyally

ally

B ·B ◦ n(I)

"My allies' allies are my allies."

B = A ·A� ◦ n(I)

(A ·A�)2 ◦ n(I)

Page 171: Titan: The Rise of Big Graph Data

FAUNUSPATH ALGEBRA FOR HADOOP

Implements the multi-relational path algebraas a collection of Map/Reduce operations

Rodriguez M.A., Shinavier, J., “Exposing Multi-Relational Networks to Single-Relational Network Analysis Algorithms,” Journal of Informetrics, 4(1), pp. 29-41, 2009. http://arxiv.org/abs/0806.2274

Support for "HadoopGraph" and HDFS file formats

Project codename: TinkerPoop

Reduce a massive property graph into a smaller semantically-rich single-relational graph.

Used for global graph operations.

Page 172: Titan: The Rise of Big Graph Data

FULGORA

GODDESS OF LIGHTNING

Page 173: Titan: The Rise of Big Graph Data

FULGORAAN EFFICIENt IN-MEMORY

GRAPH ENGINE

Non-transactional, in-memory graph engine.It is not a "database."

Process ~90 billion edges in 68-Gigs of RAM assuming a small world topology.

Perform complex graph algorithms in-memory.global graph analysismulti-relational graph analysis

Similar in spirit to Twitter's Cassovary: https://github.com/twitter/cassovary

Page 174: Titan: The Rise of Big Graph Data

Stores a massive-scaleproperty graph

Generates a large-scale single-relational graph

Analyzes compressed, large-scale single or multi-relational

graphs in memory

Map/Reduce

Load into RAMon a single-machine

Update element properties with algorithm results

THE AURELIUS OLAP FLOW

to a stats package

Update graph with derived edges

Page 175: Titan: The Rise of Big Graph Data

Stores a massive-scaleproperty graph

Generates a large-scale single-relational graph

Analyzes compressed, large-scale single or multi-relational

graphs in memory

Map/Reduce

Load into RAMon a single-machine

THE AURELIUS OLAP FLOW

to a stats package

theseushercules

ally

hercules

ally_centrality:0.0123

Page 176: Titan: The Rise of Big Graph Data

Stores a massive-scaleproperty graph

Generates a large-scale single-relational graph

Analyzes compressed, large-scale single or multi-relational

graphs in memory

THE AURELIUS OLAP FLOW

to a stats package

Page 177: Titan: The Rise of Big Graph Data

AURELIUS' USE OF BLUEPRINTS

Aurelius products use the Blueprints API so any graph product can communicate with any other graph product.

The code for graph databases, frameworks, algorithms, and batch-processing are written in terms of the Blueprints API.

Aurelius encourages developers to use Blueprints/TinkerPop in order to grow a rich ecosystem of interoperable graph technologies.

Page 178: Titan: The Rise of Big Graph Data

THE GRAPH LANDSCAPE

REPRISE

Spee

d of

Tra

vers

al/P

roce

ss

Size of Graph/Structure* Not to scale. Did not want to overlap logos.

Page 179: Titan: The Rise of Big Graph Data

NEXT STEPS

http://thinkaurelius.com

http://thinkaurelius.github.com/titan/

Learn about applying graph theory and network science.

Make use of and/or contribute to the free, open source Titan product.

Page 180: Titan: The Rise of Big Graph Data

THANK YOU

Page 181: Titan: The Rise of Big Graph Data

CREDITSPRESENTERS

MARKO A. RODRIGUEZMATTHIAS BROCHELER

FINANCIAL SUPPORTPEARSON EDUCATION

AURELIUS

LOCATION PROVISIONSJIVE SOFTWARE

MANY THANKS TODAN LAROCQUE

TINKERPOP COMMUNITYSTEPHEN MALLETTE

BOBBY NORTONKETRINA YIM