{"id":1322,"date":"2021-11-16T16:04:11","date_gmt":"2021-11-16T19:04:11","guid":{"rendered":"https:\/\/fcnuvem.com.br\/home\/?p=1322"},"modified":"2022-12-05T11:57:58","modified_gmt":"2022-12-05T14:57:58","slug":"blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2","status":"publish","type":"post","link":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/","title":{"rendered":"Parte 2 &#8211; Dando Superpoderes aos Seus Dados com Neo4J e Grafos"},"content":{"rendered":"\n<figure class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-1\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"205\" src=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Blog-730x205-FCnuvem-Neo4J-2.png\" alt=\"\" data-id=\"1326\" data-full-url=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Blog-730x205-FCnuvem-Neo4J-2.png\" data-link=\"https:\/\/fcnuvem.com.br\/home\/?attachment_id=1326\" class=\"wp-image-1326\" srcset=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Blog-730x205-FCnuvem-Neo4J-2.png 730w, https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Blog-730x205-FCnuvem-Neo4J-2-300x84.png 300w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p><sub><strong>Autor:<\/strong>&nbsp;Lucas&nbsp;Humberto&nbsp;Cabrera&nbsp;Santos<\/sub><\/p>\n\n\n\n<p><strong>Grafos<\/strong>&nbsp;<\/p>\n\n\n\n<p>Grafos&nbsp;s\u00e3o&nbsp;um&nbsp;conceito&nbsp;extremamente&nbsp;antigo&nbsp;(a&nbsp;primeira&nbsp;men\u00e7\u00e3o&nbsp;a&nbsp;isso&nbsp;remonta&nbsp;a&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_theory\" target=\"_blank\" rel=\"noreferrer noopener\">Leonhard Euler em 1736<\/a>)&nbsp;de&nbsp;armazenamento&nbsp;e&nbsp;visualiza\u00e7\u00e3o&nbsp;de dados e&nbsp;suas&nbsp;rela\u00e7\u00f5es.&nbsp;Basicamente&nbsp;um&nbsp;Grafo&nbsp;\u00e9&nbsp;composto&nbsp;de&nbsp;duas&nbsp;partes&nbsp;b\u00e1sicas:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>N\u00f3<\/strong>: O&nbsp;n\u00f3&nbsp;\u00e9 o&nbsp;representante&nbsp;de&nbsp;uma&nbsp;entidade&nbsp;do&nbsp;sistema, por&nbsp;exemplo, um&nbsp;usu\u00e1rio, um&nbsp;<em>Role<\/em>, um&nbsp;<em>Scope<\/em>&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Arestas:<\/strong>&nbsp;As&nbsp;arestas&nbsp;s\u00e3o&nbsp;os&nbsp;relacionamentos&nbsp;em&nbsp;si&nbsp;<\/li><\/ul>\n\n\n\n<p>Este \u00e9 o&nbsp;exemplo&nbsp;de um&nbsp;Grafo&nbsp;simples:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"183\" src=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-22.png\" alt=\"\" class=\"wp-image-1329\" srcset=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-22.png 560w, https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-22-300x98.png 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/figure>\n\n\n\n<p>Aqui&nbsp;temos&nbsp;dois&nbsp;n\u00f3s, 1 e 2 que&nbsp;est\u00e3o&nbsp;conectados&nbsp;atrav\u00e9s&nbsp;de&nbsp;uma&nbsp;rela\u00e7\u00e3o&nbsp;de &#8220;FOLLOWS&#8221;, que&nbsp;possui&nbsp;uma&nbsp;propriedade&nbsp;<em>Since<\/em>&nbsp;que&nbsp;diz&nbsp;desde&nbsp;quando&nbsp;aquela&nbsp;pessoa&nbsp;1 segue a&nbsp;pessoa&nbsp;2.&nbsp;Perceba&nbsp;que&nbsp;os&nbsp;n\u00f3s&nbsp;tamb\u00e9m&nbsp;podem&nbsp;ter&nbsp;propriedades&nbsp;e&nbsp;al\u00e9m&nbsp;disso,&nbsp;tamb\u00e9m&nbsp;podemos&nbsp;definir&nbsp;<em>Labels<\/em>&nbsp;para&nbsp;cada&nbsp;um dos&nbsp;n\u00f3s.&nbsp;Ent\u00e3o,&nbsp;como&nbsp;estamos&nbsp;falando&nbsp;de&nbsp;pessoas,&nbsp;poder\u00edamos&nbsp;ter&nbsp;um&nbsp;n\u00f3&nbsp;<em>Alice:&nbsp;Person<\/em>,&nbsp;onde&nbsp;<em>Alice<\/em>&nbsp;seria&nbsp;o&nbsp;identificador&nbsp;do&nbsp;n\u00f3&nbsp;e<em>&nbsp;Person<\/em>&nbsp;seria&nbsp;a&nbsp;categoria,&nbsp;ou&nbsp;a&nbsp;<em>Label<\/em>&nbsp;desse&nbsp;n\u00f3.&nbsp;Ent\u00e3o&nbsp;podemos&nbsp;montar&nbsp;um&nbsp;Grafo&nbsp;simples&nbsp;como&nbsp;o do&nbsp;exemplo&nbsp;a&nbsp;seguir:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"455\" height=\"288\" src=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-21.png\" alt=\"\" class=\"wp-image-1328\" srcset=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-21.png 455w, https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-21-300x190.png 300w\" sizes=\"auto, (max-width: 455px) 100vw, 455px\" \/><\/figure>\n\n\n\n<p>Ou&nbsp;ent\u00e3o&nbsp;um&nbsp;Grafo&nbsp;mais&nbsp;complexo&nbsp;como&nbsp;o do&nbsp;pr\u00f3ximo&nbsp;exemplo:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"375\" src=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-23.png\" alt=\"\" class=\"wp-image-1330\" srcset=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-23.png 400w, https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/image-23-300x281.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/figure>\n\n\n\n<p>Para&nbsp;dar&nbsp;uma&nbsp;no\u00e7\u00e3o&nbsp;da&nbsp;import\u00e2ncia&nbsp;de&nbsp;grafos,&nbsp;hoje,&nbsp;principalmente,&nbsp;eles&nbsp;s\u00e3o&nbsp;muito&nbsp;utilizados&nbsp;em&nbsp;diversas&nbsp;aplica\u00e7\u00f5es&nbsp;reais,&nbsp;principalmente&nbsp;em&nbsp;log\u00edstica&nbsp;e&nbsp;at\u00e9&nbsp;mesmo&nbsp;na&nbsp;Internet, que se&nbsp;pensarmos&nbsp;bem, \u00e9 um&nbsp;Grafo&nbsp;gigante,&nbsp;roteadores&nbsp;tamb\u00e9m&nbsp;utilizam&nbsp;algoritmos&nbsp;de&nbsp;menor&nbsp;caminho&nbsp;(como&nbsp;<a href=\"https:\/\/pt.wikipedia.org\/wiki\/Algoritmo_de_Dijkstra\" target=\"_blank\" rel=\"noreferrer noopener\">Dijkstra<\/a>)&nbsp;para&nbsp;encontrar&nbsp;o&nbsp;menor&nbsp;caminho&nbsp;entre outros&nbsp;roteadores&nbsp;at\u00e9&nbsp;o IP de&nbsp;destino.&nbsp;<\/p>\n\n\n\n<p>Com&nbsp;esses&nbsp;dois&nbsp;conceitos&nbsp;b\u00e1sicos&nbsp;n\u00f3s&nbsp;j\u00e1&nbsp;podemos&nbsp;mudar a forma&nbsp;como&nbsp;armazenamos&nbsp;os&nbsp;nossos&nbsp;dados de forma radical,&nbsp;isso&nbsp;porque&nbsp;n\u00f3s&nbsp;estamos&nbsp;dando&nbsp;muita&nbsp;enfase&nbsp;para&nbsp;os&nbsp;<strong>relacionamentos<\/strong>, e&nbsp;n\u00e3o&nbsp;s\u00f3&nbsp;para&nbsp;os&nbsp;dados que&nbsp;temos.&nbsp;<\/p>\n\n\n\n<p><strong>Neo4J<\/strong>&nbsp;<\/p>\n\n\n\n<p>Durante&nbsp;muito&nbsp;tempo&nbsp;tivemos&nbsp;o&nbsp;conceito&nbsp;de&nbsp;Grafos, mas&nbsp;n\u00e3o&nbsp;aplicamos&nbsp;ele&nbsp;a&nbsp;tecnologia&nbsp;na&nbsp;forma de&nbsp;armazenamento&nbsp;ou&nbsp;de&nbsp;defini\u00e7\u00e3o&nbsp;de dados.&nbsp;At\u00e9&nbsp;que&nbsp;criamos&nbsp;os&nbsp;chamados&nbsp;os&nbsp;bancos&nbsp;de dados&nbsp;orientados&nbsp;a&nbsp;Grafos. Esses&nbsp;bancos&nbsp;de dados&nbsp;armazenam&nbsp;fisicamente&nbsp;n\u00e3o&nbsp;s\u00f3&nbsp;os&nbsp;dados, mas&nbsp;tamb\u00e9m&nbsp;suas&nbsp;rela\u00e7\u00f5es, de forma que se&nbsp;tornam&nbsp;muito&nbsp;mais&nbsp;r\u00e1pidos&nbsp;e&nbsp;muito&nbsp;mais&nbsp;eficientes&nbsp;do que um banco de dados&nbsp;relacional&nbsp;normal.&nbsp;<\/p>\n\n\n\n<p>O Neo4J \u00e9 um de&nbsp;muitos&nbsp;exemplos&nbsp;de&nbsp;bancos&nbsp;de dados&nbsp;orientados&nbsp;\u00e0&nbsp;Grafos,&nbsp;criado&nbsp;em&nbsp;2007,&nbsp;ele&nbsp;se&nbsp;tornou&nbsp;rapidamente&nbsp;o banco&nbsp;mais&nbsp;utilizado&nbsp;no&nbsp;seguimento&nbsp;e&nbsp;tamb\u00e9m&nbsp;um dos&nbsp;mais&nbsp;r\u00e1pidos.&nbsp;Isso&nbsp;se&nbsp;d\u00e1&nbsp;por&nbsp;conta&nbsp;de que&nbsp;o&nbsp;Neo4J \u00e9 o que&nbsp;chamamos&nbsp;de &#8220;Grafo&nbsp;Nativo&#8221;,&nbsp;ou&nbsp;seja,&nbsp;fisicamente,&nbsp;na&nbsp;mem\u00f3ria,&nbsp;os&nbsp;n\u00f3s&nbsp;e&nbsp;relacionamentos&nbsp;apontam&nbsp;uns&nbsp;para&nbsp;os&nbsp;outros,&nbsp;isso&nbsp;cria&nbsp;o que \u00e9&nbsp;chamado&nbsp;de&nbsp;<em>Adjac\u00eancia&nbsp;Livre de&nbsp;\u00cdndices<\/em>&nbsp;(<em>Index-free Adjacency<\/em>), dessa forma&nbsp;os&nbsp;sistemas&nbsp;de&nbsp;Grafos&nbsp;Nativos,&nbsp;como&nbsp;o Neo4J,&nbsp;podem&nbsp;fazer&nbsp;uma&nbsp;query&nbsp;atrav\u00e9s&nbsp;de&nbsp;travessias&nbsp;de&nbsp;Grafos,&nbsp;pulando&nbsp;de um&nbsp;endere\u00e7o&nbsp;para outro&nbsp;na&nbsp;mem\u00f3ria&nbsp;de forma&nbsp;absurdamente&nbsp;r\u00e1pida,&nbsp;na&nbsp;verdade, o&nbsp;chamado&nbsp;<em>Pointer Hoping<\/em>&nbsp;\u00e9 a forma&nbsp;mais&nbsp;r\u00e1pida&nbsp;de um&nbsp;computador&nbsp;acessar&nbsp;um dado&nbsp;relacionado,&nbsp;voc\u00ea&nbsp;pode&nbsp;ver&nbsp;mais&nbsp;detalhes&nbsp;sobre&nbsp;esse&nbsp;tema&nbsp;<a href=\"https:\/\/medium.com\/@dmccreary\/how-to-explain-index-free-adjacency-to-your-manager-1a8e68ec664a\" target=\"_blank\" rel=\"noreferrer noopener\">nesse&nbsp;artigo<\/a>.&nbsp;<\/p>\n\n\n\n<p>O outro&nbsp;tipo&nbsp;de banco&nbsp;orientado&nbsp;a&nbsp;Grafos&nbsp;\u00e9 o&nbsp;chamado&nbsp;&#8220;Grafo&nbsp;N\u00e3o&nbsp;Nativo&#8221;,&nbsp;os&nbsp;grafos&nbsp;n\u00e3o&nbsp;nativos&nbsp;se&nbsp;apoiam&nbsp;sobre&nbsp;bancos&nbsp;de dados&nbsp;relacionais&nbsp;ou&nbsp;n\u00e3o&nbsp;relacionas&nbsp;j\u00e1&nbsp;existentes&nbsp;para que&nbsp;possam&nbsp;gerenciar&nbsp;seus&nbsp;relacionamentos.&nbsp;Em&nbsp;outras&nbsp;palavras,&nbsp;eles&nbsp;tem&nbsp;uma&nbsp;representa\u00e7\u00e3o&nbsp;de um&nbsp;Grafo&nbsp;em&nbsp;forma de&nbsp;tabelas&nbsp;ou&nbsp;documentos.&nbsp;&nbsp;<\/p>\n\n\n\n<p>O que&nbsp;torna&nbsp;eles&nbsp;cerca&nbsp;de 1.000&nbsp;vezes&nbsp;mais&nbsp;lento do que um&nbsp;Grafo&nbsp;Nativo&nbsp;e&nbsp;somente&nbsp;pelo&nbsp;fato&nbsp;de que a&nbsp;maioria&nbsp;dos dados que&nbsp;precisamos&nbsp;acessar&nbsp;n\u00e3o&nbsp;est\u00e1&nbsp;diretamente&nbsp;carregado&nbsp;na&nbsp;mem\u00f3ria.&nbsp;<\/p>\n\n\n\n<p><strong>Por que&nbsp;Grafos?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Naturalmente&nbsp;voc\u00ea&nbsp;deve&nbsp;estar&nbsp;pensando: &#8220;Por que&nbsp;eu&nbsp;deveria&nbsp;usar&nbsp;Grafos&nbsp;se&nbsp;eu&nbsp;j\u00e1&nbsp;tenho&nbsp;meu banco de dados&nbsp;aqui?&#8221;.&nbsp;Al\u00e9m&nbsp;da&nbsp;velocidade&nbsp;de&nbsp;execu\u00e7\u00e3o&nbsp;das<em>&nbsp;Queries<\/em>&nbsp;(no&nbsp;site&nbsp;do&nbsp;Neo4J, \u00e9&nbsp;dito&nbsp;que&nbsp;uma&nbsp;<em>Query<\/em>&nbsp;demora&nbsp;&#8220;o tempo de um&nbsp;<em>Tweet<\/em>&#8220;), a&nbsp;flexibilidade&nbsp;e a&nbsp;facilidade&nbsp;de&nbsp;modelagem&nbsp;s\u00e3o&nbsp;muito&nbsp;maiores&nbsp;do que um banco&nbsp;tradicional.&nbsp;<\/p>\n\n\n\n<p>Voc\u00ea&nbsp;deve&nbsp;estar&nbsp;pensando&nbsp;&#8220;Flexibilidade?&nbsp;Facilidade&nbsp;de&nbsp;modelagem?&#8221;,&nbsp;justamente, um banco de&nbsp;Grafos&nbsp;\u00e9&nbsp;muito&nbsp;mais&nbsp;flex\u00edvel&nbsp;porque&nbsp;voc\u00ea&nbsp;pode&nbsp;mudar o&nbsp;<em>Schema<\/em>&nbsp;todo&nbsp;do banco&nbsp;ou&nbsp;ent\u00e3o&nbsp;alterar&nbsp;qualquer&nbsp;atributo&nbsp;ou&nbsp;valor&nbsp;que&nbsp;voc\u00ea&nbsp;precise de&nbsp;fato&nbsp;alterar&nbsp;os&nbsp;dados&nbsp;existentes,&nbsp;porque&nbsp;cada&nbsp;relacionamento&nbsp;e&nbsp;n\u00f3&nbsp;\u00e9&nbsp;\u00fanico&nbsp;e&nbsp;separado. Agora&nbsp;em&nbsp;termos&nbsp;de&nbsp;facilidade&nbsp;de&nbsp;modelagem,&nbsp;pense&nbsp;o&nbsp;seguinte: Vamos&nbsp;modelar&nbsp;uma&nbsp;rede social&nbsp;igual&nbsp;ao&nbsp;Twitter.&nbsp;<\/p>\n\n\n\n<p>Primeiramente,&nbsp;temos&nbsp;a&nbsp;rela\u00e7\u00e3o&nbsp;inicial, a&nbsp;mais&nbsp;fundamental de&nbsp;todas: &#8220;Um&nbsp;usu\u00e1rio&nbsp;pode&nbsp;seguir&nbsp;outro&nbsp;usu\u00e1rio&nbsp;e ser&nbsp;seguido&#8221;, agora imagine&nbsp;esse&nbsp;relacionamento&nbsp;na&nbsp;sua&nbsp;cabe\u00e7a.&nbsp;Voc\u00ea&nbsp;pensou&nbsp;em&nbsp;um&nbsp;Grafo,&nbsp;n\u00e3o&nbsp;\u00e9&nbsp;mesmo? Um&nbsp;pequeno&nbsp;c\u00edrculo&nbsp;apontando&nbsp;para outro&nbsp;c\u00edrculo&nbsp;com&nbsp;uma&nbsp;<em>Label<\/em>&nbsp;&#8220;Segue&#8221; entre&nbsp;eles, pois \u00e9,&nbsp;naturalmente, o&nbsp;c\u00e9rebro&nbsp;humano&nbsp;pensa&nbsp;em&nbsp;termos&nbsp;de&nbsp;relacionamentos&nbsp;entre&nbsp;coisas,&nbsp;ent\u00e3o&nbsp;\u00e9&nbsp;muito&nbsp;mais&nbsp;simples&nbsp;voc\u00ea&nbsp;modelar&nbsp;um&nbsp;Grafo,&nbsp;porque&nbsp;voc\u00ea&nbsp;pode&nbsp;simplesmente&nbsp;pensar&nbsp;no que&nbsp;voc\u00ea&nbsp;quer&nbsp;e&nbsp;ele&nbsp;j\u00e1&nbsp;estar\u00e1&nbsp;modelado!&nbsp;<\/p>\n\n\n\n<p>Al\u00e9m&nbsp;disso,&nbsp;qualquer&nbsp;dado&nbsp;pode&nbsp;ser&nbsp;modelado&nbsp;em&nbsp;termos&nbsp;de&nbsp;Grafos, de forma que&nbsp;voc\u00ea&nbsp;poderia&nbsp;tamb\u00e9m&nbsp;utiliz\u00e1-lo para&nbsp;tarefas&nbsp;mais&nbsp;corriqueiras&nbsp;como&nbsp;armazenamento&nbsp;de&nbsp;usu\u00e1rios&nbsp;ou&nbsp;outras&nbsp;funcionalidades&nbsp;que&nbsp;ter\u00edamos&nbsp;delegado&nbsp;a&nbsp;um Banco&nbsp;Relacional&nbsp;ou&nbsp;N\u00e3o&nbsp;Relacional&nbsp;logo de&nbsp;cara,&nbsp;ent\u00e3o&nbsp;por que&nbsp;n\u00e3o&nbsp;fazemos&nbsp;isso?&nbsp;<\/p>\n\n\n\n<p><strong>Pr\u00f3s&nbsp;e Contras<\/strong>&nbsp;<\/p>\n\n\n\n<p>Acredito&nbsp;que&nbsp;os&nbsp;pr\u00f3s&nbsp;foram&nbsp;muito&nbsp;explicados&nbsp;nos&nbsp;par\u00e1grafos&nbsp;anteriores,&nbsp;certo?&nbsp;Temos&nbsp;velocidade,&nbsp;flexibilidade,&nbsp;facilidade&nbsp;de&nbsp;modelagem&nbsp;e&nbsp;al\u00e9m&nbsp;disso&nbsp;temos&nbsp;uma&nbsp;agilidade&nbsp;bastante&nbsp;incomum&nbsp;para&nbsp;bancos&nbsp;relacionais&nbsp;em&nbsp;queries, pois&nbsp;elas&nbsp;executam&nbsp;absurdamente&nbsp;r\u00e1pido&nbsp;em&nbsp;um&nbsp;ambiente&nbsp;onde&nbsp;tudo&nbsp;j\u00e1&nbsp;est\u00e1&nbsp;carregado&nbsp;na&nbsp;mem\u00f3ria.&nbsp;<\/p>\n\n\n\n<p>Infelizmente, por&nbsp;n\u00e3o&nbsp;ser&nbsp;ainda&nbsp;um&nbsp;modelo&nbsp;muito&nbsp;difundido,&nbsp;os&nbsp;bancos&nbsp;de&nbsp;Grafos&nbsp;n\u00e3o&nbsp;contam&nbsp;com&nbsp;bibliotecas&nbsp;ou&nbsp;suportes&nbsp;muito&nbsp;grandes.&nbsp;Apesar&nbsp;de o Neo4J, por&nbsp;exemplo,&nbsp;ter&nbsp;bibliotecas&nbsp;para a&nbsp;maioria&nbsp;das&nbsp;linguagens&nbsp;mais&nbsp;utilizadas,&nbsp;essas&nbsp;bibliotecas&nbsp;ainda&nbsp;precisam&nbsp;de&nbsp;alguns&nbsp;ajustes&nbsp;finos,&nbsp;principalmente&nbsp;no que&nbsp;diz&nbsp;respeito&nbsp;a&nbsp;<em>Queries<\/em>.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Al\u00e9m&nbsp;disso,&nbsp;n\u00e3o&nbsp;existem&nbsp;hoje&nbsp;boas&nbsp;ou&nbsp;excelentes&nbsp;ferramentas de&nbsp;visualiza\u00e7\u00e3o&nbsp;para&nbsp;esse&nbsp;tipo&nbsp;de&nbsp;Grafo&nbsp;que&nbsp;possam&nbsp;ser&nbsp;distribu\u00eddas&nbsp;em&nbsp;larga&nbsp;escala&nbsp;para o Front-end&nbsp;sem&nbsp;divulgar&nbsp;dados&nbsp;sens\u00edveis&nbsp;como&nbsp;usu\u00e1rios&nbsp;e&nbsp;senhas&nbsp;do banco.&nbsp;Isso&nbsp;porque&nbsp;a&nbsp;maioria&nbsp;das&nbsp;bibliotecas&nbsp;boas (como&nbsp;o NeoVis.js)&nbsp;precisam&nbsp;das&nbsp;credenciais&nbsp;do banco para&nbsp;montar&nbsp;o&nbsp;<em>Canvas<\/em>&nbsp;com um&nbsp;Grafo, e&nbsp;outras&nbsp;como&nbsp;o D3.js e libs de charting&nbsp;mais&nbsp;gen\u00e9ricas&nbsp;tem&nbsp;uma&nbsp;API&nbsp;bastante&nbsp;controversa&nbsp;para&nbsp;manipula\u00e7\u00e3o&nbsp;desse&nbsp;tipo&nbsp;de dado,&nbsp;por\u00e9m&nbsp;dado que&nbsp;a&nbsp;exibi\u00e7\u00e3o&nbsp;de um&nbsp;Grafo&nbsp;em&nbsp;forma de&nbsp;Grafo&nbsp;\u00e9&nbsp;somente&nbsp;para&nbsp;visualiza\u00e7\u00e3o&nbsp;e,&nbsp;raramente,&nbsp;apresenta&nbsp;algum&nbsp;valor&nbsp;anal\u00edtico,&nbsp;ent\u00e3o&nbsp;estamos&nbsp;bem&nbsp;com a&nbsp;representa\u00e7\u00e3o&nbsp;em&nbsp;forma de JSON&nbsp;ou&nbsp;tabelas&nbsp;que&nbsp;o&nbsp;Neo4J&nbsp;tamb\u00e9m&nbsp;nos&nbsp;proporciona.&nbsp;<\/p>\n\n\n\n<p>Em&nbsp;suma,&nbsp;os&nbsp;pr\u00f3s&nbsp;ultrapassam&nbsp;os&nbsp;contras,&nbsp;principalmente&nbsp;quando&nbsp;falamos&nbsp;de&nbsp;escala, pois um&nbsp;Grafo&nbsp;&#8220;grande&#8221; no Neo4J \u00e9&nbsp;considerado&nbsp;um&nbsp;Grafo&nbsp;com&nbsp;mais&nbsp;de 2&nbsp;bilh\u00f5es&nbsp;de&nbsp;n\u00f3s,&nbsp;ou&nbsp;seja,&nbsp;esse&nbsp;modelo&nbsp;de&nbsp;Grafos&nbsp;pode&nbsp;escalar&nbsp;muito&nbsp;se&nbsp;voc\u00ea&nbsp;tiver&nbsp;infraestrutura&nbsp;para&nbsp;suport\u00e1-lo.&nbsp;<\/p>\n\n\n\n<p><strong>Conclus\u00e3o<\/strong>&nbsp;<\/p>\n\n\n\n<p>Para que&nbsp;esse&nbsp;artigo&nbsp;n\u00e3o&nbsp;fique&nbsp;muito&nbsp;extenso,&nbsp;vou&nbsp;dividi-lo&nbsp;em&nbsp;v\u00e1rias&nbsp;partes, no&nbsp;pr\u00f3ximo&nbsp;artigo&nbsp;irei&nbsp;explicar&nbsp;como&nbsp;podemos&nbsp;iniciar&nbsp;com Neo4J,&nbsp;instalando&nbsp;e&nbsp;come\u00e7ando&nbsp;a&nbsp;inserindo&nbsp;dados e&nbsp;criando&nbsp;um&nbsp;Grafo.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autor:&nbsp;Lucas&nbsp;Humberto&nbsp;Cabrera&nbsp;Santos Grafos&nbsp; Grafos&nbsp;s\u00e3o&nbsp;um&nbsp;conceito&nbsp;extremamente&nbsp;antigo&nbsp;(a&nbsp;primeira&nbsp;men\u00e7\u00e3o&nbsp;a&nbsp;isso&nbsp;remonta&nbsp;a&nbsp;Leonhard Euler em 1736)&nbsp;de&nbsp;armazenamento&nbsp;e&nbsp;visualiza\u00e7\u00e3o&nbsp;de dados e&nbsp;suas&nbsp;rela\u00e7\u00f5es.&nbsp;Basicamente&nbsp;um&nbsp;Grafo&nbsp;\u00e9&nbsp;composto&nbsp;de&nbsp;duas&nbsp;partes&nbsp;b\u00e1sicas:&nbsp; N\u00f3: O&nbsp;n\u00f3&nbsp;\u00e9 o&nbsp;representante&nbsp;de&nbsp;uma&nbsp;entidade&nbsp;do&nbsp;sistema, por&nbsp;exemplo, um&nbsp;usu\u00e1rio, um&nbsp;Role, um&nbsp;Scope&nbsp; Arestas:&nbsp;As&nbsp;arestas&nbsp;s\u00e3o&nbsp;os&nbsp;relacionamentos&nbsp;em&nbsp;si&nbsp; Este \u00e9 o&nbsp;exemplo&nbsp;de um&nbsp;Grafo&nbsp;simples:&nbsp; Aqui&nbsp;temos&nbsp;dois&nbsp;n\u00f3s, 1 e 2 que&nbsp;est\u00e3o&nbsp;conectados&nbsp;atrav\u00e9s&nbsp;de&nbsp;uma&nbsp;rela\u00e7\u00e3o&nbsp;de &#8220;FOLLOWS&#8221;, que&nbsp;possui&nbsp;uma&nbsp;propriedade&nbsp;Since&nbsp;que&nbsp;diz&nbsp;desde&nbsp;quando&nbsp;aquela&nbsp;pessoa&nbsp;1 segue a&nbsp;pessoa&nbsp;2.&nbsp;Perceba&nbsp;que&nbsp;os&nbsp;n\u00f3s&nbsp;tamb\u00e9m&nbsp;podem&nbsp;ter&nbsp;propriedades&nbsp;e&nbsp;al\u00e9m&nbsp;disso,&nbsp;tamb\u00e9m&nbsp;podemos&nbsp;definir&nbsp;Labels&nbsp;para&nbsp;cada&nbsp;um dos&nbsp;n\u00f3s.&nbsp;Ent\u00e3o,&nbsp;como&nbsp;estamos&nbsp;falando&nbsp;de&nbsp;pessoas,&nbsp;poder\u00edamos&nbsp;ter&nbsp;um&nbsp;n\u00f3&nbsp;Alice:&nbsp;Person,&nbsp;onde&nbsp;Alice&nbsp;seria&nbsp;o&nbsp;identificador&nbsp;do&nbsp;n\u00f3&nbsp;e&nbsp;Person&nbsp;seria&nbsp;a&nbsp;categoria,&nbsp;ou&nbsp;a&nbsp;Label&nbsp;desse&nbsp;n\u00f3.&nbsp;Ent\u00e3o&nbsp;podemos&nbsp;montar&nbsp;um&nbsp;Grafo&nbsp;simples&nbsp;como&nbsp;o do&nbsp;exemplo&nbsp;a&nbsp;seguir:&nbsp; Ou&nbsp;ent\u00e3o&nbsp;um&nbsp;Grafo&nbsp;mais&nbsp;complexo&nbsp;como&nbsp;o do&nbsp;pr\u00f3ximo&nbsp;exemplo:&nbsp; Para&nbsp;dar&nbsp;uma&nbsp;no\u00e7\u00e3o&nbsp;da&nbsp;import\u00e2ncia&nbsp;de&nbsp;grafos,&nbsp;hoje,&nbsp;principalmente,&nbsp;eles&nbsp;s\u00e3o&nbsp;muito&nbsp;utilizados&nbsp;em&nbsp;diversas&nbsp;aplica\u00e7\u00f5es&nbsp;reais,&nbsp;principalmente&nbsp;em&nbsp;log\u00edstica&nbsp;e&nbsp;at\u00e9&nbsp;mesmo&nbsp;na&nbsp;Internet, que se&nbsp;pensarmos&nbsp;bem, \u00e9 um&nbsp;Grafo&nbsp;gigante,&nbsp;roteadores&nbsp;tamb\u00e9m&nbsp;utilizam&nbsp;algoritmos&nbsp;de&nbsp;menor&nbsp;caminho&nbsp;(como&nbsp;Dijkstra)&nbsp;para&nbsp;encontrar&nbsp;o&nbsp;menor&nbsp;caminho&nbsp;entre outros&nbsp;roteadores&nbsp;at\u00e9&nbsp;o IP de&nbsp;destino.&nbsp; Com&nbsp;esses&nbsp;dois&nbsp;conceitos&nbsp;b\u00e1sicos&nbsp;n\u00f3s&nbsp;j\u00e1&nbsp;podemos&nbsp;mudar a forma&nbsp;como&nbsp;armazenamos&nbsp;os&nbsp;nossos&nbsp;dados de forma radical,&nbsp;isso&nbsp;porque&nbsp;n\u00f3s&nbsp;estamos&nbsp;dando&nbsp;muita&nbsp;enfase&nbsp;para&nbsp;os&nbsp;relacionamentos, e&nbsp;n\u00e3o&nbsp;s\u00f3&nbsp;para&nbsp;os&nbsp;dados que&nbsp;temos.&nbsp; Neo4J&nbsp; Durante&nbsp;muito&nbsp;tempo&nbsp;tivemos&nbsp;o&nbsp;conceito&nbsp;de&nbsp;Grafos, mas&nbsp;n\u00e3o&nbsp;aplicamos&nbsp;ele&nbsp;a&nbsp;tecnologia&nbsp;na&nbsp;forma de&nbsp;armazenamento&nbsp;ou&nbsp;de&nbsp;defini\u00e7\u00e3o&nbsp;de dados.&nbsp;At\u00e9&nbsp;que&nbsp;criamos&nbsp;os&nbsp;chamados&nbsp;os&nbsp;bancos&nbsp;de dados&nbsp;orientados&nbsp;a&nbsp;Grafos.&hellip;<\/p>\n","protected":false},"author":8,"featured_media":1331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[94],"tags":[367,368],"post_series":[],"class_list":["post-1322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriais","tag-grafos","tag-neo4j","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara\" \/>\n<meta property=\"og:description\" content=\"Autor:&nbsp;Lucas&nbsp;Humberto&nbsp;Cabrera&nbsp;Santos Grafos&nbsp; Grafos&nbsp;s\u00e3o&nbsp;um&nbsp;conceito&nbsp;extremamente&nbsp;antigo&nbsp;(a&nbsp;primeira&nbsp;men\u00e7\u00e3o&nbsp;a&nbsp;isso&nbsp;remonta&nbsp;a&nbsp;Leonhard Euler em 1736)&nbsp;de&nbsp;armazenamento&nbsp;e&nbsp;visualiza\u00e7\u00e3o&nbsp;de dados e&nbsp;suas&nbsp;rela\u00e7\u00f5es.&nbsp;Basicamente&nbsp;um&nbsp;Grafo&nbsp;\u00e9&nbsp;composto&nbsp;de&nbsp;duas&nbsp;partes&nbsp;b\u00e1sicas:&nbsp; N\u00f3: O&nbsp;n\u00f3&nbsp;\u00e9 o&nbsp;representante&nbsp;de&nbsp;uma&nbsp;entidade&nbsp;do&nbsp;sistema, por&nbsp;exemplo, um&nbsp;usu\u00e1rio, um&nbsp;Role, um&nbsp;Scope&nbsp; Arestas:&nbsp;As&nbsp;arestas&nbsp;s\u00e3o&nbsp;os&nbsp;relacionamentos&nbsp;em&nbsp;si&nbsp; Este \u00e9 o&nbsp;exemplo&nbsp;de um&nbsp;Grafo&nbsp;simples:&nbsp; Aqui&nbsp;temos&nbsp;dois&nbsp;n\u00f3s, 1 e 2 que&nbsp;est\u00e3o&nbsp;conectados&nbsp;atrav\u00e9s&nbsp;de&nbsp;uma&nbsp;rela\u00e7\u00e3o&nbsp;de &#8220;FOLLOWS&#8221;, que&nbsp;possui&nbsp;uma&nbsp;propriedade&nbsp;Since&nbsp;que&nbsp;diz&nbsp;desde&nbsp;quando&nbsp;aquela&nbsp;pessoa&nbsp;1 segue a&nbsp;pessoa&nbsp;2.&nbsp;Perceba&nbsp;que&nbsp;os&nbsp;n\u00f3s&nbsp;tamb\u00e9m&nbsp;podem&nbsp;ter&nbsp;propriedades&nbsp;e&nbsp;al\u00e9m&nbsp;disso,&nbsp;tamb\u00e9m&nbsp;podemos&nbsp;definir&nbsp;Labels&nbsp;para&nbsp;cada&nbsp;um dos&nbsp;n\u00f3s.&nbsp;Ent\u00e3o,&nbsp;como&nbsp;estamos&nbsp;falando&nbsp;de&nbsp;pessoas,&nbsp;poder\u00edamos&nbsp;ter&nbsp;um&nbsp;n\u00f3&nbsp;Alice:&nbsp;Person,&nbsp;onde&nbsp;Alice&nbsp;seria&nbsp;o&nbsp;identificador&nbsp;do&nbsp;n\u00f3&nbsp;e&nbsp;Person&nbsp;seria&nbsp;a&nbsp;categoria,&nbsp;ou&nbsp;a&nbsp;Label&nbsp;desse&nbsp;n\u00f3.&nbsp;Ent\u00e3o&nbsp;podemos&nbsp;montar&nbsp;um&nbsp;Grafo&nbsp;simples&nbsp;como&nbsp;o do&nbsp;exemplo&nbsp;a&nbsp;seguir:&nbsp; Ou&nbsp;ent\u00e3o&nbsp;um&nbsp;Grafo&nbsp;mais&nbsp;complexo&nbsp;como&nbsp;o do&nbsp;pr\u00f3ximo&nbsp;exemplo:&nbsp; Para&nbsp;dar&nbsp;uma&nbsp;no\u00e7\u00e3o&nbsp;da&nbsp;import\u00e2ncia&nbsp;de&nbsp;grafos,&nbsp;hoje,&nbsp;principalmente,&nbsp;eles&nbsp;s\u00e3o&nbsp;muito&nbsp;utilizados&nbsp;em&nbsp;diversas&nbsp;aplica\u00e7\u00f5es&nbsp;reais,&nbsp;principalmente&nbsp;em&nbsp;log\u00edstica&nbsp;e&nbsp;at\u00e9&nbsp;mesmo&nbsp;na&nbsp;Internet, que se&nbsp;pensarmos&nbsp;bem, \u00e9 um&nbsp;Grafo&nbsp;gigante,&nbsp;roteadores&nbsp;tamb\u00e9m&nbsp;utilizam&nbsp;algoritmos&nbsp;de&nbsp;menor&nbsp;caminho&nbsp;(como&nbsp;Dijkstra)&nbsp;para&nbsp;encontrar&nbsp;o&nbsp;menor&nbsp;caminho&nbsp;entre outros&nbsp;roteadores&nbsp;at\u00e9&nbsp;o IP de&nbsp;destino.&nbsp; Com&nbsp;esses&nbsp;dois&nbsp;conceitos&nbsp;b\u00e1sicos&nbsp;n\u00f3s&nbsp;j\u00e1&nbsp;podemos&nbsp;mudar a forma&nbsp;como&nbsp;armazenamos&nbsp;os&nbsp;nossos&nbsp;dados de forma radical,&nbsp;isso&nbsp;porque&nbsp;n\u00f3s&nbsp;estamos&nbsp;dando&nbsp;muita&nbsp;enfase&nbsp;para&nbsp;os&nbsp;relacionamentos, e&nbsp;n\u00e3o&nbsp;s\u00f3&nbsp;para&nbsp;os&nbsp;dados que&nbsp;temos.&nbsp; Neo4J&nbsp; Durante&nbsp;muito&nbsp;tempo&nbsp;tivemos&nbsp;o&nbsp;conceito&nbsp;de&nbsp;Grafos, mas&nbsp;n\u00e3o&nbsp;aplicamos&nbsp;ele&nbsp;a&nbsp;tecnologia&nbsp;na&nbsp;forma de&nbsp;armazenamento&nbsp;ou&nbsp;de&nbsp;defini\u00e7\u00e3o&nbsp;de dados.&nbsp;At\u00e9&nbsp;que&nbsp;criamos&nbsp;os&nbsp;chamados&nbsp;os&nbsp;bancos&nbsp;de dados&nbsp;orientados&nbsp;a&nbsp;Grafos.&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog da FCamara\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-16T19:04:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-05T14:57:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png\" \/>\n\t<meta property=\"og:image:width\" content=\"260\" \/>\n\t<meta property=\"og:image:height\" content=\"205\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"fcnuvem\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"fcnuvem\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\"},\"author\":{\"name\":\"fcnuvem\",\"@id\":\"https:\/\/fcamara.com\/blog\/#\/schema\/person\/62d48659a26297896002e2434a44e28a\"},\"headline\":\"Parte 2 &#8211; Dando Superpoderes aos Seus Dados com Neo4J e Grafos\",\"datePublished\":\"2021-11-16T19:04:11+00:00\",\"dateModified\":\"2022-12-05T14:57:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\"},\"wordCount\":2164,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fcamara.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png\",\"keywords\":[\"grafos\",\"neo4j\"],\"articleSection\":[\"Tutoriais\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\",\"url\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\",\"name\":\"Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara\",\"isPartOf\":{\"@id\":\"https:\/\/fcamara.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png\",\"datePublished\":\"2021-11-16T19:04:11+00:00\",\"dateModified\":\"2022-12-05T14:57:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage\",\"url\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png\",\"contentUrl\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png\",\"width\":260,\"height\":205},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/fcamara.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"aplicativo mobile\",\"item\":\"https:\/\/fcamara.com\/blog\/tags\/aplicativo-mobile\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Parte 2 &#8211; Dando Superpoderes aos Seus Dados com Neo4J e Grafos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fcamara.com\/blog\/#website\",\"url\":\"https:\/\/fcamara.com\/blog\/\",\"name\":\"Blog da FCamara\",\"description\":\"Esta \u00e9 a \u00e1rea de insights sobre o mercado de tecnologia.\",\"publisher\":{\"@id\":\"https:\/\/fcamara.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fcamara.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fcamara.com\/blog\/#organization\",\"name\":\"Blog da FCamara\",\"url\":\"https:\/\/fcamara.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/fcamara.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2024\/07\/FCamara-Blog-laranja.webp\",\"contentUrl\":\"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2024\/07\/FCamara-Blog-laranja.webp\",\"width\":459,\"height\":68,\"caption\":\"Blog da FCamara\"},\"image\":{\"@id\":\"https:\/\/fcamara.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fcamara.com\/blog\/#\/schema\/person\/62d48659a26297896002e2434a44e28a\",\"name\":\"fcnuvem\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"fcnuvem\"},\"url\":\"https:\/\/fcamara.com\/blog\/author\/fcnuvem\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/","og_locale":"pt_BR","og_type":"article","og_title":"Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara","og_description":"Autor:&nbsp;Lucas&nbsp;Humberto&nbsp;Cabrera&nbsp;Santos Grafos&nbsp; Grafos&nbsp;s\u00e3o&nbsp;um&nbsp;conceito&nbsp;extremamente&nbsp;antigo&nbsp;(a&nbsp;primeira&nbsp;men\u00e7\u00e3o&nbsp;a&nbsp;isso&nbsp;remonta&nbsp;a&nbsp;Leonhard Euler em 1736)&nbsp;de&nbsp;armazenamento&nbsp;e&nbsp;visualiza\u00e7\u00e3o&nbsp;de dados e&nbsp;suas&nbsp;rela\u00e7\u00f5es.&nbsp;Basicamente&nbsp;um&nbsp;Grafo&nbsp;\u00e9&nbsp;composto&nbsp;de&nbsp;duas&nbsp;partes&nbsp;b\u00e1sicas:&nbsp; N\u00f3: O&nbsp;n\u00f3&nbsp;\u00e9 o&nbsp;representante&nbsp;de&nbsp;uma&nbsp;entidade&nbsp;do&nbsp;sistema, por&nbsp;exemplo, um&nbsp;usu\u00e1rio, um&nbsp;Role, um&nbsp;Scope&nbsp; Arestas:&nbsp;As&nbsp;arestas&nbsp;s\u00e3o&nbsp;os&nbsp;relacionamentos&nbsp;em&nbsp;si&nbsp; Este \u00e9 o&nbsp;exemplo&nbsp;de um&nbsp;Grafo&nbsp;simples:&nbsp; Aqui&nbsp;temos&nbsp;dois&nbsp;n\u00f3s, 1 e 2 que&nbsp;est\u00e3o&nbsp;conectados&nbsp;atrav\u00e9s&nbsp;de&nbsp;uma&nbsp;rela\u00e7\u00e3o&nbsp;de &#8220;FOLLOWS&#8221;, que&nbsp;possui&nbsp;uma&nbsp;propriedade&nbsp;Since&nbsp;que&nbsp;diz&nbsp;desde&nbsp;quando&nbsp;aquela&nbsp;pessoa&nbsp;1 segue a&nbsp;pessoa&nbsp;2.&nbsp;Perceba&nbsp;que&nbsp;os&nbsp;n\u00f3s&nbsp;tamb\u00e9m&nbsp;podem&nbsp;ter&nbsp;propriedades&nbsp;e&nbsp;al\u00e9m&nbsp;disso,&nbsp;tamb\u00e9m&nbsp;podemos&nbsp;definir&nbsp;Labels&nbsp;para&nbsp;cada&nbsp;um dos&nbsp;n\u00f3s.&nbsp;Ent\u00e3o,&nbsp;como&nbsp;estamos&nbsp;falando&nbsp;de&nbsp;pessoas,&nbsp;poder\u00edamos&nbsp;ter&nbsp;um&nbsp;n\u00f3&nbsp;Alice:&nbsp;Person,&nbsp;onde&nbsp;Alice&nbsp;seria&nbsp;o&nbsp;identificador&nbsp;do&nbsp;n\u00f3&nbsp;e&nbsp;Person&nbsp;seria&nbsp;a&nbsp;categoria,&nbsp;ou&nbsp;a&nbsp;Label&nbsp;desse&nbsp;n\u00f3.&nbsp;Ent\u00e3o&nbsp;podemos&nbsp;montar&nbsp;um&nbsp;Grafo&nbsp;simples&nbsp;como&nbsp;o do&nbsp;exemplo&nbsp;a&nbsp;seguir:&nbsp; Ou&nbsp;ent\u00e3o&nbsp;um&nbsp;Grafo&nbsp;mais&nbsp;complexo&nbsp;como&nbsp;o do&nbsp;pr\u00f3ximo&nbsp;exemplo:&nbsp; Para&nbsp;dar&nbsp;uma&nbsp;no\u00e7\u00e3o&nbsp;da&nbsp;import\u00e2ncia&nbsp;de&nbsp;grafos,&nbsp;hoje,&nbsp;principalmente,&nbsp;eles&nbsp;s\u00e3o&nbsp;muito&nbsp;utilizados&nbsp;em&nbsp;diversas&nbsp;aplica\u00e7\u00f5es&nbsp;reais,&nbsp;principalmente&nbsp;em&nbsp;log\u00edstica&nbsp;e&nbsp;at\u00e9&nbsp;mesmo&nbsp;na&nbsp;Internet, que se&nbsp;pensarmos&nbsp;bem, \u00e9 um&nbsp;Grafo&nbsp;gigante,&nbsp;roteadores&nbsp;tamb\u00e9m&nbsp;utilizam&nbsp;algoritmos&nbsp;de&nbsp;menor&nbsp;caminho&nbsp;(como&nbsp;Dijkstra)&nbsp;para&nbsp;encontrar&nbsp;o&nbsp;menor&nbsp;caminho&nbsp;entre outros&nbsp;roteadores&nbsp;at\u00e9&nbsp;o IP de&nbsp;destino.&nbsp; Com&nbsp;esses&nbsp;dois&nbsp;conceitos&nbsp;b\u00e1sicos&nbsp;n\u00f3s&nbsp;j\u00e1&nbsp;podemos&nbsp;mudar a forma&nbsp;como&nbsp;armazenamos&nbsp;os&nbsp;nossos&nbsp;dados de forma radical,&nbsp;isso&nbsp;porque&nbsp;n\u00f3s&nbsp;estamos&nbsp;dando&nbsp;muita&nbsp;enfase&nbsp;para&nbsp;os&nbsp;relacionamentos, e&nbsp;n\u00e3o&nbsp;s\u00f3&nbsp;para&nbsp;os&nbsp;dados que&nbsp;temos.&nbsp; Neo4J&nbsp; Durante&nbsp;muito&nbsp;tempo&nbsp;tivemos&nbsp;o&nbsp;conceito&nbsp;de&nbsp;Grafos, mas&nbsp;n\u00e3o&nbsp;aplicamos&nbsp;ele&nbsp;a&nbsp;tecnologia&nbsp;na&nbsp;forma de&nbsp;armazenamento&nbsp;ou&nbsp;de&nbsp;defini\u00e7\u00e3o&nbsp;de dados.&nbsp;At\u00e9&nbsp;que&nbsp;criamos&nbsp;os&nbsp;chamados&nbsp;os&nbsp;bancos&nbsp;de dados&nbsp;orientados&nbsp;a&nbsp;Grafos.&hellip;","og_url":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/","og_site_name":"Blog da FCamara","article_published_time":"2021-11-16T19:04:11+00:00","article_modified_time":"2022-12-05T14:57:58+00:00","og_image":[{"width":260,"height":205,"url":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png","type":"image\/png"}],"author":"fcnuvem","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"fcnuvem","Est. tempo de leitura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#article","isPartOf":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/"},"author":{"name":"fcnuvem","@id":"https:\/\/fcamara.com\/blog\/#\/schema\/person\/62d48659a26297896002e2434a44e28a"},"headline":"Parte 2 &#8211; Dando Superpoderes aos Seus Dados com Neo4J e Grafos","datePublished":"2021-11-16T19:04:11+00:00","dateModified":"2022-12-05T14:57:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/"},"wordCount":2164,"commentCount":0,"publisher":{"@id":"https:\/\/fcamara.com\/blog\/#organization"},"image":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png","keywords":["grafos","neo4j"],"articleSection":["Tutoriais"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/","url":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/","name":"Parte 2 - Dando Superpoderes aos Seus Dados com Neo4J e Grafos - Blog da FCamara","isPartOf":{"@id":"https:\/\/fcamara.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage"},"image":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png","datePublished":"2021-11-16T19:04:11+00:00","dateModified":"2022-12-05T14:57:58+00:00","breadcrumb":{"@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#primaryimage","url":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png","contentUrl":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2021\/11\/Thumb-Blog-FCnuvem-Neo4J.png","width":260,"height":205},{"@type":"BreadcrumbList","@id":"https:\/\/fcamara.com\/blog\/blog-dando-superpoderes-aos-seus-dados-com-neo4j-e-grafos-parte-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/fcamara.com\/blog\/"},{"@type":"ListItem","position":2,"name":"aplicativo mobile","item":"https:\/\/fcamara.com\/blog\/tags\/aplicativo-mobile\/"},{"@type":"ListItem","position":3,"name":"Parte 2 &#8211; Dando Superpoderes aos Seus Dados com Neo4J e Grafos"}]},{"@type":"WebSite","@id":"https:\/\/fcamara.com\/blog\/#website","url":"https:\/\/fcamara.com\/blog\/","name":"Blog da FCamara","description":"Esta \u00e9 a \u00e1rea de insights sobre o mercado de tecnologia.","publisher":{"@id":"https:\/\/fcamara.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fcamara.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/fcamara.com\/blog\/#organization","name":"Blog da FCamara","url":"https:\/\/fcamara.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/fcamara.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2024\/07\/FCamara-Blog-laranja.webp","contentUrl":"https:\/\/fcamara.com\/blog\/wp-content\/uploads\/2024\/07\/FCamara-Blog-laranja.webp","width":459,"height":68,"caption":"Blog da FCamara"},"image":{"@id":"https:\/\/fcamara.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fcamara.com\/blog\/#\/schema\/person\/62d48659a26297896002e2434a44e28a","name":"fcnuvem","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"fcnuvem"},"url":"https:\/\/fcamara.com\/blog\/author\/fcnuvem\/"}]}},"lang":"br","translations":{"br":1322},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/posts\/1322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/comments?post=1322"}],"version-history":[{"count":1,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/posts\/1322\/revisions"}],"predecessor-version":[{"id":6159,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/posts\/1322\/revisions\/6159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/media\/1331"}],"wp:attachment":[{"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/media?parent=1322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/categories?post=1322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/tags?post=1322"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/fcamara.com\/blog\/wp-json\/wp\/v2\/post_series?post=1322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}