25
GRAPHGEN Le générateur de graphes #Neo4j Meetup Lyon 18-12-2014 graphgen.neoxygen.io

Graphgen - le générateur de graphes

Embed Size (px)

Citation preview

Page 1: Graphgen - le générateur de graphes

GRAPHGENLe générateur de graphes

#Neo4j Meetup Lyon 18-12-2014

graphgen.neoxygen.io

Page 2: Graphgen - le générateur de graphes

#whoami

Christophe WillemsenSenior ConsultantExpert Neo4j

World’s #1Neo4j consultancy

@graph_awaregraphaware.com

@ikwattro

Page 3: Graphgen - le générateur de graphes

POURQUOI GRAPHGEN ?

RETOUR RAPIDE SUR LES FONCTIONSNATIVES A NEO4J POUR CRÉER

SON GRAPHE

Page 4: Graphgen - le générateur de graphes

A LA MAIN

CREATE (n:Personne {prenom: ‘Roger’, nom:’Laguadec’})

A ECRIRE

100XPour avoir 100 noeuds

Page 5: Graphgen - le générateur de graphes

AVEC UNE BOUCLE

FOREACH ( i in range(0,99) | CREATE (n:Personne {id:i} ) )

Page 6: Graphgen - le générateur de graphes

LOAD CSV

USING PERIODIC COMMIT 1000LOAD CSV WITH HEADERS FROM FILE

‘file:///Users/me/docs/import.csv’ AS csvMERGE (n:Personne {prenom: csv.prenom} )

Page 7: Graphgen - le générateur de graphes

ET AVEC GRAPHGEN ALORS ?

(p:Personne {prenom: firstName, nom: lastName} *100)

(p)-[:CONNAIS *n..n]->(p)

100 NOEUDS

VALEURS REELLES !

RelationsMany To Many

à 80%

Page 8: Graphgen - le générateur de graphes

DEMO 1

Page 9: Graphgen - le générateur de graphes

SYNTAXE DES NOEUDSBASEE SUR LE LANGAGE CYPHER !

(p:Personne {prenom: firstName} *100 )

identifiantlabel

propriété du noeud

faker typequantité

Page 10: Graphgen - le générateur de graphes

SYNTAXE DES RELATIONSBASEE SUR LE LANGAGE CYPHER !

-[:CONNAIS {depuis: unixTime} *n..n ]->

type

propriété de la relation

faker typecardinalité

Page 11: Graphgen - le générateur de graphes

PARAMETRES DE PROPRIETESExemple: Je veux 100 personnes avec une date de naissance,

mais ces personnes doivent être majeures et pas encore à l’âgeDe la retraite.

(p:Personne {nom: fullName, ddn: { dateTimeBetween: [‘’-65 years’’, ‘’-18 years’’]}} *100)YAML inline

!!!

Le gouvernemen

tpeut modifier cette valeur

sans avis préalable

Page 12: Graphgen - le générateur de graphes

Les faker types• word• sentence• dateTime• dateTimeBetween• text• unixTime• randomDigit• numberBetween• company• firstName, lastName• country• city• address

• latitude, longitude• url• username• password• creditCardNumber• ip• userAgent• uuid• ean13• fileExtension• hashTag• …… et plein d’autres

Page 13: Graphgen - le générateur de graphes

DEMO 2

Page 14: Graphgen - le générateur de graphes

GRAPHGEN ENCORE PLUS FORT !

Page 15: Graphgen - le générateur de graphes

NŒUDS TYPESECRIRE CA :

(user:User:Person {_id: uuid,login: userName,password: password,email: email,prenom: firstName,nom: lastName,ddn: { dateTimeBetween: [‘’-50 years’’, ‘’-18

years’’]}} *100)

C’EST LOOOOOOOOOOONG !

Page 16: Graphgen - le générateur de graphes

NŒUDS TYPESCOMME CA C’EST COOL :

(user:#User:#Person *100)

# = Activation du nœud type

Page 17: Graphgen - le générateur de graphes

NŒUDS TYPES

• #Person• #User• #Tweet• #File• #HashTag• #BlogPost• #Company• … et plein d’autres à venir

Page 18: Graphgen - le générateur de graphes

TRUCS & ASTUCES

Page 19: Graphgen - le générateur de graphes

ASTUCE 1Utiliser une propriété avec valeur fixe que je définis pour tous les nœuds

Personne

SOLUTION: randomElement avec 1 seul élément

(p:Personne:Administrateur {groupe: {randomElement:[‘’ADMIN’’]}} *20)

Page 20: Graphgen - le générateur de graphes

ASTUCE 2Suggestions (groupes de personnes qui ne peuvent pas se connaître)

SOLUTION: Créer deux groupes de nœuds distincts avec le même label

(p:#Person *20)-[:A_TRAVAILLE_POUR *n..1]->(c:#Company *10)(autres:#Person *20)-[:A_TRAVAILLE_POUR *n..1]->(c)

Page 21: Graphgen - le générateur de graphes

GRAPHGEN LES POINTS FORTS

• BASE SUR LA SPEC CYPHER (PAS DE NOUVELLE SYNTAXE A

APPRENDRE)

• DESTINE A TOUT LE MONDE

• GENERATION DE VALEURS

• VISUALISATION IMMEDIATE DE VOTRE GRAPHE

• IMPORTATION DU GRAPHE DANS VOTRE BASE

• EXPORT

Page 22: Graphgen - le générateur de graphes

MOINS FORTS

GRAPHGEN LES POINTS FAIBLES

• LE PROJET EST ENCORE JEUNE (10 OCTOBRE)

• S’ADAPTE A +- 75% DE COMPLEXITE

• QUELQUES FONCTIONS CLES AVANT UNE STABLE

RELEASE

• LIMITE A 1000 NŒUDS POUR LA VISUALISATION

Faut pas exagérernon plus !

Page 23: Graphgen - le générateur de graphes

A VENIR DANS GRAPHGEN

• User Dashboard pour sauver vos graphes

• Définir vos propres nœuds types

• Définir les pourcentages des relations x..n

• Génération GraphGist en 1 clic

• Public API

• Export vers d’autres formats

Page 24: Graphgen - le générateur de graphes

QUESTIONS ?

Page 25: Graphgen - le générateur de graphes

MERCI Graphgen : http://graphgen.neoxygen.io

Composants PHP pour Neo4j : https://github.com/neoxygen

Follow me : @ikwattro