graf baze i neo4j - javacro conference · graf baze i neo4j . | 3 nosql baze (1) • key-value •...

21
| 1 Graf baze i Neo4j . Graf baze i Neo4j Vjeran Marčinko Kapsch CarrierCom Croatia

Upload: others

Post on 03-Sep-2019

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 1 Graf baze i Neo4j .

Graf baze i Neo4j

Vjeran Marčinko

Kapsch CarrierCom Croatia

Page 2: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 2 Graf baze i Neo4j .

Kapsch – O kompaniji

Page 3: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 3 Graf baze i Neo4j .

NoSQL baze (1)

• Key-value

• zasnovane na Amazon Dynamo arhitekturi

• K-V kolekcije

• Primjeri: Voldemort, Redis, Riak

• Big-Table

• zasnovane na Google BigTable arhitekturi

• big table strukture, column families

• Primjeri: HBase, Cassandra

• Document

• inspirirane od Lotus Notes-a

• K-V kolekcije unutar K-V kolekcija

• Primjeri: CouchDB, MongoDB

Page 4: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 4 Graf baze i Neo4j .

NoSQL baze (2)

Graf

• zasnovane na teoriji graf struktura

• Primjeri:

• InfiniteGraph

• OrientDB

• Neo4j

• Visoka povezanost data modela:

• Normalizirani podaci (kao RDBMS)

• Izvlačenja informacija nepredviđenih u trenutku zapisa

• Teže horizontalno skaliranje

• Kada koristiti:

• Dosta „join” tablica (pretraga >1000x brža od RDBMS baza)

• Dosta polu-struktuiranih podataka

• Želite fleksibilan model

Page 5: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 5 Graf baze i Neo4j .

Graf data model

Dijelovi graf data modela:

• Node-ovi

• Relacije između node-ova

• Property-ji na node-ovima i relacijama

Nema DB „scheme” ne postoje različiti „tipovi” node-ova aplikacijski sloj

brine o upisu!

Page 6: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 6 Graf baze i Neo4j .

Graf data model – SQL ekvivalent

Grubi ekvivalent graf data modela u SQL bazi:

• Tablica „NODES”

• Tablica „RELATIONSHIPS”

Page 7: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 7 Graf baze i Neo4j .

Skiciranje na ploči - graf

Page 8: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 8 Graf baze i Neo4j .

Object-Relational Mapping

• OO model (npr. Java) bogatiji od SQL modela

• Problem referenciranja objekta po „ulozi”:

• OO model: višestruko klasificiranje objekta kroz različite jezične

konstrukcije (klasa, superklasa, interface, mixin, trait …) višestruke

„uloge” nekog objekta

• SQL model: klasificiranje objekta (recorda) po samo jednom tipu (tablici)

Primjer objektnog modela:

public class User implements UserOwner {

private UserOwner owner;

… }

public class Company implements UserOwner { …. }

public class Department implements UserOwner {…}

Page 9: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 9 Graf baze i Neo4j .

Object-Graph Mapping

• Objektni model u

runtime-u je graf!

• Referenciranje

objekta po više

njegovih „uloga” se

implementira kao

različite relacije

prema jednom te

istom node-u

Objektni model Graf baza

Ti me kompletiraš!

Page 10: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 10 Graf baze i Neo4j .

Područja primjene graf bazi

• Social data

• Geospatial

• Katalozi proizvoda

• Upravljanje sustavima

• Bioinformatika

• Business Intelligence

• Preporuke

Page 11: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 11 Graf baze i Neo4j .

Neo4j - uvod

• trenutno najpopularnija graf baza

• vlasništvo Neo Technologies Inc.

• izrađena u Javi

• početak razvoja oko 2001.g., u 24/7 produkciji od 2004.g.

• transakcijska baza (ACID)

• nema scheme podataka

• klijenti za mnoge jezike: Java, Ruby, .NET, PHP, Scala, Clojure, Haskell …

• različiti deploymenti:

• embedded

• single server

• master-slave cluster

• milijarde zapisa na jednom stroju

Page 12: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 12 Graf baze i Neo4j .

Neo4j – Cypher API - Uvod

• graf „pattern matching” jezik („SQL” za grafove)

• agregacije, sortiranje, offset, limit…

• mutacije podataka (create, update, delete)

• Deklarativan:

• Odredite početne node-ove (Lucene index)

• Odredite graf „pattern” ciljanih node-ova

• Algoritam se „ispod haube” prilagođava query-u

Brzina pretrage neovisna o količini podataka! (uglavnom)

Page 13: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 13 Graf baze i Neo4j .

Neo4j – Cypher API - Pattern Matching

• Neimenovani node-ovi i relacije

• Imenovani node-ovi i relacije

• Umrežene strukture

( ) --> ( )

( A ) -[ :LOVES ]-> ( B )

( A ) --> ( B ) --> ( C ) <-- ( A )

Page 14: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 14 Graf baze i Neo4j .

Neo4j – Cypher API – Primjer pretrage

Suradnici „Jim”-a koji dijele interese za iste teme?

Page 15: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 15 Graf baze i Neo4j .

Neo4j – Cypher API – Primjer pretrage

START startEmployee = node:employees(name = „Jim”)

MATCH (startEmployee) – [ :WORKS_FOR ] -> (company),

(coworker) – [ :WORKS_FOR ] -> (company),

(startEmployee) – [ :INTERESTED_IN ] -> (topic),

(coworker) – [ :INTERESTED_IN ] -> (topic)

RETURN cowoker.name AS coworker_name,

count(topic) as common_topic_count

ORDER BY common_topic_count DESC

Page 16: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 16 Graf baze i Neo4j .

Neo4j – Java API – Spring Data Neo4j

• Spring Data projekt

• POJO-centričan (anotacije)

• Template-centričan (Neo4jTemplate)

• Inversion-of-Control

• Spring XML namespaces

• Mapiranje graf modela:

• Node @NodeEntity klasa

• Relacija @RelationshipEntity klasa

• Property Field-ovi u klasama

Page 17: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 17 Graf baze i Neo4j .

Neo4j – Java API – Spring Data Neo4j - Primjer

@NodeEntity

public class Actor {

@RelatedToVia(type = „ACTS_IN”)

private Set<Role> roles;

private String name;

}

@RelationshipEntity

public class Role {

@StartNode private Actor actor;

@EndNode private Movie movie;

private String roleName;

}

Page 18: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 18 Graf baze i Neo4j .

Neo4j - web konzola

Page 19: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 19 Graf baze i Neo4j .

Vizualiziranje grafa (1)

Tablice, bar/pie chartovi…?

Hmmm…

Graf ima jedinstvenu strukturu.

ISKORISTITE TO!

Kako prikazati graf?

Budite atraktivni!

Page 20: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 20 Graf baze i Neo4j .

Vizualiziranje grafa (2)

• Max de Marzi Blog

• D3 Javascript lib

• Gephi tool

• VivaGraphJS

• …

Page 21: Graf baze i Neo4j - JavaCro Conference · Graf baze i Neo4j . | 3 NoSQL baze (1) • Key-value • zasnovane na Amazon Dynamo arhitekturi • K-V kolekcije • Primjeri: Voldemort,

| 21 Graf baze i Neo4j .

The end my friend…

Hvala!