Designing Data Intensive Applications

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

Oracle Objeto-Relacional. Pablo Vieira Florentino

BCD29008 Banco de dados

BCD29008 Banco de dados

Introdução a Bancos de Dados

Processamento de Consultas SPARQL em uma Base Relacional de Entidades

NoSQL Apache Cassandra para DBAs. Conceitos básicos que todo DBA deve conhecer sobre Apache Cassandra.

Linked Data Management. Capítulo 9: Experiences with Virtuoso Cluster RDF Column Store

BANCO DE DADOS. Araújo Lima. Fev / Araújo

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Bancos de Dados Orientados a Grafos. Mateus Lana e Thiago Santana

SGBD NoSQL. Débora Souza in940

AULA 3 Classificação dos Sistemas de Informação

Bancos de Dados NoSQL

MongoDB BANCO DE DADOS NÃO RELACIONAL ORIENTADO A DOCUMENTOS BANCO DE DADOS AVANÇADOS VALÉRIA TIMES

Big Data. A Nova Onda

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

BCD29008 Banco de dados

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Análise de Linguagem em um Banco de Dados Relacional Comparada ao Modelo NoSQL Analysis of Language in a Relational Database Compared to NoSQL Model

BD Objeto-Relacional - Motivação

Capítulo 7: SPARQL Processamento de consulta em nuvem

SQL Básica. Andre Noel

Prof. Daniela Barreiro Claro

Uma Breve Introdução. Andréa Bordin

ARMAZENAMENTO E PROCESSAMENTO DE BANCOS DE DADOS RELACIONAIS

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

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIENCIAS DA COMPUTAÇÃO

UM ESTUDO EXPLANATÓRIO ACERCA DOS MODELOS DE BANCO DE DADOS NOSQL

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

Fundamentos de Bases de Dados e-fólio C Resolução e Critérios de Correção

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Mapeando Relacionamentos Entre Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima

BANCO DE DADOS. Araújo Lima. Ago / Araújo

Prof. Daniela Barreiro Claro

Resolvendo objeto-relacional impedance mismatch com hibernate

Administração de Banco de Dados

SGBD NoSQL 1. Dácio Alves Florêncio

SQL Linguagem de Definição de Dados

Otimização do Mapeamento de Consultas SPARQL para SQL

UNIVERSIDADE FEEVALE ANDERSON BUENO TRINDADE CONVERSÃO DE UM DIAGRAMA E-R PARA UMA BASE DE DADOS MONGODB (NOSQL)

Monitoria GDI. Aula Prática. OR (Aula 1)

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

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

Aula 06 Sistemas Embarcados LT38C

Curso Online de Banco de Dados. Plano de Estudo

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Introdução ao PostgreSQL

GUIA RÁPIDO DE UTILIZAÇÃO DO APLICATIVO RDB2LOD

NoSQL. Seminário da disciplina de Banco de Dados Aluno: Rodrigo Barbosa Folha. IN940 Recife-PE Julho de 2015

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Sharding e replicação com Citus

Persistência de Objetos

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

CASSANDRA: BANCO DE DADOS NÃO RELACIONAL DE ALTO DESEMPENHO

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

Modelo Entidade-Relacionamento (E-R)

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

Evandro Deliberal Aula 01

Análise Comparativa entre Bancos de Dados NoSQL para Realização de Cache de Banco de Dados em Aplicações Web

4. BD Objeto-Relacional (BDOR)

Marcio Victorino. Análise de Informações TCU - TI

Mapeamento Lógico/Relacional com JPA

Analisando o desempenho de bancos de dados orientados a grafos e relacionais sobre discos mecânicos e de estado sólido: uma abordagem comparativa

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Korth Silberschatz Sundarshan. Sistema de Banco de Dados, 5/E

10g PRINCIPAIS SERVIDORES UNIVERSAIS

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Versão º. Semestre de 2006 Marcelo Nogueira São José dos Campos - SP

Banco de Dados. Maurício Edgar Stivanello

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Comandos de Manipulação

Page 1. Prof. Constantino Jacob

Structured Query Language (SQL) Aula Prática

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch. Luiz Henrique Zambom Santana

O Modelo Relacional. Criando relações em SQL

MAPEAMENTO OBJETO RELACIONAL

Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Aula 7 SBD ER para Relacional. Profa. Elaine Faria UFU

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Cassandra no Desenvolvimento de Aplicações para serviços Móveis. por J.P. Eiti Kimura

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Informática Parte 5 Prof. Márcio Hunecke

Abordagem relacional. Capítulo 4

Licenciatura em Informática

Transcrição:

Designing Data Intensive Applications Capítulo 2: Modelos de Dados e Linguagens de Consulta Carmem Hara

Modelos de Dados nas Aplicações Objetos e Relacionamentos nas Aplicações Projeto de Aplicações Modelo de Dados: JSON, XML, Relacional (Cap. 2) Armazenamento de Dados Modelo de Armazenamento Físico: Arquivo, disco (Cap. 3) Projeto do SGBD Cada nível esconde as complexidades dos níveis inferiores Necessidade de mapeamento entre níveis

Modelos de Dados - Histórico 1970: surgimento do modelo relacional 1985: domínio do modelo relacional no mercado Final de 1980-1990: surgimento dos SGBDs orientados a objetos 2000: surgimento do XML 2010: nosql Escalabilidade para dar suporte ao Volume Flexibilidade para dar suporte à Variedade Velocidade de processamento Persistência Poliglota

Incompatibilidade Relacional-Objeto Utilização de linguagens de programação orientadas a objeto Armazenamento em um SGBD Relacional normalização Mapeamento: ferramentas ORM (Object-relational mapping) Hibernate, ActiveRecord

Relacionamentos 1:n

Representação em JSON { user_id : 251, first_name : Bill, last_name : Gates, summary : Co chair of the Bill&Melinda...Active Blogger, region_id : us:91, industry_id : 131, photo_url : /p/7/000/253/05b/308dde.jpg, positions : [ { job_title : Co chair, organization : Bill&Melinda Gates Foundation }, job_title : Co founder, Chairman, organization : microsoft }], education :[ { school_name : Harvard, start : 1973, end: 1975}, { school_name : Lakeside, start : null, end : null}], contact_info : { blog : http://thegatesnotes.com, twitter : http://twitter.com/billgates } }

JSON Adota um modelo orientado a documento MongoDB, RethinkDB, CouchDB, Espresso Representação tem localidade Representação explícita de relacionamentos 1:n

Relacionamentos N:1 e N:M Utilização de identificadores evita duplicação region_id, industry_id organization e school_name deveriam ser identificadores?

Relacionamentos N:1 e N:M Modelo relacional: chaves estrangeiras Modelo de documentos: referência de documento similar ao modelo de redes

Modelos de Dados JSON ~ Modelo Hierárquico Bom para representar relacionamentos 1:n Sem suporte para junções Modelo de Redes Registros com múltiplos pais Ligações em forma de apontadores Modelo Relacional Ligações baseadas em valores Maior nível de abstração

Comparação Localidade de dados baseado em relacionamento 1:N Relacional Não Documento Sim Suporte a junções Sim Não Suporte para relacionamentos N:M Sim Não Flexibilidade de Esquema Verificação na escrita ~ checagem de tipo estática Verificação na leitura ~ checagem de tipo dinâmica Bom para dados heterogêneos

Localidade de Relacionamentos 1:N Existem propostas para extensão do modelo relacional Oracle: Multiple-table index cluster tables Google Spanner Linhas aninhadas dentro da tabela pai Big Table Conceito de família de colunas Modelo híbrido relacional + documento (similar a o que ocorreu com o modelo XML)

Linguagens de Consulta Declarativa Relacional: SQL Imperativa Hierárquico, Rede select * from animals where family= sharks Mais fácil de Otimizar Paralelizar function getsharks(){ var sharks = [] for (i=0; i<animals.length; i++){ if (animals[i].family == 'sharks' sharks.push(animals[i]); } return sharks; }

ERBD' 2011 Map Reduce

Map Reduce: MongoDB Número de observações de tubarão por mês db.observations.mapreduce{ function map(){ var year = this.observationts.getfullyear(); var month = this.observatonts.getmonth()+1; emit( year + - + month, this.numanimals); }, function reduce( key, values ){ return Array.sum( values ); }, { query: {family: Sharks }, out: monthlysharkreport } }

MongoDB: aggregation pipeline Número de observações de tubarão por mês db.observations.aggregate([ { $match: {family: Sharks } }, { $group: { _id: { Year: {$year: $observationts }, Month: {$month: $observationts } }, TotalAnimals: {$sum: $numanimals } } } ])

Modelos de Grafos Grafos de Propriedades

Grafos de Propriedades Cada vértice contém: Identificador único Conjunto de arestas de saída Conjunto de arestas de entrada Conjunto de propriedades (pares chave-valor) Cada aresta contém: Identificador único Vértice de origem Vértice de destino Rótulo que identifica o tipo de relacionamento Conjunto de propriedades (pares chave-valor)

Armazenamento em um SGBDR CREATE TABLE vertice ( id_vertice integer PRIMARY KEY, propriedades json ); CREATE TABLE arestas ( id_aresta integer PRIMARY KEY, origem integer REFERENCES vertice, destino integer REFERENCES vertice, rotulo text, proriedades json ); CREATE INDEX vertices_destino ON arestas (destino); CREATE INDEX vertices_origem ON arestas (origem); Problema: consultas recursivas para percurso no grafo

Linguagem Cypher do Neo4j Base: CREATE (Namerica: Location {name: 'North America', type: 'continent'}), (USA: Location {name: 'Unites States', type: 'country'}), (Idaho: Location {name: 'Idaho', type: 'state'}), (Lucy: Person {name: 'Lucy'}), (Idaho -[:WITHIN]-> (USA) -[:WITHIN]-> (Namerica), (Lucy -[:BORN_IN]-> (Idaho) Consulta: MATH (person)-[:born_in]-> () -[:WITHIN*0..]-> (Namerica:Location {name: 'North America') RETURN person.name

RDF - SPARQL RDF: modelo baseado em triplas SPARQL SELECT?personName WHERE {?person :name?personname.?person :bornin / :within* / :name North America. }

Base: conjunto de fatos Datalog name(namerica, 'North America') Type(namerica, continent) name(usa, 'United States') type(usa, country) within(usa, namerica) name(idaho, 'Idaho') type(idaho, state) Within(idaho, usa) name(lucy, 'Lucy') born_in(lucy, idaho)

Datalog - consulta Regras: within_recursive(x,y):- name(x,y) within_recursive(x,y):- within(x,z), within_recursive(z,y) Born_places(Name,Place) :- name(person,name), born_in(person, L), within_recursive(l, Place) Consulta:?- Born_places( Name, 'North America' )

Avaliação do predicado within_recursive

Conclusão Modelo relacional representação de relacionamentos N:M baseado em valores Maior nível de abstração Modelos nosql Documentos: Grafos Contém dados auto-contidos Relacionamentos entre documentos são raro Representa relacionamentos arbitrários entre dados e documentos

Perguntas 1) Considere um sistema de compras (ou leilões online). Apresente possíveis falhas de confiabilidade, escalabilidade e de manutenção que podem ocorrer e uma possível solução para cada uma delas. 2) Considere os modelos relacional, de documento e de grafos. Para cada um, apresente uma aplicação para a qual o modelo é apropriado para o armazenamento dos seus dados. Justifique por que o modelo é apropriado.