Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA

Slides:



Advertisements
Apresentações semelhantes
Conteúdo: - Atribuição de Valores a Variáveis.
Advertisements

Banco de Dados I Aula 20.
Triggers Renata Viegas.
DESENHO de BASE de DADOS RELACIONAL
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
Prof.: Bruno Rafael de Oliveira Rodrigues
Trabalho de Desenvolvimento
LEIC/FEUP Tecnologia de Sistemas de Gestão de Bases de Dados
Configuração de servidores SMTP e POP3
Walfredo Cirne walfredo.dsc.ufpb.br
Hibernate Apresentação
MySQL Gerdson de Araújo Silva Universidade Federal de Alagoas Maceió-AL, 21 de maio de 2009.
Gerenciamento dos Recursos de Dados
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Professora: Vanda Pereira
Python Persistência de Dados
Query Tuning Lílian Simão Oliveira.
XIV Jornada de Cursos .NET com C# Antônio Carlos Bruno Inojosa.
Aula R Prof. Naércio Filho Técnico em Informática
Aula 7 Prof. Naércio Filho Técnico em Informática
TIC 10º ano Construir Bases de Dados
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS Hélder Lima e Silva - hmls
Prof. Rodrigo de Matos Vargas
Um novo tipo de banco de dados não relacional
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
Pilhas Profa. Nádia Félix.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
Conceitos Programas Programação Linguagens de Programação SQL.
Módulo I Capítulo 5: Vetores
Baseado no material do Professor Raul Paradeda
Introdução ao Microsoft Word 2007
Configuração do Ambiente de programação
Sistemas NoSQL - Chave-Valor
A Linguagem PHP Instituto Vianna Júnior Desenvolvimento para Web Prof. Lúcia Helena de Magalhães 2008.
Orientado à documentos
Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
SEGUNDA FASE / S2B MIC PERNAMBUCO
Escola Básica e Secundária Vieira de Araújo
1 FOLHA DE CÁLCULO 3. 2 Tabelas / Listas O Excel também permite armazenar informação Podemos organizar a informação em Tabelas / Listas.
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
Curso de Análise e Desenvolvimento de Sistemas Projeto de Banco de Dados Marcelo da Silveira Siedler.
Tutorial Wikispaces Edição de páginas Modificado por Ricardo Pimentel a partir de um original de Jennifer TIC – Ano lectivo 2008/2009.
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
LINQ e Entity Framework
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Armazenamento de Informação em HSQL LEIC-Tagus – TDB 05/06 Bruno Azenha nº
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.
Plano de Ensino Conceitos e Características Tipos de Banco de Dados
Array e ArrayList LPOO – 01/09/14.
 Bancos de dado ou bases de dados são coleções organizadas de informações (dados) que se relacionam de forma a criar um sentido e dar mais eficiência.
Programação para Web I AULA 2 BANCO DE DADOS.
TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO FOLHA DE CÁLCULO OPERAÇÕES ELEMENTARES NA FOLHA DE CÁLCULO.
Modelos de dados.
Vamos agora veificar o bullet para o Formato MEDLINE (MEDLINE Format) e reter 20 resultados por página e Ordenar pelas Mais Recentes opções.
Guardando dados no Android. Persistência de informações Android fornece três tipos de persistência: Preferências compartilhadas (propriedades) Arquivos.
Persistência de dados e padrão DAO
PROJETO INTERDISCIPLINAR ‘DBERP’. Equipe de Desenvolvimento Banco de Dados  Adiel Silveira de Lemos  Ana Renata de Siqueira  Bruno Michael da Silva.
Modelagem de Dados Aula 3.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
MySQL STORAGE & TRANSACTIONs Pedro da Silva. Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions.
NoSQL.
Carlos Feiteira / Felipe de Assis
Transcrição da apresentação:

Mongo db Base de dados NoSQL - Nuno Peralta - João Proença GUGA http://www.youtube.com/watch?v=CvIr-2lMLsk Mongo db - Nuno Peralta - João Proença

O que é? Sistema de Base de Dados; Não usa SQL, orientada a documentos; Usa o formato Binary JSON; Schema-Less; Escrito em C; Suporta índices; Auto-Sharding; Insert / Update -> Dados armazenados em memória em segundo plano, depois gravados em disco. Guga Schema-Less -> Não é necessário parar o site para adicionar uma nova coluna numa “tabela”. Auto-Sharding -> Preparado para escalar horizontalmente. Podemos ter vários nós (maquinas) como se fossem todos um único nó e se por algum motivo uma máquina não funcionar temos sempre outra que a possa substituir.

Qual a necessidade de nosql? Cloud Computing; Estrutura de DBs actual não suporta a escalabilidade exigida pela nuvem; Muitos dados na WEB para serem armazenados, necessidades de grandes armazenamentos; Respostas mais rápidas pelas aplicações; Diminuição do custo em DBA (DataBase Administrators) e DBM (DataBase Managements). Guga - Cloud Computing -> Cada vez há mais a necessidade em armazenar os dados em serviços para que possam ser acedidos em qualquer parte do mundo. O acesso é feito pela a internet daí o conceito de nuvem.

objectivo Ser diferente do modelo relacional, por isso NoREL? NoSQL é mais comercial =P Base de dados horizontais: Baixo custo; Poder de processamento; Facilidade de manutenção. Guga

Modelo de dados Bases de Dados Colecções Documentos BSON Guga

Bases de Dados Ficheiro (.ns) com todos os namespaces (nome das colecções); Faz a junção física das colecções. Guga

ColeCções Equivalente a tabelas numa base de dados relacional; Faz a junção lógica dos documentos. Guga Em vez da estrutura relacional que o MySQL permite fazer, o esquema é baseado em colecções que não se relacionam entre si (pelo menos o sistema de base de dados não faz isso ele próprio). Portanto, vamos ter uma colecção para cada entidade, mas não vamos poder fazer JOINs entre elas. Isso terá que ser feito manualmente pela aplicação em si.

Documentos Equivalente a linhas numa base de dados relacional; Onde os dados em si são armazenados; Todos eles têm um ID único. Guga O MongoDB é "schema-free", por isso cada item documento na colecção pode ter qualquer coisa, tal como arrays, booleanos, etc, e podem ter coisas diferentes uns dos outros.

BSON JSON em binário; Formato de armazenamento de dados no MongoDB; Guarda todos outros tipos de dados (string, int, etc). Guga

BASE de DADOS DE grandes dimensões Tem limites nas colecções. Aumentar limite -> Correr mais processos “mongod” e particionar a DB entre processos. Muitas empresas a usar MongoDB, mas grande parte não o usa como DB principal. Erros de memória e espaço, como aconteceu no nosso trabalho. Nuno Agora vou falar da parte prática da coisa. Por defeito, MongoDB tem um limite de 24000 namespaces por base de dados, e cada namespace (ficheiro .ns) tem um limite de 2GB. A maioria das empresas usa para funcionalidades específicas, em que precisam de grande performance, mas não precisam de relacionar com nada nem fazer JOINs, ou seja, não necessitam de usar um sistema de base de dados relacional.

TRABALHO - EXEMPLO Nuno Nós tentámos inserir a base de dados toda do IMDB. Em 5 minutos inseriu todos os filmes, mas, enquanto estava a inserir os actores, a certa altura os erros de memória e espaço começaram a aparecer como podemos ver neste screenshot.

Interface aplicações externas Queries MongoDB bastante verbosas; Chave-valor; Aplicação deve verificar consistência/integridade. Nuno Alguém que já esteja familiarizado com JSON não irá ter grandes dificuldades em fazer uma aplicação para MongoDB. Deve ser a aplicação a verificar consistencia/integridade, pois no MongoDB não há relações.

Vs mysql Tabela de suporte: Nuno Fizemos um programa para conseguirmos explicar melhor as diferenças nas consultas entre estas duas bases de dados. Esse programa gerou várias tabelas em que em cima de cada uma delas mostra como seria feito para uma Base de Dados MySQL e para uma MongoDB. As queries do Mongo fazem-se directamente nas colecções, depois de seleccionadas. Por isso é que neste caso a query é vazia, pois já estava a colecção seleccionada.

Vs mysql Nuno Há várias chaves pre-definidas para se usarem nas queries. (explicar o que a query faz)

Vs mysql Nuno Uma query mais directa.

Vs mysql Nuno No MongoDB, as colunas a seleccionar escolhem-se depois. O resto fica a NULL.

Vs mysql { } Nuno Todas as queries anteriores (JSON) metiam-se dentro do find(). No MongoDB, as linhas são todas retornadas, depois o sort() e o limit() sao feitos por for a.

Vs mysql Nuno

Vs mysql (tempos) Inserção: Selecção: MongoDB MySQL   MongoDB MySQL 0.031123876571655 segundos 29.805167913437 segundos   MongoDB MySQL 0.0034830570220947 segundos 6.8415830135345 segundos Nuno Com 2 pequenos programas em PHP, inserimos 10000 itens e fizemos 10000 selecções nas 2 bases de dados para depois fazermos o benchmark entre o MongoDB e o MySQL.

Alguns EXEMPLOS PRÁTICOS Fazer a ligação: $connection = new Mongo(); Seleccionar uma base de dados: $database = $connection->selectDB(‘nomedabase’); Seleccionar uma colecção: $collection = $database->selectCollection(‘nomedacoleccao’); Nuno São criadas automaticamente se não existirem.

Alguns EXEMPLOS PRÁTICOS Criar documento: $doc = array(“nome” => “Nuno”, “email” => “nuno@mdb.com”); Guardar documento na coleção: $collection->save($doc); SELECTS: $gt, $lt, $gte, $lte, $eq, $neq, $size, $exists, $in, $nin, group(), limit(), skip(), sort(). UPDATES: $set, $unset, $push, $pull, $inc $collection->update(<select>, <novo_obj>, <upsert>, <multi>); Nuno PHP não suporta linguagem JSON na sua sintaxe, por isso usamos arrays de PHP, que são equivalentes. Updates – apenas 1 linha por defeito; a função update() tem a flag “multi” para mudar isso $inc – incrementar $set – definir valor no campo $unset – remove campo Upsert

índices Indice único: Remover um índice: Criar/garantir índice: $collection->ensureIndex(array(“campo" => 1)); Indice único: $collection->ensureIndex(array(“campo" => 1), array("unique" => 1)); Remover um índice: $collection->deleteIndex(“campo”); Nuno Cria índice caso não exista.

Conclusão MongoDB é mais rápido; Nem sempre é a melhor escolha; Usar quando queremos boa performance, os dados não necessitem de consistência, e não seja preciso relacionar tabelas; Para aplicações que necessitam de realtime e históricos; Caso contrário, MySQL. Nuno Apesar de o MongoDB ser muito mais rápido, não quer dizer que seja a melhor escolha para todas as aplicações. É recomendável usar MongoDB quando se quer muito boa performance em bases de dados que não necessitem de muita consistência e não precisam de relacionar tabelas. Caso contrário, recomendamos MySQL. Tal como outros sites o fazem, MongoDB funciona bem em funcionalidades que necessitem de realtime e históricos.