Neo4j Aprendendo conceitos por trás do Neo4j. Sem SQL? Apresentação. Por que grafos, por que agora? Por que grafos, por que agora?



Documentos relacionados
Bancos de dados NOSQL (Not Only SQL)

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

NoSQL. Cintia Freitas de Moura. BCC 441 Banco de Dados II / 2014

Prof. Daniela Barreiro Claro

Uma Breve Introdução. Andréa Bordin

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II

Engenharia de software 2011A. Trabalho sobre

Prof. Daniela Barreiro Claro

ESTUDO SOBRE A TECNOLOGIA DE BANCO DE DADOS NoSQL

Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL

MAC NoSQL. Mauricio De Diana

NoSQL. Arthur Azevedo Rafael Benedito

Bases de Dados Relacional/Objeto e NoSQL. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Shermila Guerra Santa Cruz Orientador: Ricardo Rodrigues Ciferri

Evandro Deliberal Aula 01

NoSQL Edward Ribeiro

NoSQL: Vantagens, Desvantagens e Compromissos. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

Sistemas Distribuídos

Grandes volumes de dados pertenciam ao domínio das aplicações científicas até há 15 anos atrás.

Universidade Vila Velha. Iago Binow, Lorran Pegoretti, Luiz Marcon e Pedro Malta

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

BIG DATA: UMA INTRODUÇÃO. Prof. Ronaldo R. Goldschmidt

E N AT O M O L I N A T O T H

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

Utilização da Classe de Banco de Dados NOSQL como Solução para Manipulação de Diversas Estruturas de Dados

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Bancos de Dados em Clouds

Análise comparativa sobre bases de dados para armazenamento e consulta de dados não estruturados no formato JSON.

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Bases de Dados. O que é uma Base de Dados? Pós-Grduação em SIG

Modelo de Dados. Modelo para organização dos dados de um BD

TRINITY Project Microsoft Research Asia

Introdução a Banco de Dados

Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa*

Megastore: Solução para as crescentes exigências dos serviços na nuvem. Katharina C. Garcia

Google s Globally-Distributed Database. (Banco de Dados Globalmente Distribuído da Google)

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

NoSQL no Desenvolvimento de Aplicações Web Colaborativas

Introdução. O que é um Banco de Dados (BD)?

NoSQL no desenvolvimento de aplicações Web colaborativas

Avaliação do desempenho de gerenciadores de bancos de dados multi modelo em aplicações com persistência poliglota

Seminário apresentado em 29/06/2017 Disciplina: Sistemas Distribuídos Professora: Noemi Rodriguez Aluno: Ricardo Dias

A Nova Interface do Data Discovery no MicroStrategy 10. Anderson Santos, Sales Engineer Brazil 11/08/2015

Gerador de aplicativos Oracle PL/SQL WEB baseado na estrutura das tabelas do. Wagner da Silva Orientando Prof. Alexander Roberto Valdameri Orientador

DESENVOLVIMENTO DE UMA FERRAMENTA DE COLETA E ARMAZENAMENTO DE DADOS PARA BIG DATA

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS

Administração de Sistemas de Informação Gerenciais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro.

NoSQL. Panorama atual através das experiências obtidas no projeto SciELO.

Big Data. A Nova Onda

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Categorias de Padrões

MINERAÇÃO DE DADOS APLICADA. Pedro Henrique Bragioni Las Casas


NoSQL: onde, como e por quê? Rodrigo Hjort rodrigo@hjort.co

Padrões de projeto 1

SGBDs NoSQL Modelos e Sistemas de Colunas e Grafos. Aluno: Jorge Dias Disciplina: IN940

FUNDAMENTOS DE SISTEMAS DE INFORMAÇÃO

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Noções de. Microsoft SQL Server. Microsoft SQL Server

Descoberta de Conhecimento em Bases de Dados. Classificação

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java API JDBC

Abordagem NoSQL uma real alternativa

Sistema para aprendizado de Álgebra Relacional e Linguagem SQL

Model-Driven Engineering Geração de modelos de software e especificações usando a plataforma IBM

Sistemas Operacionais

CAPÍTULO 2. Grafos e Redes

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Arquitetura de Banco de Dados

Roteiro 2 Conceitos Gerais

Persistência de dados com JPA. Hélder Antero Amaral Nunes

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta

Treinamento PostgreSQL - Aula 01

Técnicas e Linguagens para Banco de Dados I

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Fernando Kasten Peinado

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Curso de Aprendizado Industrial Desenvolvedor WEB. Disciplina: Banco de Dados Professora: Cheli Mendes Costa Modelo de Dados

Um Estudo sobre Bancos de Dados em Grafos Nativos

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Aula 5. Carlos Eduardo de Carvalho Dantas

Arquiteturas escaláveis utilizando ferramentas Shared Nothing. Victor Canô

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas

NoSQL na Web 2.0: Um Estudo Comparativo de Bancos Não-Relacionais para Armazenamento de Dados na Web 2.0

Transcrição:

Neo4j Aprendendo conceitos por trás do Neo4j Universidade Federal do Paraná - UFPR Programa de Pós-Graduação em Informática - PPGInf Oficina de Banco de Dados - CI829 Profa: Dra. Carmem Hara Aluno: Walmir Couto Sem SQL? Apresentação Por que grafos, por que agora? O que é um graph database; Overview NOSQL; Graph databases e Neo4j; Como usamos o Neo4j; Conclusões Por que grafos, por que agora? 1.Big Data é uma tendência; 2.NOSQL é a resposta; 3.Grande em volume e em densidade; Todo mundo está falando em grafos;

Um Grafo? Sim, um grafo! Um grafo... Você conhece as estruturas de dados comuns linked lists, árvores, grafos objeto Grafo é uma estrutura de dados de propósito geral adequado para qualquer dado conectado Algoritmos e padrões bem conhecidos estudado desde as 7 pontes de Leonard Euler (1736) Modelo Relacional de Codd (1970) não é uma ideia nova, apenas uma ideia para o momento atual Alguns grafos bem conhecidos... dimond butterfly star franklin robertson horton bull hall-janko grafo kollegger (todas as possibilidades de grafo)

Um graph database: Otimizado para as conexões entre os registros Extremamente rápido nas consultas através dos registros Um banco de dados: transacional com as operações usuais Um banco de dados relacional pode dizer a você a média de idade de todos que estão nesta reunião... mas um graph database vai te dizer quem tem mais chances de comprar uma cerveja (por exemplo). Você conhece um relacional... Então agora considere apenas as relações! As 4 tendências... As 4 tendências: Tendência 1: o tamanho do conjunto de dados (crescimento vertiginoso) Tendência 2: conectividade As 4 tendências: Tendência 3: semi-estrutura Individualização do conteúdo Na listas de salários dos anos 70, todos os elementos tinham exatamente uma ocupação Na listas de salários dos anos 2000, nós precisamos de 5 colunas de ocupação! Ou 8? Ou 15? A acelerada tendência pela descentralização da geração de conteúdo é a marca da era da participação ( web 2.0 )

As 4 tendências: De um lado: o desempenho dos RDBMS As 4 tendências: Tendência 4: arquitetura Overview NOSQL: Tendência 1: Tamanho Tendência 2: Conectividade Tendência 3: Semi-estrutura Tendência 4: Arquitetura Overview NOSQL: Primeiro de tudo: o nome NoSQL não é Never SQL NoSQL não é No To SQL NoSQL é simplesmente Not Only SQL!

Overview NOSQL: 4 Categorias emergentes no NOSQL... Key-value stores Baseados no artigo Dynamo da Amazon Modelo de dados: coleção (global) de pares de K-V (key-value / chave-valor) Exemplos: Dynomite, Voldemort, Tokyo ColummFamily / BigTable clones Baseados no artigo BigTable da Google Modelo de dados: big table, famílias de colunas Exemplos: HBase, Hypertable, Cassandra Overview NOSQL: 4 Categorias emergentes no NOSQL... Document databases Inspirado no Lotus Notes Modelo de dados: coleções de coleções de K-V (key-value / chave-valor) Exemplos: CouchDB, MongoDB, Riak Graph databases Inspirados por Euler e a teoria dos grafos Modelo de dados: nós, arestas, K-V (chave-valor) em ambos Exemplos: AllegroGraph, Sones, Neo4j Overview NOSQL: Modelos de dados NOSQL... O modelo do Graph DB: representação Abstrações de núcleo: Nós (nodes) Relacionamentos entre os nós Propriedades de ambos

Código (1): construindo um node space Código (1): construindo um node space Código (1b): definindo tipos de relacionamentos O modelo do Graph DB: traversal Traverser framework para percorrer em alta performance através do node space

Código (2): percorrendo um node space Código (3a): percorrendo de forma personalizada

Bonus code: modelo de domínio Como você implementa o seu modelo de domínio? Use o padrão de delegação, isto é, qualquer domínio de entidade envolve um primitivo Neo4j: Domínio de camadas de frameworks Qi4j (www.qi4j.org) Framework para fazer DDD (Domain Driven Design) no Java5 puro Define Entidades / Associações / Propriedades (parece familiar?) Nodes / Relacionamentos / Propriedades Neo4j é um EntityStore por trás Jo4neo (http://code.google.com/p/jo4neo) Orientado a notação Entrelaça a persistência apoiada no Neo4j dentro de um domínio de objetos em tempo de execução Caracterísiticas do sistema Neo4j Baseado em Disco Motor de armazenamento de grafo nativo com customização binária no formato em disco Transacional JTA/JTS, XA, 2PC, Tx recovery, deadlock detection, MVCC, etc. Escalável Vários bilhões de nodos/relac/prop em uma simples JVM Baseado em Disco 6+ anos em produção 24/7

Prós e Contras comparado aos RDBMS + Pode facilmente envolver schemas + Pode representar informações semi-estruturadas + Pode representar grafos/redes (com desempenho) - Carência em ferramentas e framework de suporte - Sem suporte para queries ad-hoc Linguagens de Query SPARQL - SQL for linked data Gremlin - perl for graphs Saiba mais em: http://try.neo4j.org O ecossistema Neo4j Neo4j é um database embutido Componentes do ecossistema: index meta-modelo graph-matching remote-graphdb sparql-engine... Veja mais em: http://components.neo4j.org Escalar - Replicação Teste beta do Neo4j HA Replicação master-slave (primeira configuração) Estilo MySQL Exceto que todas instâncias podem escrever, sincronismo entre a escrita slave & master (consistência forte) Atualizações são propagadas assincronamente para outros slaves (consistência eventual) É possível manipular bilhões de entidades... mas não 100B

Escalar - Particionando Particionamento transparente? Previsão para o Neo4j 2.0 100B? Fácil dizer... extremamente difícil fazer! Fundamentais: BASE & consistência eventual