Orientado à documentos

Slides:



Advertisements
Apresentações semelhantes
BANCO DE DADOS I Prof. Ricardo Santos.
Advertisements

Arquitetura Baseada em Serviços Web Services e BD e NoSQL
Ana Paula B. Barboza Ivana Xavier Rodrigues
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Triggers Renata Viegas.
Funcionalidades de um SGBD
Prof.: Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO
Maurício Edgar Stivanello
SGBD.
Bacharelado em Ciência da Computação
Introdução à Engenharia da Computação
Material III-Bimestre Wagner Santos C. de Jesus
MySQL Gerdson de Araújo Silva Universidade Federal de Alagoas Maceió-AL, 21 de maio de 2009.
EL e JSTL Prof. Danton Cavalcanti Franco Junior
Administração de Sistemas de Informação Banco de Dados
DOCUMENTO CONFIDENCIAL DA MICROSOFT Set 2009 | Página 1 | Apresentação para BDMs.
Arquitetura e Linguagens
SEDNA SGBD XML NATIVO.
Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA
Treinamento do Microsoft® Access® 2010
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Design Patterns / Acesso ao banco de dados (java.sql)
MapReduce Conceitos e Aplicações
Prof. Rodrigo de Matos Vargas
TRÊS BILHÕES DE GIGABYTES DE DADOS POR DIA. FAZENDO PARTE DO GIGANTESCO ARMAZENAMENTO DE DADOS, COM ENORME VELOCIDADE, O BIG DATA É BASEADO NO CONCEITO.
Um novo tipo de banco de dados não relacional
NoSQL: O Futuro dos Bancos de Dados para a Web
Bancos de dados NOSQL (Not Only SQL)
PrograMação para internet
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
NoSQL colunas Jairo Tiburtino dos Santos.
Contexto da disciplina
A abordagem de banco de dados para gerenciamento de dados
Configuração do Ambiente de programação
PostGres: Um Banco de Dados Orientado a Objetos
Sistemas NoSQL - Chave-Valor
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
TECNOLOGIAS E LINGUAGENS PARA BANCO DE DADOS I
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
SQLite Banco de Dados II.
Ricardo Ferreira Schiavo
Banco de Dados I I Comandos SQL
Banco de dados 1 Modelagem de Dados Utilizando MER
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Tópicos Especiais em Redes de Computadores 6º Semestre Aula 04 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL.
NoSQL UFRPE. NoSQL ? NoSQL...  São diferentes sistemas de armazenamento que vieram para suprir necessidades em demandas onde os bancos de dados tradicionais.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
UCSal – Bacharelado em Informática Banco de Dados Profa. Semíramis Assis
UCSal – Bacharelado em Informática Banco de Dados Profa. Semíramis Assis
Plano de Ensino Conceitos e Características Tipos de Banco de Dados
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução ao Projeto.
Temas para Monografia: Vou Escolher Logo o Meu!!!
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
ARQUITETURA WEB SERVICE TGM
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Webservices.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Copyright © 2011 Ramez Elmasri and Shamkant Navathe slide 1 Tópicos  Introdução  Um exemplo  Características da abordagem de banco de dados  Vantagens.
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Rhizome. Roteiro Definição Metas Características Arquitetura Tecnologias envolvidas Referências.
Modelagem de Banco de Dados: Conceitos
NoSQL.
Transcrição da apresentação:

Orientado à documentos NoSQL Orientado à documentos

Apresentação NoSQL Problemas que levaram a utilização do NoSQL Quando utilizar NoSQL? Tipos Orientação à documentos MapReduce JSON CouchDB MongoDB

NoSQL Quando surgiu Na criação do termo, existia ausência do SQL e o modelo ainda centrado no relacional O movimento NoSQL "é completamente distinto do modelo relacional e portanto deveria ser chamado "NoREL" ou algo que produzisse o mesmo efeito". Carlo Strozzi Termo NoSQL vira abreviação de Not Only SQL

NoSQL O que é NoSQL hoje? Not Only SQL (Não apenas, não somente SQL) NoSQL = Não Relacional Atualmente é uma altenativa ao modelo relacional

NoSQL Problemas que motivaram a utilização do NoSQL BigData Volume Variedade Velocidade dos Dados Modelo relacional perde desempenho quando utiliza BigData

NoSQL Teorema CAP Consistency, Availability and Partition tolerance Conceitos ACID x BASE ACID (Atomicity, Consistency, Isolation and Durability) BASE (Basically Available, Soft-state, Eventually consistency) Traz uma sensível diminuição no custo computacional para a garantia de consistência dos dados em relação à SGBDs tradicionais.

NoSQL MapReduce MapReduce(Framework desenvolvido pelo Google) - Modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados. MAP - processo de mapear a requisição do originador. REDUCE - processo de agregação do resultado em algo consolidado.

NoSQL Quando utilizar NoSQL? Escalabilidade Flexibilidade Manipulação de quantidade massiva de dados Bom desempenho Facilidade para consultas

NoSQL Tipos de NoSQL Key/Value: DynamoDb, Riak, Azure Table Storage, Berkeley DB, etc. Wide column store: Hadoop, Cassanda, Hypertable, Amazon SimpleDB, etc. Document store: MongoDb, CouchDB, RavenDb, etc. Graph store: Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc.

NoSQL

Orientação à documentos

Orientação à documentos Definição Segundo Anderson(Anderson, et al., 2009), BDODs utilizam o conceito de dados e documentos autocontidos e auto descritivos, isso implica que o documento em si já define como ele deve ser apresentado e o significado dos dados em cuja sua estrutura estão armazenados. Exemplo: Uma nota fiscal.

Orientação à documentos Características Permite que tenha redundância e inconsistência. Contêm todas as informações importantes em um único documento. Livre de esquemas. Identificadores Únicos Universais(UUID) Consultar os documentos através de métodos avançados de agrupamento e filtragem: MapReduce

Orientação à documentos JSON É um padrão leve de intercâmbio de dados, projetado para facilitar a leitura e escrita de estruturas, também sendo de fácil interpretação e geração por máquinas. Suas estruturas são baseadas em um subconjunto da especificação da linguagem JavaScript e permitem a construção de estruturas de dados partindo de dois conceitos: uma coleção de pares chave/valor e uma lista ordenada de valores (JSON, 2008).

Orientação à documentos Formato JSON

Orientação à documentos Vantagens Ganha Flexibilidade, disponibilidade, linguagem de consulta simples e performance. Desvantagem Perde em consistência.

Orientação à documentos Ferramentas mais utilizadas

CouchDB Definição O CouchDB é um sistema distribuído, acessível através de uma API RESTful, realiza o armazenamento versionado de objetos que utiliza a abstração de documentos, disponibiliza uma forma de agregar e consultar dados através do MapReduce e replica seus dados de forma incremental, bidirecional e multi-master, utilizando o MVCC, um algoritmo de consenso de conflitos, onde os dados estão sujeitos a consistência eventual em cada nó (Anderson, et al., 2009).

CouchDB Linha de comando Interface do Futon RESTful API Cria documentos no formato JSON

CouchDB RESTful API Leitura do banco de dados Escreve: GET http://localhost:5984/ Retorna: {"couchdb":"Welcome","version":"1.0.1"}

CouchDB RESTful API Criando ou atualizando o banco de dados Escreve: PUT http://localhost:5984/database Retorna: {"ok":true}

CouchDB RESTful API Deletando o banco de dados Escreve: DELETE http://localhost:5984/database Retorna: {"ok":true}

CouchDB RESTful API Criando o documento Escreve: PUT http://localhost:5984/database/doc-d'{"nome":"Henrique","apelido":"Gogó"}‘ Retorna: {"ok":true,"id":"doc","rev":"1-446a0c701e94053b4c3baaa5ef3fe68c"}

me":"Henrique","apelido":"Gog\u00f3"} CouchDB RESTful API Ver o documento Escreve: GET http://localhost:5984/database/doc Retorna: {"_id":"doc","_rev":"1- 446a0c701e94053b4c3baaa5ef3fe68c","no me":"Henrique","apelido":"Gog\u00f3"}

CouchDB RESTful API Atualizar o documento Escreve: PUT http://localhost:5984/database/doc -d '{"_rev":"1-446a0c701e94053b4c3baaa5ef3fe68c", "apelido":"Gogs"}‘ Retorna: {"ok":true,"id":"doc","rev":"2- 191182436ca9a532ec1124aa91b5a8da"}

CouchDB RESTful API Deletar o documento Escreve: DELETE http://localhost:5984/database/doc?rev=2- 191182436ca9a532ec1124aa91b5a8da Retorna: {"ok":true,"id":"doc","rev":"3-4c1033574d7d38e57fe92a1b51fc667d"}

CouchDB MapReduce function(doc) { if (doc.city == "Fortaleza") emit(doc.title,doc.month+"/"+doc.year); }

CouchDB Map

CouchDB View

CouchDB View

CouchDB Reduce function(keys, values) { return values; }

CouchDB Reduce

CouchDB View

MongoDB Apresentação da ferramenta Código aberto Alta performance (desempenho) Sem esquemas Orientado à documentos Escrito em C++ Multiplataforma É formado por um conjunto de Aplicativos JSON

MongoDB Criação Início 2007 1ª versão em 2009 Versão atual: MongoDB 2.4 Released

MongoDB Funcionamento JSON – estilo de documento com esquemas dinâmicos para oferecer simplicidade e poder. Suporte de índice completo Auto-Sharding - escala horizontalmente sem comprometer a funcionalidade. Consultas Ricas, baseada em documentos MapReduce - Agregação flexível e processamento de dados. GridFS - Armazenar arquivos de qualquer tamanho sem complicação.

MongoDB Analogia à BD Relacional O documento JSON seria o registro; A collection seria uma tabela; Os índices seriam os índices mesmo; O embedding e o linking seria o join.

MongoDB Algumas características interessantes do MongoDB É possível acrescentar dados, por meio de um update; Não existe um schema dentro das coleções, ou seja, as collections podem ser dinâmicas; Há upserts, que podem atualizar se documento já existe, ou cria se ele não existe; Você pode armazenar o seu dado da forma que ele ocorre na “natureza”.

MongoDB Comparando expressões Create

MongoDB Comparando expressões Delete

MongoDB Comparando expressões Update

MongoDB Comparando expressões Insert

MongoDB Comparando expressões Select

MongoDB Comparando expressões Select

MongoDB Comparando expressões Select

MongoDB Empresas que utilizam o MongoDB Dentre as empresas que já usam o MongoDB, destaque para a globo.com (com o Cartola FC), SourceForge e a FourSquare. Outros projetos com MongoDB na Globo.com são: receitas.com, novo catálogo de vídeos da emissora, com 800 mil arquivos cadastrados, e o site de participações em eventos e programas da Globo.

MongoDB Avaliação da equipe do Cartola FC Velocidade (2x mais rápido que o MySQL) Sem necessidade de um ORM (não tem abstração de tabela, por exemplo) Acesso mais natural aos dados (não tem que escrever query) Sem schema / sem migrations (com exceções, mas em geral não há problema de executar migration) Failover automático Possibilidade de escalar escritas com Sharding OBS.: Em alguns momentos específicos o cartola obteve quase 30 mil sessões simultâneas.

MongoDB Agora pense em vídeo HD, geolocalização, mensagens em tempo real, realidade aumentada, imagens em tempo próximo ao real por satélite. Pense em todos esses dados, e na velocidade que as pessoas vão querer isso. Então, pense sobre qual banco de dados que você deseja começar a usar agora.

Duvidas?

Referências Documentação. Disponível em: < http://www.mongodb.org/>. Creative Commons. Processamento de Dados Massivos/Projeto e implementação de aplicações Big Data/Agregação eficiente de dados temporais. Disponível em: http://pt.wikibooks.org/wiki/Processamento_de_Dados_Massivos/Projeto_e_implementação_de_aplicações_Big_Data/Agregação_eficiente_de_dados_temporais>.   Ianni, Vinicius. Introdução aos bancos de dados NoSQL. Disponível em: <http://www.devmedia.com.br/introducao-aos-bancos-de-dados-nosql/26044#ixzz2O7Sed5P3>. Ianni, Vinicius. Big Data: Algumas definições e, sim, serve também para o pequeno negócio! Disponível em: <http://www.devmedia.com.br/space.asp?id=198225>. Lerner, Alberto. Introdução ao MongoDB – Direto da fonte! Disponível em: <http://ensinar.wordpress.com/tag/mongodb/>. Lennon, Joe. Explore o MongoDB. Disponível em: <http://www.ibm.com/developerworks/br/library/os-mongodb4/>. Nascimento, Jean3 Razões para usar MongoDB. Disponível em: <http://imasters.com.br/artigo/18334/mongodb/3-razoes-para-usar-mongodb/>. Nascimento, Jean. Como utilizar selects com MongoDB. Disponível em: <http://imasters.com.br/artigo/17308/mongodb/como-utilizar-selects-com-mongodb//>.