ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos
DESCRIPTION
Palestra apresentada no PHPnRIo 2013. Pequena introdução sobre NoSQL e o modelo de grafos. Explicação de como o Neo4J funciona e exemplificação utilizando códigos. Finalizando com um pequeno exemplo de rede social com Neo4J e PHP.TRANSCRIPT
![Page 1: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/1.jpg)
Conheça seu primeiro banco de dados orientado
a GRAFOSJean Carlo Nascimento aka Suissa
![Page 2: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/2.jpg)
![Page 3: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/3.jpg)
nosqlbr.com.brjquerybrasil.org
frontendbrasil.com.brjavascriptbrasil.com.br
comoprogramarphp.com.brgithub.com/suissaabout.me/suissa
@osuissa
El Suissa
![Page 4: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/4.jpg)
GRAFOWTF?
![Page 5: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/5.jpg)
![Page 6: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/6.jpg)
![Page 7: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/7.jpg)
![Page 8: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/8.jpg)
![Page 9: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/9.jpg)
![Page 10: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/10.jpg)
![Page 11: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/11.jpg)
![Page 12: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/12.jpg)
parent_id é um grafo
![Page 13: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/13.jpg)
Quem inventou isso?
![Page 14: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/14.jpg)
![Page 15: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/15.jpg)
Euler foi um dos mais prolíficos matemáticos,
calcula-se que toda a sua obra reunida teria entre
60 e 80 volumes.Fonte: Wikipedia, mas eu boto fé!
![Page 16: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/16.jpg)
● Número de Euler● Fórmula de Euler● Constante de Euler-Mascheroni● Conjectura de Euler● Igualdade de Euler● Teorema de Euler● Teoria dos grafos
Leonhard Euler
![Page 17: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/17.jpg)
![Page 18: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/18.jpg)
Paguei pau.
![Page 19: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/19.jpg)
De onde surgiu esse manolo?
![Page 20: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/20.jpg)
![Page 21: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/21.jpg)
![Page 22: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/22.jpg)
Por que ele fez isso?
![Page 23: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/23.jpg)
![Page 24: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/24.jpg)
Por quê?!Ah é nessa época não tinha internet.
![Page 25: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/25.jpg)
Sete pontes de Königsberg
![Page 26: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/26.jpg)
![Page 27: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/27.jpg)
![Page 28: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/28.jpg)
![Page 29: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/29.jpg)
![Page 30: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/30.jpg)
![Page 31: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/31.jpg)
![Page 32: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/32.jpg)
● Transações ACID● 32 bilhões de nós● 32 bilhões de relacionamentos● 64 bilhoões de propriedades● REST API ou JVM Embedded
Neo4J
![Page 33: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/33.jpg)
Mas isso não é muito novo?
![Page 34: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/34.jpg)
![Page 35: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/35.jpg)
Modelo Relacional
![Page 36: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/36.jpg)
1970
![Page 37: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/37.jpg)
Grafos
![Page 38: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/38.jpg)
1736
![Page 39: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/39.jpg)
![Page 40: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/40.jpg)
Tudo muito bonito mas qual a diferença?
![Page 41: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/41.jpg)
O custo da busca local de um grafo continua o
mesmo independente do seu tamanho.
![Page 42: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/42.jpg)
![Page 43: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/43.jpg)
![Page 44: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/44.jpg)
![Page 45: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/45.jpg)
Cypher
![Page 46: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/46.jpg)
![Page 47: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/47.jpg)
![Page 48: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/48.jpg)
![Page 49: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/49.jpg)
![Page 50: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/50.jpg)
![Page 51: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/51.jpg)
![Page 52: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/52.jpg)
![Page 53: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/53.jpg)
![Page 54: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/54.jpg)
REST APIAMEN!
![Page 55: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/55.jpg)
Criar um novo nó vazio
POST http://localhost:7474/db/data/node201 Created
POST http://localhost:7474/db/data/node {"nome":"Suissa"}201 Created
![Page 56: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/56.jpg)
Ler um nó
GET http://localhost:7474/db/data/node/27200 Ok
GET http://localhost:7474/db/data/node/666404 Not Found
![Page 57: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/57.jpg)
Deleta um nó
DELETE http://localhost:7474/db/data/node/26204 No Content*Um nó com relacionamento não pode ser deletado
POST http://localhost:7474/db/data/node {"name":"NoSQL"}POST http://localhost:7474/db/data/node/27/relationships {"to" : "http://localhost:7474/db/data/node/28", "type" : "Evangeliza"}DELETE http://localhost:7474/db/data/node/27409 Conflict
![Page 58: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/58.jpg)
![Page 59: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/59.jpg)
Primeiro o relacionamentoDELETE http://localhost:7474/db/data/relationship/1204 No Content
DELETE http://localhost:7474/db/data/node/27204 No Content
E para deletar todos os nós?
![Page 60: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/60.jpg)
![Page 61: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/61.jpg)
Adicionando propriedadesPOST http://localhost:7474/db/data/node201 Created
PUT http://localhost:7474/db/data/node/29/properties/idade 28204 No Content
PUT http://localhost:7474/db/data/node/29/properties {"nome":"Suissa", "idade":28, "cursos":["neo4j", "mongodb"]}
*Um valor de propriedade não pode ser nulo ou um objeto JSON.
![Page 62: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/62.jpg)
Adicionando propriedades
Estes dois comandos irão falhar:PUT http://localhost:7474/db/data/node/29/properties {"nome":"Suissa", "idade":28, "cursos":null}PUT http://localhost:7474/db/data/node/29/properties {"nome":"Suissa", "idade":28, "cursos":{"nosql":"mongodb", "nosql":"neo4j"}}
Mas estes irão funcionarPUT http://localhost:7474/db/data/node/29/properties {"nome":"Suissa", "idade":28, "cursos":""}PUT http://localhost:7474/db/data/node/29/properties {"nome":"Suissa", "idade":28, "cursos": "{\"nosql\":\"mongodb\", \"nosql\":\"neo4j\"}" }
![Page 63: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/63.jpg)
Modificando uma propriedadePUT http://localhost:7474/db/data/node/29/properties/nome "Cumpadi Uóxinton"204 No Content
PUT http://localhost:7474/db/data/node/29/properties {"nome": "Cumpadi Uóxinton"}204 No Content
![Page 64: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/64.jpg)
Deletando uma propriedadeDELETE http://localhost:7474/db/data/node/29/properties/cursos
Deletando todas as propriedadesDELETE http://localhost:7474/db/data/node/29/properties
![Page 65: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/65.jpg)
![Page 66: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/66.jpg)
Atravessando nósPOST http://localhost:7474/db/data/node/13/traverse/nodeAccept: application/jsonContent-Type: application/json{ "order": "breadth_first", "return_filter": { "body": "position.endNode().getProperty('name').toLowerCase().contains('t')", "language": "javascript" }, "prune_evaluator": { "body": "position.length() > 10", "language": "javascript" }, "uniqueness": "node_global", "relationships": [{ "direction": "all", "type": "knows" }, { "direction": "all", "type": "loves" }], "max_depth": 3}
![Page 67: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/67.jpg)
![Page 68: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/68.jpg)
Atravessando relacionamentosPOST http://localhost:7474/db/data/node/6/traverse/relationshipAccept: application/jsonContent-Type: application/json{ "order" : "breadth_first", "uniqueness" : "none", "return_filter" : { "language" : "builtin", "name" : "all" }}
![Page 69: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/69.jpg)
Atravessando relacionamentos[ { "start" : "http://localhost:7474/db/data/node/6", "data" : { }, "self" : "http://localhost:7474/db/data/relationship/1", "property" : "http://localhost:7474/db/data/relationship/1/properties/{key}", "properties" : "http://localhost:7474/db/data/relationship/1/properties", "type" : "know", "extensions" : { }, "end" : "http://localhost:7474/db/data/node/5"}, { "start" : "http://localhost:7474/db/data/node/6", "data" : { }, "self" : "http://localhost:7474/db/data/relationship/2", "property" : "http://localhost:7474/db/data/relationship/2/properties/{key}", "properties" : "http://localhost:7474/db/data/relationship/2/properties", "type" : "own", "extensions" : { }, "end" : "http://localhost:7474/db/data/node/4"} ]
![Page 70: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/70.jpg)
![Page 71: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/71.jpg)
Atravessando caminhosPOST http://localhost:7474/db/data/node/9/traverse/pathAccept: application/jsonContent-Type: application/json{ "order" : "breadth_first", "uniqueness" : "none", "return_filter" : { "language" : "builtin", "name" : "all" }}
![Page 72: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/72.jpg)
Atravessando caminhos[ { "start" : "http://localhost:7474/db/data/node/9", "nodes" : [ "http://localhost:7474/db/data/node/9" ], "length" : 0, "relationships" : [ ], "end" : "http://localhost:7474/db/data/node/9"}, { "start" : "http://localhost:7474/db/data/node/9", "nodes" : [ "http://localhost:7474/db/data/node/9", "http://localhost:7474/db/data/node/8" ], "length" : 1, "relationships" : [ "http://localhost:7474/db/data/relationship/3" ], "end" : "http://localhost:7474/db/data/node/8"}, { "start" : "http://localhost:7474/db/data/node/9", "nodes" : [ "http://localhost:7474/db/data/node/9", "http://localhost:7474/db/data/node/7" ], "length" : 1, "relationships" : [ "http://localhost:7474/db/data/relationship/4" ], "end" : "http://localhost:7474/db/data/node/7"} ]
![Page 73: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/73.jpg)
Todos os comandos também funcionam para
as relaçõesSó trocar node por relationship
![Page 74: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/74.jpg)
Todos os tipos de relacionamentosGET http://localhost:7474/db/data/relationship/types200 OK["Evangeliza","CONHECE","Ama"]
*Uma vez criado um relacionamento ele não pode mais ser deletado
![Page 75: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/75.jpg)
E o PHP mano?
![Page 76: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/76.jpg)
![Page 77: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/77.jpg)
cURL
![Page 78: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/78.jpg)
![Page 79: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/79.jpg)
Alternativas● https://github.com/onewheelgood/Neo4J-REST-PHP-
API-client● https://github.com/lphuberdeau/Neo4j-PHP-OGM● https://github.com/jadell/neo4jphp
![Page 80: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/80.jpg)
Neo4J.phpuse Everyman\Neo4j\Client,
Everyman\Neo4j\Transport,Everyman\Neo4j\Node,Everyman\Neo4j\Relationship;
$client = new Client(new Transport('localhost', 7474));
![Page 81: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/81.jpg)
Neo4J.php$keanu = new Node($client);$keanu->setProperty('name', 'Keanu Reeves')->save();
$laurence = new Node($client);$laurence->setProperty('name', 'Laurence Fishburne')->save();
$matrix = new Node($client);$matrix->setProperty('title', 'The Matrix')->save();
$constantine = new Node($client);$constantine>setProperty('title', 'Constantine')->save();
![Page 82: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/82.jpg)
Neo4J.php$keanu->relateTo($matrix, 'IN')->save();$keanu->relateTo($constantine, 'IN')->save();$laurence->relateTo($matrix, 'IN')->save();
echo $keanu->getProperty('name') . " filmou:\n";$relationships = $laurence->getRelationships('IN');foreach ($relationships as $relationship) { $movie = $relationship->getEndNode(); echo "\t" . $movie->getProperty('title') . "\n";}
![Page 83: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/83.jpg)
Object Graph Modelfunction findRecommendations(User $user){
return $em->createCypherQuery()->startWithNode('user', $user)->match('user -[:follow]-> followedBy <-[:follow]- similarInterest')->match('similarInterest -[:follow]-> potentialMatch')->end('potentialMatch', 'count(*)')->order('count(*) DESC')->limit(10)->getList();
}
![Page 84: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/84.jpg)
Perguntas?
![Page 85: Ph pn rio 2012 - conheça seu primeiro banco de dados orientado a grafos](https://reader030.vdocuments.site/reader030/viewer/2022020800/554ba5cbb4c905ae618b4ec6/html5/thumbnails/85.jpg)