NoSQL - 2014. Edward Ribeiro



Documentos relacionados
Prof. Daniela Barreiro Claro

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)

Prof. Daniela Barreiro Claro

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

Engenharia de software 2011A. Trabalho sobre

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

Uma Breve Introdução. Andréa Bordin

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

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

Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL

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

NoSQL no desenvolvimento de aplicações Web colaborativas

NoSQL no Desenvolvimento de Aplicações Web Colaborativas

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

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

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

MAC NoSQL. Mauricio De Diana

ESTUDO SOBRE A TECNOLOGIA DE BANCO DE DADOS NoSQL

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

Shermila Guerra Santa Cruz Orientador: Ricardo Rodrigues Ciferri

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

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

Por que? A WEB está substituindo o desktop Google Gmail, Google Docs, Amazon, Flickr, Facebook, Twitter, YouTube Mudança de Paradigma:

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

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

Programação Orientada a Objetos

Escalabilidade, as modas e (No)SQL. Fernando Ike

ANÁLISE COMPARATIVA SOBRE A DISPONIBILIDADE DE BANCO DE DADOS NAS NUVENS

BIG DATA: UTILIZANDO A INTERNET PARA TOMADA DE DECISÕES

Fundamentos de Banco de Dados

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

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

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

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Roteiro. BCC321 - Banco de Dados I. Conceitos Básicos. Conceitos Básicos. O que é um banco de dados (BD)?

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

LINGUAGEM DE BANCO DE DADOS

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

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

CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Banco de Dados. Maurício Edgar Stivanello

Disciplina de Banco de Dados Parte V

Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

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

David Hows Peter Membrey Eelco Plugge

NoSQL como suporte à análise de dados nãonormalizados. volume

Bancos de Dados em Clouds

HadoopDB. Edson Ie Serviço Federal de Processamento de Dados - SERPRO

Sistemas Distribuídos

ESTRUTURA DE SERVER Lílian Simão Oliveira

PVFS-Store - Um repositório chave-valor com garantia de localidade

Prof.: Clayton Maciel Costa

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Projeto de Banco de Dados Distribuído Proj o e j to t o de d B a B nc n o o d e d Da D do d s o D i D str t ibu b í u do d s

Sistemas Operacionais

SISTEMA GERENCIADOR DE BANCO DE DADOS

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

Arquitetura de Banco de Dados

Tópicos Especiais em Redes de Telecomunicações

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

Bancos de Dados NoSQL PROF.: DR. LUÍS CARLOS COSTA FONSECA

Disciplina de Banco de Dados Introdução

NoSQL. Arthur Azevedo Rafael Benedito

Interoperabilidade entre Bancos de Dados Relacionais e Bancos de Dados NoSQL (Parte 2)

Módulo de consultas distribuídas do Innispan. Israel Danilo Lacerra

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

Web Crawlers Open Source. Heitor de Souza Ganzeli Analista de Projetos do nic.br

O que são Bancos de Dados?

Palavras Chave: NoSQL, Escalabilidade, Banco de dados, web 2.0.

CHECKLIST PARA AUXILIAR NA DEFINIÇÃO DA ARQUITETURA DE BANCO DE DADOS

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Tabela de roteamento

Abordagem NoSQL uma real alternativa

Bancos de Dados Paralelos. Alunos: ALLAN ROGER BELLO WILLIAN DIAS TAMAGI

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

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

PEER DATA MANAGEMENT SYSTEM

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

SISTEMAS DISTRIBUÍDOS

Introdução ao Apache Lucene: inserindo busca eficiente ao seu projeto de software

Persistência e Banco de Dados em Jogos Digitais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Transcrição:

NoSQL - 2014 Edward Ribeiro

Edward Pesquisador independente (UnB) Professor Universitário Analista de Sistemas (Senado) Contribuidor de software livre

Agenda 1. Motivação 2. Definição 3. Descrição a. Modelos de Dados b. Arquitetura 4. Perspectivas Futuras

Os SGBDs relacionais reinam soberanos por mais de 30 anos...

2008

2012

2012 (cont.)

2013

2013 (cont)

2014

Qual a solução? Sistemas Distribuídos + Bancos de Dados

O que é um banco NoSQL? Um banco de dados distribuído, não relacional, criado para trabalhar com grandes quantidade de dados (big data) utilizando servidores de prateleira.

Como assim distribuído? Particionamento de Dados Balanceamento de carga Tolerância a Falhas

Sharding (particionamento horizontal)

Como assim não relacional? Não tem transações ACID* Não tem SQL** Não tem tabelas*** * = alguns NoSQL já suportam transações multi-registro, mas não full ACID ** = alguns NoSQL possuem linguagens de consulta inspiradas em SQL *** = alguns NoSQL tem tabelas

O que é Big Data?

O que é Big Data? Não existe uma definição única Definição informal: dados que não cabem em uma única máquina

O que é Big Data Exemplos: Logs de servidores web de sites famosos (cnn.com) Cliques em produtos (amazon.com) Dados de bioinformática Redes sociais (facebook.com, twitter. com)

Big Data: Exemplo ebay possui: 2.000.000.000.000 de registros em uma tabela de eventos 640 partições de dados 4.000.000.000 de registros/dia 6 PB de dados compactados para 1.2 PB Fonte: 14th Int'l Workshop on High Perf Transaction Sys, 2011

Hardware de Prateleira? Não são hardwares de específicos (como mainframes) Podem ser facilmente substituídos Sujeitos a falhas regulares Os sistemas NoSQL são projetados para tolerar e continuar funcionando mesmo na presença de falha(s) em alguma(s) máquina(s) do cluster.

Características dos NoSQL Alta escalabilidade Tolerância a falhas Alta vazão (throughput) Arquitetura Distribuída (cluster ou cloud) Open Source* * = a maioria dos sistemas NoSQL atuais

De onde vieram os NoSQL? Sistemas internos desenvolvidos pela Google (Bigtable), e Amazon (Dynamo) A arquitetura destes dois sistemas influencia a grande maioria dos sistemas NoSQL até hoje.

Tipos de NoSQL Chave-Valor Família de Colunas Documentos Grafo Full Text Search

Tipos de NoSQL Chave-Valor Riak, Redis, DynamoDB Família de Colunas Cassandra, HBase Documentos MongoDB, CouchDB Grafo Neo4J Esta lista não é exaustiva, apresenta somente os mais importantes de cada categoria

Ressalva Entender os modelos de dados dos sistemas NoSQL sem entender a arquitetura dos bancos é uma tarefa complexa, portanto veremos os dois em conjunto.

Teorema CAP Consistência Disponbilidade Tolerância a Partição

Arquitetura - Chave-Valor

Hash Table http://en.wikipedia.org/wiki/hash_table

"Dynamo: amazon's highly available key-value store", Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall, Werner Vogels in SIGOPS Oper. Syst. Rev., New York, NY, USA, October, 2007.

Dynamo Criada para o carrinho de compras da Amazon Pense em tabela hash ao invés de SGBD Cada par chave-valor é distribuído igualmente* entre os nós do cluster. Operações: put(key, value) get(key) value Redis e Riak: soluções open source que implementam o modelo do Dynamo

Arquitetura - Família de Colunas

"Bigtable: A Distributed Storage System for Structured Data", Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber in OSDI'06: Seventh Symposium on Operating System Design and Implementation, Seattle, WA, November, 2006.

BigTable Criado pela Google para o gerenciamento de dados (semi-) estruturados (~ 2004) Mapa esparso multi-dimensional, ordenado e distribuído Aplicações: Search, Earth, Play, G+, etc.

BigTable Modelo de Dados (chave, família de coluna, coluna) célula Chaves são ordenas lexicograficamente

Log Structured Merge Tree (LSM) 1. Escritas vão para um commit log (em disco) e armazenamento em memória (memtable) 2. Periodicamente a memtable é descarregada para disco (flushed) 3. Arquivos em disco são periodicamente compactados (compaction)

LSM Tree

Vector Clocks Leslie Lamport Relação de causalidade ordem parcial em sistemas distribuídos relógios lógicos - "happens before"

Vector Clocks Um relógio vetorial é uma n-upla v = {t1, t2, t3,..., tn} de valores de relógio para n nós. v1 < v2 iff para todo v1i < v2i para pelo menos um i, v1i < v2i

Gossip Disseminação de informação em um cluster com economia de largura de banda; "Simples" de implementar;

Gossip - Algoritmo 1. A cada T, cada nó escolhe aleatoriamente um nó para conversar; segundos 2. Os dois nós trocam suas listas de nós conhecidos; 3. Cada nó mantém um timestamp de si

BigTable - Arquitetura

BigTable Architecture

HBase Clone do BigTable criado pela Apache Escrito em Java Executa sobre o Hbase Assim como o BigTable executa sobre GFS Outros sistemas de arquivos suportados Componentes: Master HMaster Tablet Server HRegion

HBase no Facebook 6 Bilhões de mensagens por dia 75 Bilhões de operações R/W por dia Picos de 1.5 milhões de operações/segundo 55 % de leituras x 45% de escritas 2 PB de dados compactados no HBase 6 PB com replicação 1.5 milhões de ops/s Fonte: 14th Int'l Workshop on High Perf Transaction Sys, 2001

Cassandra Criado pelo Facebook Adotado pela organização Apache Une o modelo do BigTable (Google) com o modelo do Dynamo (Amazon) Escrito em Java Keyspace, Column, Column Family, Row Key

Cassandra

Arquitetura - Documentos

MongoDB Registros são documentos JSON {id=159230, nome : Bruno, idade : 10, pai : Edward } Analogia*: Documento JSON ~ Tupla Coleção de documentos JSON ~ Tabela Coleção de coleções de docs JSON ~ Banco * = toda analogia é imperfeita!

MongoDB

Bancos Textuais As alternativas livres em geral baseiam-se na biblioteca Apache Lucene Os exemplos mais proeminentes são: ElasticSearch Solr

ElasticSearch Servidor de indexação construído sobre o Lucene Interface RESTful Cluster

ElasticSearch - Indexação ElasticSearch armazena documentos Um documento JSON (equivalentes a uma tupla em um banco SQL) Cada documento é armazenado em um index que possui um type e um id O documento JSON original será armazenado no campo _source index = como um banco de dados em um banco SQL type = equivale a uma tabela de um banco relacional id = identifica unicamente o documento (se um não for fornecido, será gerado automaticamente). A combinação index/type/id precisa ser única

ElasticSearch - Indexação curl -XPUT 'http://localhost:9200/blog/post/1' -d ' { "user": "eddie", "postdate": "2014-04-09", "body": "NoSQL", "title": "Conferences" }'

ElasticSearch - Indexação curl -XPUT 'http://localhost:9200/blog/post/2' -d ' { "user": "eddie", "postdate": "2014-04-09", "body": "Nick Cave, NIN", "title": "Favorite Artists" }'

ElasticSearch - Recuperação curl -XGET 'http://localhost:9200/blog/post/1?pretty=true' curl -XGET 'http://localhost:9200/blog/post/2?pretty=true' curl 'http://localhost:9200/blog/post/_search?q=user:dilbert&pretty=true' curl -XGET 'http://localhost:9200/blog/_search?pretty=true' -d ' { "query" : { "range" : { "postdate" : { "from" : "2014-01-01", "to" : "2014-12-01" } } } }'

Utilizar um NoSQL em produção traz vantagens irrefutáveis e riscos inerentes!

Obrigado!