For english version, please click here!/* Ola Senhores,senhoras e senhoritas DBAS!!! Dando continuidade aos posts sobre bancosde dados NoSQL, apresento-lhes um dos modelos mais interessantes. O Graph database(ou Property Graph data model). Um graph e desenhado para armazenar dadosque naturalmente podem ser estruturados em forma grafica. Um rede social e umexemplo tipico, onde temos usuarios que se conectam entre si de varias maneiras(amigo, seguidor, etc..) e se conectam com outras coisas como ideias,posts, produtos (curtir, seguir, etc..) Outros bons exemplos sao hieraquias, organogramase aplicacoes para web semantica Fig.1 Modelando minha familia Ao inves de tabelas, colunas erelacionamentos, um banco de dados graph e composto por nos (ou vertex),properties e relacionamentos (ou edges). Um no e um objeto que possui propriedades. Exemplo: Em ume-commerce de livros, os nos podem ser Livros, Autores e Editoras. Os Livros podem ser descritos empropriedades como Titulo, Genero, Preco, numero de paginas. Os autorespossuirao Nome, data de Nascimento, biografia, etc... Os relacionamentos estabelecem as relacoesentre os nos. Exemplo: Escrito_por, Editado_por ou E_autor_de. Propriedades tambem podem ser adicionadasao relacionamentos, exemplo: Relacionamento Gosta_de, Intensidade: Muito)Ferramentas A ferramenta que usaremos no exemploabaixo e o Neo4J que pode ser baixando gratuitamente aqui. O Neo4J e uma implementacao do BluePrints que por sua vez e uma API generica para modelos graficos. Outras implementacoes do BluePrints sao TinkerGraph, OrientDB, DEX, InfiniteGraph, Rexster, e SailRDFStores A linguagem que usaremos para manipular o banco e a Gremlin, que e baseada em Groovy e Pipes. Mas existem muitas formas de fazer esse acesso (REST, Cypher). O ideal novamente e sempre escolher a ferramenta certa para a funcao certa. Nota: Eu ate peco desculpas pela avalanche de nomes e siglas desse topico, isso deixa qualquer iniciante confuso, principalmente o pessoal que vem do mundo relacional onde os produtos estao bem mais consolidados e simplificados, mas e importante ter nocao completa de tudo o que envolve o Graph database principalmente se voce for implementa-lo em uma aplicacao no mundo real.Criando um graph Se seu OS for Windows, basta baixar opacote do Neo4J, descompacta-lo e executar o Neo4J.bat que esta na pasta Bin. Ele rodara o script e abrira uma janelajava (e o servico rodando) O Neo4J ao iniciar te disponibiliza umainterface web hospedada na sua maquina. O caminho padrao para acesso e o http://localhost:7474/webadmin/ Para inserir ono clique na aba Console e selecione a linguagem Gremlin no canto superiordireito.Inserindo nos, propriedades e listando. Vamos criar uma rede social basica, os nos serao os usuarios e o unico relacionamento possivel e CONHECER. Segue codigo para adicionar algumas pessoas (pequena homenagem a alguns amigos visitantes) Logo apos a ASCII Art do Gremlin o webadmin ja carrega a variagel g querepresenta o grafico.Na sequencia usamos a funcao addVertex para adicionar o primeiro no.(g.addVertex) As properties do no sao passadas como parametro (um JSON), que basicamentetem essa estrutura[Nome_da_Propriedade:Valor_Da_Propriedade, ...]E interessante notar que diferente do banco relacional que possue umschema fixo de colunas, as propriedades de cada no podem variar, existindo ounao. Todo noSQL e schemaless.Para listar os nos, simplesmente use g.V, onde V e a colecao de Verticesdentro do grafico g. A lista