SlideShare uma empresa Scribd logo
Web Scale Data Management
An Historical Perspective
Harvard Extension School
CSCI E-109 - Data Science, Lecture 17
Margo Seltzer
Regis Pires Magalhães
regismagalhaes@ufc.br
Apresentação baseada na aula 17 de:
• Harvard Extension School
CSCI E-109 - Data Science
Web Scale Data Management
An Historical Perspective
http://www.cs109.org/
http://cm.dce.harvard.edu/2014/01/14328/publicationListin
g.shtml
Agenda
• Início
• O auge dos SGBDs Relacionais
• Renascimento do armazenamento chave-valor
• Armazenamento chave-valor hoje: NoSQL
• Casos de uso
Introdução
• Ideias do passado ressurgem ao longo tempo
empacotadas com outros nomes.
No início
• Década de 1960
• Computadores
▫ Sistemas centralizados
▫ Canais de dados permitindo CPU e IO ao mesmo
tempo.
▫ Armazenamento persistente em tambores.
▫ Buffering e manipulação de interrupções pelo SO
▫ Foco da pesquisa: tornar esses sistemas rápidos.
No início
• Dados
▫ ISAM - Indexed Sequencial Access Method
 Iniciado pela IBM para seus mainframes
 Registros de tamanho fixo
 Cada registro em uma localização específica
 Acesso rápido mesmo em mídia sequencial (fita)
▫ Todos os índices secundários
 Não correspondem à organização física
 Chave serve para construir estruturas de índice
pequenas e eficientes.
▫ Método de acesso fundamental em COBOL.
Organização dos dados: Modelo Rede
• Familiar para quem usa bancos de dados em grafo e
bancos chave-valor.
• Dados representados por coleções de registros (hoje
chamaríamos pares chave-valor).
• Relacionamentos entre registros expressos através
de links entre registros (hoje chamaríamos
ponteiros).
• Aplicações interagiam com os dados navegando por
eles:
▫ Encontre um registro
▫ Siga links
▫ Encontre outros registros
▫ Repita
Modelo Rede: Registros
• Registros compostos de atributos
• Atributos com valor único
• Links conectam dois registros
• Links armazenam posições físicas e não valores
(principal diferença em relação aos SGBDRs)
• Relacionamentos de múltiplos caminhos
representados por registros de links.
Modelo Rede: Registros
• Problema: para reorganizar os dados era
necessário mudar a aplicação.
▫ Organização física muito ligada à aplicação.
▫ As aplicações precisavam conhecer a estrutura dos
dados.
Modelo Relacional
• 1968: Ted Codd propôs o modelo relacional
▫ Desacoplar a representação física da representação
lógica
▫ Armezena “registros” como “tabelas”.
▫ Substitui links por junções implícitas entre tabelas.
• Grande debate sobre desempenho, após o artigo de
Codd.
• Dois grupos transformaram a ideia em software:
▫ IBM: System/R
▫ U.C. Berkeley (Michael Stonebraker e Eugene Wong):
INGRES (INteractive Graphics REtrieval System)
 POSTGRES = POST inGRES
Modelo Relacional
• Os dois grupos exploravam a viabilidade de
implementar o modelo relacional.
• Ambos tiveram grande sucesso e impacto.
System R
RSS  Trabalho semelhante ao do Modelo Rede em termos de manipulação de
ponteiros para encontrar registros de forma eficiente.
Ingres
Implementação muito diferente do System R.
Armazenamento Chave/Valor por dentro
• Sistemas relacionais têm escondido alguma
forma de engine de armazenamento chave-valor.
• Por muitos anos buscou-se esconder o
armazenamento chave-valor por trás de uma
linguagem de consulta e de um nível de
esquema.
• A exceção era o COBOL que continuava a usar
ISAM.
Evolução dos SGBDs
• Novas características: SQL-86, 89, 92, 99, 2003, 2008)
▫ Triggers
▫ Stored Procedures
▫ Report generators
▫ Rules
▫ ...
• Incorporação de novos modelos de dados:
▫ Sistemas Objeto-relacionais
▫ XML
• Tornou-se extremamente grande e complexo ao
incorporar as sucessivas novidades que iam aparecendo
ao longo do tempo.
SGBDRs
• Vantagens
▫ Linguagem declarativa que desacopla os layouts físico e
lógico.
▫ Modificação fácil do esquema.
▫ Bom suporte a consultas ad hoc.
• Desvantagens
▫ Pagar pelo overhead de processar consultas, mesmo quando
as consultas não são complexas.
 Aplicações muito simples terminam usando um SGBD, mas
sem muita necessidade.
▫ Requer sintonia e manutenção por parte do DBA.
▫ Quase sempre é usada IPC (Inter Process Communication)
para acessar o servidor de banco de dados.
▫ Requer definição do esquema.
▫ Não adequado para gerenciar relacionamentos hierárquicos
ou outros relacionamentos complexos.
O advento da Internet
• Novos tipos de aplicações surgiram
▫ Busca
▫ Autenticação (LDAP)
▫ Email
▫ Navegação
▫ Mensagens instantâneas
▫ Servidores Web
▫ Vendas online
▫ Gerenciamento de chave pública
Essas aplicações são diferentes
• Fazem uso intensivo de dados
• Consultas especificadas na aplicação
• Não ad hoc
• Usuários interagem com a aplicação
• Esquemas relativamente simples
• Relatórios não sofisticados
• Desempenho é algo crítico
Os SGBDs relacionais não estavam entregando as funcionalidades
necessárias, mas estavam trazendo overhead.
Surgimento do armazenamento chave-valor
• 1997 – Sleepcat Software iniciou o primeiro banco
comercial para armazenamento chave-valor
(atualmente Oracle Berkeley BD).
▫ Deixar algumas características de lado.
▫ Embutido: links diretamente no espaço de
endereçamento da aplicação.
▫ Rápido: evita ‘parse’ e otimização da consulta
▫ Escalável: executa desde equipamentos móveis a data
centers.
▫ Flexível: ajuste entre funcionalidade e desempenho.
▫ Confiável: recuperação de falhas da aplicação ou do
sistema.
SGBD Relacional x Chave-Valor
BDB – Berkeley DB
TCO – Total Cost of Ownership
De local a distribuído
• Dos mainframes caros aos PCs baratos
▫ Argumento econômico
• Com a evolução da Web, volume, velocidade e
necessidades dos clientes cresceram
exponencialmente
• Excederam a capacidade de um único sistema
• Necessidade de escalabilidade
NoSQL
• Not-only-SQL (2009)
• Provedores (Google, Amazon, Ebay, Facebook,
Yahoo) começaram a se deparar com os limites das
soluções de gerenciamento de dados existentes.
• Sharding (particionamento – muitas partições):
dividir os dados em múltiplos hosts para dividir a
carga.
• Replicação
▫ Permite acesso de vários sites.
▫ Aumenta a disponibilidade.
• Relaxar a consistência: nem sempre é preciso usar a
semântica transacional.
NoSQL
• SGBDs Relacionais focam nas propriedades ACID.
• NoSQL foca em BASE:
▫ Basic Availability: usar replicação para reduzir a
probabilidade de falta de disponibilidade e sharding
para tornar as falhas parciais e não totais.
▫ Soft State: Permitir dados ficarem inconsistentes e
deixar a resolução de tais inconsistências por conta
dos desenvolvedores de aplicações.
▫ Eventually Consistent: Garantir que em um tempo no
futuro o dado assume um estado consistente.
NoSQL
• Problemas comuns
▫ Volumes de transações sem precedentes
▫ Necessidade crítica de baixo tempo de latência
▫ 100% de disponibilidade
• Mudança de hardware
▫ Multiprocessamento simétrico  blades
• Teorema CAP
▫ Escolher dois:
 Consistência: todos os nós vêem o mesmo dado ao
mesmo tempo.
 Disponibilidade: Toda requisição recebe uma resposta
sucesso / falha.
 Tolerância a partição: O sistema continua a operar
mesmo com perdas de mensagens arbitrárias.
▫ SGBDRs (sistemas transacionais) escolhem CA
▫ NoSQL tipicamente escolhe AP ou CP
DB-Engines
• Cálculo do Ranking
▫ Número de menções em websites
▫ Interesse geral do sistemas
▫ Frequência de discussões técnicas sobre o sistema
▫ Número de ofertas de emprego no qual o sistema é
mencionado
▫ Número de perfis em redes profissionais no qual o
sistema é mencionado.
http://db-engines.com/en/ranking
Maio 2014
Maio 2014
Maio 2014
Maio 2014
Maio 2014
Evolução
• 1997: Berkeley DB  armazenamento chave/valor
transacional
• 2001: Berkeley DB introduz replicação para alta
disponibilidade.
• 2006: Google publica artigos sobre Chubby e BigTable.
▫ The Chubby Lock Service for Loosely-Coupled Distributed
Systems
 Mike Burrows
▫ 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
• 2007: Amazon publica artigo sobre Dynamo
▫ Distributed Hash Table (DHT)
▫ Armazenamento chave-valor eventualmente consistente
Evolução
• 2008+: Vários projetos Open Source buscando semelhança
com BigTable/Dynamo
▫ HBase: projeto do Apache Hadoop implementação do BigTable
(2008)
▫ CouchDB: Document Store em Erlang. Controle de concorrência
Multiversão e versionamento (2008)
▫ Cassandra: otimizado a escritas, orientado a coluna, índices
secundários (2009)
▫ MongoDB: Document Store baseada em JSON, indexação, auto-
shardind (2009)
• 2009+: Comercialização
▫ Empresas dando suporte aos produtos Open Source:
 DataStax/Cassandra, Basho/Riak, Cloudera/HBase, 10Gen/MongoDB
 Empresas desenvolvendo produtos comerciais:
 Oracle, Citrusleaf
Escolha
• Escolher o sistema correto para o problema pode
fazer uma grande diferença.
Projeto de sistemas NoSQL
• Sistema de armazenamento usando nós
• Distribuição
• Modelo de Dados
• Modelo de Consistência
▫ Consistência Eventual
▫ Sem consistência
▫ Consistência Transacional
Sistemas de Armazenamento
• Armazenamento Chave-Valor Nativo
▫ Oracle NoSQL Database: Berkeley DB Java
Edition
▫ Basho: Bitcask do Riak, uma hash table
estruturada como log
▫ Amazon: Dynamo, BDB Data Store, BDB JE (ou
MySQL)
▫ Log-structured Merge Trees
 LevelDB
▫ Custom
 BigTables (e clones): explorando sistemas
semelhantes ao Google File System (GFS).
Distribuição
• Questões principais
▫ Como particionar os dados?
▫ Quantas cópias manter?
▫ Todas as cópias são iguais?
• Como particionar os dados?
▫ Particionamento baseado em chave
▫ Particionamento Hash (frequentemente chamado
Sharding)
▫ Partcionamento Geográfico (também chamado
sharding)
 Para evitar problemas com falhas / desastres
Distribuição
• Quantas cópias manter e como?
▫ Usar o sistema de arquivos subjacente (GFS, HDFS)
 E ele cuida de fazer as cópias necessárias.
▫ Três é bom, cinco é melhor, ...
 Por que números ímpares?
 Em caso de divergência, fazer votação pela maioria
▫ Dados de saída (calculáveis / gerados) podem ter apenas uma cópia
• Igualdade das cópias
▫ Single-Master
 Envio ao master e ele copia
 MongoDB, Oracle NoSQL DB
 Preocupação com consistência
▫ Multi-master / Masterless
 Envio a qualquer máquina e ela copia
 Gerenciamento mais complexo
 Pode ser difícil descobrir onde está o dado correto em caso de falha
(escolher o maior?)
 Riak, CouchDB, Couchbase
Modelos de Dados
• Comum
▫ Desnormalização
 Redundância - valores duplicados para melhor desempenho
▫ Sem junções
 Se necessário, a aplicação deve fazer as junções
• Chave/Valor: Pouco esquema ou sem esquema, suporte a consultas com
intervalos pequenos
▫ Oracle NoSQL DB, Dynamo DB, Couchbase, Riak
▫ Alguns: chave segmentada (Major key / Minor key)
• Família de coluna
▫ Muitas colunas
▫ Colunas agrupadas em famílias para que possam ser armazenadas juntas
▫ Esquema “relaxado”
▫ BigTable, HBase, Cassandra
▫ Meio termo entre sem esquema (modelo chave-valor) e com esquema rígido
(modelo relacional)
• Document Stores
▫ MongoDB, CouchDB
▫ Armazenamento de XML, JSON.
▫ A partir de uma chave, encontrar um documento.
Consistência
• Sistemas consistentes / particionáveis
▫ BigTable, HBase, HyperTable, MongoDB, Redis, MemcacheDB
• Sistemas disponíveis / particionáveis
▫ Cassandra, SimpleDB, CouchDB, Riak, TokyoCabinet, Dynamo
• Consistência Eventual
▫ Há várias definições.
▫ Mais popular (Vogels): Se não forem realizadas novas
atualizações ao objeto eventualmente (após o fechamento da
janela de inconsistência), todos os acessos retornam ao último
valor atualizado.
▫ É possível ser AP e eventualmente consistente.
• Variável
▫ Ajustar o nível de consistência a partir de uma configuração.
▫ Exemplo:
 Oracle NoSQL DB: Pode ser CP, quando configurado para política
de maioria simples. Em caso contrário, é AP.
Netflix migra para Cassandra
• Global Netflix – Replacing Datacenter Oracle with
Global Apache Cassandra on AWS
▫ Out/2011
▫ Adrian Cockcroft
▫ http://hpts.ws/papers/2011/sessions_2011/GlobalNetflixH
PTS.pdf
• Usando Cassandra para:
▫ Clientes
▫ Filmes
▫ Histórico
▫ Configuração
• Migração gradativa
• Por que?
▫ Sem necessidade de mudanças no esquema
▫ Alto desempenho
▫ Escalabilidade
Netflix API
Netflix usando Amazon AWS
Netflix antes e depois
Netflix antes
Netflix depois
Escalabilidade linear
Atividade por nó
Facebook usa HBase - Mensagens
• Storage Infrastructure Behind Facebook Messages
▫ Big Data Experiences & Scars, HPTS 2011
▫ Kannan Muthukkaruppan
▫ http://mvdirona.com/jrh/TalksAndPapers/KannanMuthu
kkaruppan_StorageInfraBehindMessages.pdf
• Mensagens, chat, email e SMS em um único framework
de mensagens.
• Por que?
▫ Alto throughput de escrita
▫ Bom desempenho de leitura
▫ Escalabilidade horizontal
▫ Consistência forte
• O que usa o HBase?
▫ Mensagens pequenas
▫ Metadados de mensagens
▫ Índice de busca
Viber Media usa MongoDB
• MongoDB at Viber Media: The Platform Enabling Free
Phone Calls and Text Messaging for Over 18 Million
Active Users
▫ Jan/2012
▫ http://nosql.mypopescu.com/post/16058009985/mo
ngodb-at-viber-media-the-platform-enabling-free
• Por quê?
▫ Escalabilidade
▫ Redundância
• Que usa?
▫ Documentos de tamanhos variáveis
▫ Índices dicionário
Além do NoSQL - NewSQL
• Spanner: Google’s Globally-Distributed Database
▫ OSDI 2012
▫ http://static.googleusercontent.com/media/research.google.com/pt-
BR//archive/spanner-osdi2012.pdf
• Google Spanner: BD SQL distribuído globalmente com transações
atômicas, replicação síncrona e consistência
• Dado é “sharded”
▫ Replicado com máquinas de estado Paxos
▫ Algoritmo de consenso Paxos – confiável. Garante Consistência.
▫ Two Phase Commit usado para garantir Atomicidade.
• Múltiplos modelos de consistência
▫ Snapshot reads
▫ Transações somente leitura
▫ Transações ACID
• Permite TrueTime
▫ Mecanismo de clock entre nós do sistema
Quando usar NoSQL?
• Escalabilidade
• Baixa latência
• Redundância
• Consultas não adhoc
• Junções facilmente implementáveis na aplicação
Conclusão
• Não há uma solução perfeita para tudo (bala de
prata)
• Use a ferramenta mais adequada ao seu
problema
Regis Pires Magalhães
regismagalhaes@ufc.br
Obrigado!
Dúvidas, comentários, sugestões?

Mais conteúdo relacionado

Mais procurados

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
Sliedesharessbarbosa
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
Zarathon Maia
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)
Marcos Batista
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
Elifranio Alves Cruz
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
Danilo Braga
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
silvio_sas
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
Leandro Costa
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
Rodrigo Cândido da Silva
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
Igo Coelho
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
Flávio Lisboa
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Thiago Sinésio
 
Artigo couchdb
Artigo couchdbArtigo couchdb
Artigo couchdb
Filipe Silvestrim
 
Hibernate
HibernateHibernate
Hibernate
Rodrigo Vieira
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
Bianca Caruso da Paixão
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
Igor Moura
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
Eduardo Bregaida
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
pichiliani
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
Marcos Bezerra
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 

Mais procurados (20)

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
 
Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)Curso Java Web (JAVA, JSF, JPA)
Curso Java Web (JAVA, JSF, JPA)
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Artigo couchdb
Artigo couchdbArtigo couchdb
Artigo couchdb
 
Hibernate
HibernateHibernate
Hibernate
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 

Destaque

Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
Regis Magalhães
 
Pascal Tipos
Pascal TiposPascal Tipos
Pascal Tipos
Regis Magalhães
 
Java 15 Jar
Java 15 JarJava 15 Jar
Java 15 Jar
Regis Magalhães
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
Regis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
Regis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
Regis Magalhães
 
Java 14 Javadoc
Java 14 JavadocJava 14 Javadoc
Java 14 Javadoc
Regis Magalhães
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
Regis Magalhães
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
Regis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
Regis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
Regis Magalhães
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
Regis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
Regis Magalhães
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
Regis Magalhães
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
Regis Magalhães
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Adriano Teixeira de Souza
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Adriano Teixeira de Souza
 

Destaque (20)

Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Pascal Tipos
Pascal TiposPascal Tipos
Pascal Tipos
 
Java 15 Jar
Java 15 JarJava 15 Jar
Java 15 Jar
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Java 14 Javadoc
Java 14 JavadocJava 14 Javadoc
Java 14 Javadoc
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 

Semelhante a Web Scale Data Management

[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
Cleber Dantas
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
pichiliani
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory Databases
Caio Louro
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
Ademir Tadeu
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Christiano Anderson
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
Thiago de Azeredo
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
Airton Lastori
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
João Helis Bernardo
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
Gleicon Moraes
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
Fabrício Lopes Sanchez
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
Charles Fortes
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
wchevreuil
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
Glaucio Scheibel
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao Framework
Guilherme Carlos
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
Luiz Guilherme Sucupira
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
Lorran Pegoretti
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
Suzana Viana Mota
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
fabio20718
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
ssuser0bad45
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
Meritt - Cada Aluno é Único
 

Semelhante a Web Scale Data Management (20)

[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory Databases
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao Framework
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
 

Mais de Regis Magalhães

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
Regis Magalhães
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
Regis Magalhães
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
Regis Magalhães
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
Regis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
Regis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
Regis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
Regis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
Regis Magalhães
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
Regis Magalhães
 
php 01 introducao
php 01 introducaophp 01 introducao
php 01 introducao
Regis Magalhães
 
java 00 Introducao
java 00 Introducaojava 00 Introducao
java 00 Introducao
Regis Magalhães
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
Regis Magalhães
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
Regis Magalhães
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
Regis Magalhães
 

Mais de Regis Magalhães (16)

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Merci 10 Completo
Merci 10 CompletoMerci 10 Completo
Merci 10 Completo
 
php 01 introducao
php 01 introducaophp 01 introducao
php 01 introducao
 
java 00 Introducao
java 00 Introducaojava 00 Introducao
java 00 Introducao
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 

Último

FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.pptFUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
MarceloMonteiro213738
 
Curativo de cateter venoso central na UTI.pdf
Curativo de cateter venoso central na UTI.pdfCurativo de cateter venoso central na UTI.pdf
Curativo de cateter venoso central na UTI.pdf
BiancaCristina75
 
Dicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de cursoDicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de curso
Simone399395
 
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdfUFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
Manuais Formação
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
Eró Cunha
 
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
JoanaFigueira11
 
Resumo de Química 10º ano Estudo exames nacionais
Resumo de Química 10º ano Estudo exames nacionaisResumo de Química 10º ano Estudo exames nacionais
Resumo de Química 10º ano Estudo exames nacionais
beatrizsilva525654
 
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdf
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdfAula Aberta_Avaliação Digital no ensino basico e secundário.pdf
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdf
Marília Pacheco
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
Zenir Carmen Bez Trombeta
 
Gênero Textual sobre Crônicas, 8º e 9º
Gênero Textual sobre Crônicas,  8º e  9ºGênero Textual sobre Crônicas,  8º e  9º
Gênero Textual sobre Crônicas, 8º e 9º
sjcelsorocha
 
O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4
DouglasMoraes54
 
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
alphabarros2
 
Tudo sobre a Inglaterra, curiosidades, moeda.pptx
Tudo sobre a Inglaterra, curiosidades, moeda.pptxTudo sobre a Inglaterra, curiosidades, moeda.pptx
Tudo sobre a Inglaterra, curiosidades, moeda.pptx
IACEMCASA
 
A festa junina é uma tradicional festividade popular que acontece durante o m...
A festa junina é uma tradicional festividade popular que acontece durante o m...A festa junina é uma tradicional festividade popular que acontece durante o m...
A festa junina é uma tradicional festividade popular que acontece durante o m...
ANDRÉA FERREIRA
 
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptxSlides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
LuizHenriquedeAlmeid6
 
Roteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptxRoteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptx
pamellaaraujo10
 
ATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junhoATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junho
Crisnaiara
 
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdfUFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
Manuais Formação
 
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasnTabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
CarlosJean21
 
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇOPALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
ARIADNEMARTINSDACRUZ
 

Último (20)

FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.pptFUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
FUNCAO EQUAÇÃO DO 2° GRAU SLIDES AULA 1.ppt
 
Curativo de cateter venoso central na UTI.pdf
Curativo de cateter venoso central na UTI.pdfCurativo de cateter venoso central na UTI.pdf
Curativo de cateter venoso central na UTI.pdf
 
Dicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de cursoDicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de curso
 
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdfUFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
 
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
497417426-conheca-os-principais-graficos-da-radiestesia-e-da-radionica.pdf
 
Resumo de Química 10º ano Estudo exames nacionais
Resumo de Química 10º ano Estudo exames nacionaisResumo de Química 10º ano Estudo exames nacionais
Resumo de Química 10º ano Estudo exames nacionais
 
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdf
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdfAula Aberta_Avaliação Digital no ensino basico e secundário.pdf
Aula Aberta_Avaliação Digital no ensino basico e secundário.pdf
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
 
Gênero Textual sobre Crônicas, 8º e 9º
Gênero Textual sobre Crônicas,  8º e  9ºGênero Textual sobre Crônicas,  8º e  9º
Gênero Textual sobre Crônicas, 8º e 9º
 
O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4
 
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
7 ano - Rede e hierarquia urbana - Geografia - Alpha.pptx
 
Tudo sobre a Inglaterra, curiosidades, moeda.pptx
Tudo sobre a Inglaterra, curiosidades, moeda.pptxTudo sobre a Inglaterra, curiosidades, moeda.pptx
Tudo sobre a Inglaterra, curiosidades, moeda.pptx
 
A festa junina é uma tradicional festividade popular que acontece durante o m...
A festa junina é uma tradicional festividade popular que acontece durante o m...A festa junina é uma tradicional festividade popular que acontece durante o m...
A festa junina é uma tradicional festividade popular que acontece durante o m...
 
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptxSlides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
Slides Lição 12, Central Gospel, O Milênio, 1Tr24, Pr Henrique.pptx
 
Roteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptxRoteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptx
 
ATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junhoATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junho
 
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdfUFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
UFCD_10789_Metodologias de desenvolvimento de software_índice.pdf
 
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasnTabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
 
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇOPALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
PALAVRA SECRETA - ALFABETIZAÇÃO- REFORÇO
 

Web Scale Data Management

  • 1. Web Scale Data Management An Historical Perspective Harvard Extension School CSCI E-109 - Data Science, Lecture 17 Margo Seltzer Regis Pires Magalhães regismagalhaes@ufc.br
  • 2. Apresentação baseada na aula 17 de: • Harvard Extension School CSCI E-109 - Data Science Web Scale Data Management An Historical Perspective http://www.cs109.org/ http://cm.dce.harvard.edu/2014/01/14328/publicationListin g.shtml
  • 3. Agenda • Início • O auge dos SGBDs Relacionais • Renascimento do armazenamento chave-valor • Armazenamento chave-valor hoje: NoSQL • Casos de uso
  • 4. Introdução • Ideias do passado ressurgem ao longo tempo empacotadas com outros nomes.
  • 5. No início • Década de 1960 • Computadores ▫ Sistemas centralizados ▫ Canais de dados permitindo CPU e IO ao mesmo tempo. ▫ Armazenamento persistente em tambores. ▫ Buffering e manipulação de interrupções pelo SO ▫ Foco da pesquisa: tornar esses sistemas rápidos.
  • 6. No início • Dados ▫ ISAM - Indexed Sequencial Access Method  Iniciado pela IBM para seus mainframes  Registros de tamanho fixo  Cada registro em uma localização específica  Acesso rápido mesmo em mídia sequencial (fita) ▫ Todos os índices secundários  Não correspondem à organização física  Chave serve para construir estruturas de índice pequenas e eficientes. ▫ Método de acesso fundamental em COBOL.
  • 7. Organização dos dados: Modelo Rede • Familiar para quem usa bancos de dados em grafo e bancos chave-valor. • Dados representados por coleções de registros (hoje chamaríamos pares chave-valor). • Relacionamentos entre registros expressos através de links entre registros (hoje chamaríamos ponteiros). • Aplicações interagiam com os dados navegando por eles: ▫ Encontre um registro ▫ Siga links ▫ Encontre outros registros ▫ Repita
  • 8. Modelo Rede: Registros • Registros compostos de atributos • Atributos com valor único • Links conectam dois registros • Links armazenam posições físicas e não valores (principal diferença em relação aos SGBDRs) • Relacionamentos de múltiplos caminhos representados por registros de links.
  • 9. Modelo Rede: Registros • Problema: para reorganizar os dados era necessário mudar a aplicação. ▫ Organização física muito ligada à aplicação. ▫ As aplicações precisavam conhecer a estrutura dos dados.
  • 10. Modelo Relacional • 1968: Ted Codd propôs o modelo relacional ▫ Desacoplar a representação física da representação lógica ▫ Armezena “registros” como “tabelas”. ▫ Substitui links por junções implícitas entre tabelas. • Grande debate sobre desempenho, após o artigo de Codd. • Dois grupos transformaram a ideia em software: ▫ IBM: System/R ▫ U.C. Berkeley (Michael Stonebraker e Eugene Wong): INGRES (INteractive Graphics REtrieval System)  POSTGRES = POST inGRES
  • 11. Modelo Relacional • Os dois grupos exploravam a viabilidade de implementar o modelo relacional. • Ambos tiveram grande sucesso e impacto.
  • 12. System R RSS  Trabalho semelhante ao do Modelo Rede em termos de manipulação de ponteiros para encontrar registros de forma eficiente.
  • 14. Armazenamento Chave/Valor por dentro • Sistemas relacionais têm escondido alguma forma de engine de armazenamento chave-valor. • Por muitos anos buscou-se esconder o armazenamento chave-valor por trás de uma linguagem de consulta e de um nível de esquema. • A exceção era o COBOL que continuava a usar ISAM.
  • 15. Evolução dos SGBDs • Novas características: SQL-86, 89, 92, 99, 2003, 2008) ▫ Triggers ▫ Stored Procedures ▫ Report generators ▫ Rules ▫ ... • Incorporação de novos modelos de dados: ▫ Sistemas Objeto-relacionais ▫ XML • Tornou-se extremamente grande e complexo ao incorporar as sucessivas novidades que iam aparecendo ao longo do tempo.
  • 16. SGBDRs • Vantagens ▫ Linguagem declarativa que desacopla os layouts físico e lógico. ▫ Modificação fácil do esquema. ▫ Bom suporte a consultas ad hoc. • Desvantagens ▫ Pagar pelo overhead de processar consultas, mesmo quando as consultas não são complexas.  Aplicações muito simples terminam usando um SGBD, mas sem muita necessidade. ▫ Requer sintonia e manutenção por parte do DBA. ▫ Quase sempre é usada IPC (Inter Process Communication) para acessar o servidor de banco de dados. ▫ Requer definição do esquema. ▫ Não adequado para gerenciar relacionamentos hierárquicos ou outros relacionamentos complexos.
  • 17. O advento da Internet • Novos tipos de aplicações surgiram ▫ Busca ▫ Autenticação (LDAP) ▫ Email ▫ Navegação ▫ Mensagens instantâneas ▫ Servidores Web ▫ Vendas online ▫ Gerenciamento de chave pública
  • 18. Essas aplicações são diferentes • Fazem uso intensivo de dados • Consultas especificadas na aplicação • Não ad hoc • Usuários interagem com a aplicação • Esquemas relativamente simples • Relatórios não sofisticados • Desempenho é algo crítico Os SGBDs relacionais não estavam entregando as funcionalidades necessárias, mas estavam trazendo overhead.
  • 19. Surgimento do armazenamento chave-valor • 1997 – Sleepcat Software iniciou o primeiro banco comercial para armazenamento chave-valor (atualmente Oracle Berkeley BD). ▫ Deixar algumas características de lado. ▫ Embutido: links diretamente no espaço de endereçamento da aplicação. ▫ Rápido: evita ‘parse’ e otimização da consulta ▫ Escalável: executa desde equipamentos móveis a data centers. ▫ Flexível: ajuste entre funcionalidade e desempenho. ▫ Confiável: recuperação de falhas da aplicação ou do sistema.
  • 20. SGBD Relacional x Chave-Valor BDB – Berkeley DB TCO – Total Cost of Ownership
  • 21. De local a distribuído • Dos mainframes caros aos PCs baratos ▫ Argumento econômico • Com a evolução da Web, volume, velocidade e necessidades dos clientes cresceram exponencialmente • Excederam a capacidade de um único sistema • Necessidade de escalabilidade
  • 22. NoSQL • Not-only-SQL (2009) • Provedores (Google, Amazon, Ebay, Facebook, Yahoo) começaram a se deparar com os limites das soluções de gerenciamento de dados existentes. • Sharding (particionamento – muitas partições): dividir os dados em múltiplos hosts para dividir a carga. • Replicação ▫ Permite acesso de vários sites. ▫ Aumenta a disponibilidade. • Relaxar a consistência: nem sempre é preciso usar a semântica transacional.
  • 23. NoSQL • SGBDs Relacionais focam nas propriedades ACID. • NoSQL foca em BASE: ▫ Basic Availability: usar replicação para reduzir a probabilidade de falta de disponibilidade e sharding para tornar as falhas parciais e não totais. ▫ Soft State: Permitir dados ficarem inconsistentes e deixar a resolução de tais inconsistências por conta dos desenvolvedores de aplicações. ▫ Eventually Consistent: Garantir que em um tempo no futuro o dado assume um estado consistente.
  • 24. NoSQL • Problemas comuns ▫ Volumes de transações sem precedentes ▫ Necessidade crítica de baixo tempo de latência ▫ 100% de disponibilidade • Mudança de hardware ▫ Multiprocessamento simétrico  blades • Teorema CAP ▫ Escolher dois:  Consistência: todos os nós vêem o mesmo dado ao mesmo tempo.  Disponibilidade: Toda requisição recebe uma resposta sucesso / falha.  Tolerância a partição: O sistema continua a operar mesmo com perdas de mensagens arbitrárias. ▫ SGBDRs (sistemas transacionais) escolhem CA ▫ NoSQL tipicamente escolhe AP ou CP
  • 25.
  • 26. DB-Engines • Cálculo do Ranking ▫ Número de menções em websites ▫ Interesse geral do sistemas ▫ Frequência de discussões técnicas sobre o sistema ▫ Número de ofertas de emprego no qual o sistema é mencionado ▫ Número de perfis em redes profissionais no qual o sistema é mencionado.
  • 33. Evolução • 1997: Berkeley DB  armazenamento chave/valor transacional • 2001: Berkeley DB introduz replicação para alta disponibilidade. • 2006: Google publica artigos sobre Chubby e BigTable. ▫ The Chubby Lock Service for Loosely-Coupled Distributed Systems  Mike Burrows ▫ 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 • 2007: Amazon publica artigo sobre Dynamo ▫ Distributed Hash Table (DHT) ▫ Armazenamento chave-valor eventualmente consistente
  • 34. Evolução • 2008+: Vários projetos Open Source buscando semelhança com BigTable/Dynamo ▫ HBase: projeto do Apache Hadoop implementação do BigTable (2008) ▫ CouchDB: Document Store em Erlang. Controle de concorrência Multiversão e versionamento (2008) ▫ Cassandra: otimizado a escritas, orientado a coluna, índices secundários (2009) ▫ MongoDB: Document Store baseada em JSON, indexação, auto- shardind (2009) • 2009+: Comercialização ▫ Empresas dando suporte aos produtos Open Source:  DataStax/Cassandra, Basho/Riak, Cloudera/HBase, 10Gen/MongoDB  Empresas desenvolvendo produtos comerciais:  Oracle, Citrusleaf
  • 35. Escolha • Escolher o sistema correto para o problema pode fazer uma grande diferença.
  • 36. Projeto de sistemas NoSQL • Sistema de armazenamento usando nós • Distribuição • Modelo de Dados • Modelo de Consistência ▫ Consistência Eventual ▫ Sem consistência ▫ Consistência Transacional
  • 37. Sistemas de Armazenamento • Armazenamento Chave-Valor Nativo ▫ Oracle NoSQL Database: Berkeley DB Java Edition ▫ Basho: Bitcask do Riak, uma hash table estruturada como log ▫ Amazon: Dynamo, BDB Data Store, BDB JE (ou MySQL) ▫ Log-structured Merge Trees  LevelDB ▫ Custom  BigTables (e clones): explorando sistemas semelhantes ao Google File System (GFS).
  • 38. Distribuição • Questões principais ▫ Como particionar os dados? ▫ Quantas cópias manter? ▫ Todas as cópias são iguais? • Como particionar os dados? ▫ Particionamento baseado em chave ▫ Particionamento Hash (frequentemente chamado Sharding) ▫ Partcionamento Geográfico (também chamado sharding)  Para evitar problemas com falhas / desastres
  • 39. Distribuição • Quantas cópias manter e como? ▫ Usar o sistema de arquivos subjacente (GFS, HDFS)  E ele cuida de fazer as cópias necessárias. ▫ Três é bom, cinco é melhor, ...  Por que números ímpares?  Em caso de divergência, fazer votação pela maioria ▫ Dados de saída (calculáveis / gerados) podem ter apenas uma cópia • Igualdade das cópias ▫ Single-Master  Envio ao master e ele copia  MongoDB, Oracle NoSQL DB  Preocupação com consistência ▫ Multi-master / Masterless  Envio a qualquer máquina e ela copia  Gerenciamento mais complexo  Pode ser difícil descobrir onde está o dado correto em caso de falha (escolher o maior?)  Riak, CouchDB, Couchbase
  • 40. Modelos de Dados • Comum ▫ Desnormalização  Redundância - valores duplicados para melhor desempenho ▫ Sem junções  Se necessário, a aplicação deve fazer as junções • Chave/Valor: Pouco esquema ou sem esquema, suporte a consultas com intervalos pequenos ▫ Oracle NoSQL DB, Dynamo DB, Couchbase, Riak ▫ Alguns: chave segmentada (Major key / Minor key) • Família de coluna ▫ Muitas colunas ▫ Colunas agrupadas em famílias para que possam ser armazenadas juntas ▫ Esquema “relaxado” ▫ BigTable, HBase, Cassandra ▫ Meio termo entre sem esquema (modelo chave-valor) e com esquema rígido (modelo relacional) • Document Stores ▫ MongoDB, CouchDB ▫ Armazenamento de XML, JSON. ▫ A partir de uma chave, encontrar um documento.
  • 41. Consistência • Sistemas consistentes / particionáveis ▫ BigTable, HBase, HyperTable, MongoDB, Redis, MemcacheDB • Sistemas disponíveis / particionáveis ▫ Cassandra, SimpleDB, CouchDB, Riak, TokyoCabinet, Dynamo • Consistência Eventual ▫ Há várias definições. ▫ Mais popular (Vogels): Se não forem realizadas novas atualizações ao objeto eventualmente (após o fechamento da janela de inconsistência), todos os acessos retornam ao último valor atualizado. ▫ É possível ser AP e eventualmente consistente. • Variável ▫ Ajustar o nível de consistência a partir de uma configuração. ▫ Exemplo:  Oracle NoSQL DB: Pode ser CP, quando configurado para política de maioria simples. Em caso contrário, é AP.
  • 42. Netflix migra para Cassandra • Global Netflix – Replacing Datacenter Oracle with Global Apache Cassandra on AWS ▫ Out/2011 ▫ Adrian Cockcroft ▫ http://hpts.ws/papers/2011/sessions_2011/GlobalNetflixH PTS.pdf • Usando Cassandra para: ▫ Clientes ▫ Filmes ▫ Histórico ▫ Configuração • Migração gradativa • Por que? ▫ Sem necessidade de mudanças no esquema ▫ Alto desempenho ▫ Escalabilidade
  • 45. Netflix antes e depois
  • 50. Facebook usa HBase - Mensagens • Storage Infrastructure Behind Facebook Messages ▫ Big Data Experiences & Scars, HPTS 2011 ▫ Kannan Muthukkaruppan ▫ http://mvdirona.com/jrh/TalksAndPapers/KannanMuthu kkaruppan_StorageInfraBehindMessages.pdf • Mensagens, chat, email e SMS em um único framework de mensagens. • Por que? ▫ Alto throughput de escrita ▫ Bom desempenho de leitura ▫ Escalabilidade horizontal ▫ Consistência forte • O que usa o HBase? ▫ Mensagens pequenas ▫ Metadados de mensagens ▫ Índice de busca
  • 51. Viber Media usa MongoDB • MongoDB at Viber Media: The Platform Enabling Free Phone Calls and Text Messaging for Over 18 Million Active Users ▫ Jan/2012 ▫ http://nosql.mypopescu.com/post/16058009985/mo ngodb-at-viber-media-the-platform-enabling-free • Por quê? ▫ Escalabilidade ▫ Redundância • Que usa? ▫ Documentos de tamanhos variáveis ▫ Índices dicionário
  • 52. Além do NoSQL - NewSQL • Spanner: Google’s Globally-Distributed Database ▫ OSDI 2012 ▫ http://static.googleusercontent.com/media/research.google.com/pt- BR//archive/spanner-osdi2012.pdf • Google Spanner: BD SQL distribuído globalmente com transações atômicas, replicação síncrona e consistência • Dado é “sharded” ▫ Replicado com máquinas de estado Paxos ▫ Algoritmo de consenso Paxos – confiável. Garante Consistência. ▫ Two Phase Commit usado para garantir Atomicidade. • Múltiplos modelos de consistência ▫ Snapshot reads ▫ Transações somente leitura ▫ Transações ACID • Permite TrueTime ▫ Mecanismo de clock entre nós do sistema
  • 53. Quando usar NoSQL? • Escalabilidade • Baixa latência • Redundância • Consultas não adhoc • Junções facilmente implementáveis na aplicação
  • 54. Conclusão • Não há uma solução perfeita para tudo (bala de prata) • Use a ferramenta mais adequada ao seu problema