graph databases

28

Upload: sergey-enin

Post on 02-Jul-2015

176 views

Category:

Engineering


1 download

DESCRIPTION

One of the most promising areas in the world of NoSQL - graphs based storage and processing system which based on the theory of graphs. Neo4J - is, perhaps, the most popular Graph database at the moment. It provides high performance data storage and working with graphs, using various Java APIs and declarative query language Cypher. Adobe, Cisco, classmates.com, Deutsche telecom and many others are using Neo4J.

TRANSCRIPT

Page 1: Graph Databases
Page 2: Graph Databases

Sergey Enin

[email protected]

/pankrat

/sergeyenin

Page 3: Graph Databases

NOSQLGRAPH DBs

APP DBs

AGENDA

Page 4: Graph Databases

GraphDatabases

Graph Databases

Page 5: Graph Databases

Leonhard Euler (1707 –1783)Swiss mathematician

Graph Databases: HISTORY

Page 6: Graph Databases

Graph Databases: HISTORY

Page 7: Graph Databases

What is Graph?

Page 8: Graph Databases

Vertice(Node)

Edge(Relationship)

Graph Databases: GRAPH

Page 9: Graph Databases

Graph Databases: WHAT IS IT?

Page 10: Graph Databases

Graph Databases: WHAT IS IT?

Joins

VS

Traversals

Page 11: Graph Databases

Good for semi-structured connected

data

1Index free-

adjacency

The underlying

storage

The processing

engine

2

3

4

Graph Databases: CHARACTERISTICS

Page 12: Graph Databases

APPs

Page 13: Graph Databases

Application: social graphs

Page 14: Graph Databases

Application: PAGE RANK

Page 15: Graph Databases

APP: Collaborative filtering

Page 16: Graph Databases
Page 17: Graph Databases

Neo4J: CHARACTERISTICS

true ACID transactions;

scales to billions of nodes and relationships;

high speed querying through traversals;

declarative graph query language;

Page 18: Graph Databases

Neo4J: who useit

Neo4J: WHO USE

Page 19: Graph Databases

Neo4J: network architecture

Neo4J: who useit

Neo4J: NETWORK ARCHITECTURE

Page 20: Graph Databases

Neo4J: architectureNeo4J: ARCHITECTURE

Page 21: Graph Databases

Neo4J: architectureNeo4J: Internal storage

Node

Relationship

Page 22: Graph Databases

Neo4J: architectureNeo4J: Internal storage

Page 23: Graph Databases

APP: Collaborative filteringNeo4J: CF

Page 24: Graph Databases

APP: Collaborative filteringNeo4J: CF

Page 25: Graph Databases

Neo4J: CYPHER

MATCH(p1:Person)-[x:RATED]->(m:PRODUCT)<-[y:RATED]-

(p2:Person)WITH

SUM(x.rating * y.rating) AS xyDotProduct, SQRT(REDUCE(xDot = 0, a IN COLLECT(x.rating) | xDot + a^2)) AS xLength, SQRT(REDUCE(yDot = 0, b IN COLLECT(y.rating) | yDot + b^2)) AS yLength, p1, p2CREATE UNIQUE

(p1)-[s:SIMILARITY]-(p2)SET

s.similarity = xyDotProduct / (xLength * yLength)

Page 26: Graph Databases

Alternatives

• GO• RESTful API• Built-in query editor and visualizer• back-end's: LevelDB, MongoDB• modularity

• No native storage(• Very raw(

Page 27: Graph Databases
Page 28: Graph Databases

[email protected]

/pankrat

/sergeyenin

Thank you!