Buscar

Banco de Dados Em Nuvens

Prévia do material em texto

Banco de Dados em Nuvens
Lucas Francisco da Matta Vegi – 68654
Orientador: Jugurta Lisboa Filho
Universidade Federal de Viçosa 
Departamento de Informática 
Mestrado em Ciência da Computação 
INF 600 - Técnicas de Pesquisa em Ciência da Computação 
Seminário de Área
Conteúdo Programático
1. Introdução
• 1.1 Computação em Nuvem
• 1.2 Características Essenciais
• 1.3 Modelos de Serviço
• 1.4 Modelos de Implantação
2. Gerenciamento de Dados em Nuvem
• 2.1 Vantagens para o usuário
• 2.2 Escalabilidade e Desempenho
• 2.3 Requisitos
• 2.4 Transações
• 2.5 Tolerância a Falhas e Distribuição de Dados
• 2.6 Modelos de Dados
3. SGBDs em Nuvem
• 3.1 Dynamo
• 3.2 BigTable
• 3.3 Cassandra
• 3.4 Outros SGBDs
4. Caminhos para a área nos 
próximos 10 anos
5. Relação com a indústria 
e transferência de 
tecnologia
6. Pesquisadores
7. Conferências
8. Journals
9. Fontes de financiamento de 
pesquisa
10. Referências 
Bibliográficas
Dúvidas?
2
2
1. Introdução 
>> 1.1 Computação em Nuvem
3
“Computação em nuvem é um modelo que possibilita
acesso, de modo conveniente e sob demanda, a um
conjunto de recursos computacionais configuráveis (por
exemplo, redes, servidores, armazenamento, aplicações e
serviços) que podem ser rapidamente adquiridos e
liberados com mínimo esforço gerencial ou interação com
o provedor de serviços” (Mell and Grance, 2009)
1. Introdução 
>> 1.1 Computação em Nuvem
4
• Infra-estrutura:
– Milhares de máquinas físicas conectados em rede;
• Máquinas de baixo custo;
• Mesmas configurações de software;
• Variações nas capacidades de hardware;
– Números variável de máquinas virtuais por máquinas 
física;
Fonte: (SOUZA, 2010)
1. Introdução 
>> 1.1 Computação em Nuvem
5
• Evolução/Junção dos conceitos:
– Utility Computing;
– Grid Computing;
• Usuários não precisam fazer backups;
1. Introdução 
>> 1.2 Características Essenciais
6
• Self-service sob demanda:
– Adquirir recursos computacionais sem necessitar de interação 
humana;
• Amplo acesso: 
– Independe de plataforma
• Pooling de recursos:
– Diferentes recursos dinamicamente atribuídos sob demanda;
– Usuário desconhece localização física do recurso alocado;
• Elasticidade rápida:
– Recursos “infinitos”;
– Adquiridos a qualquer momento em qualquer quantidade;
• Serviço medido:
– Uso de recursos monitorado e controlado;
– Oferece transparência para provedor e usuário;
1. Introdução 
>> 1.3 Modelos de Serviço
7
• Software como um serviço (SaaS):
– Acessados por dispositivos (Thin client) via Browser;
– Ex: Google Docs, DropBox...etc;
• Plataforma como um serviço (PaaS):
– Ambiente de desenvolvimento em nuvem (Linguagens de Programação, 
S.O, hospedagem);
– Ex: Google App Engine; Microsoft Azure...etc.
• Infra-estrutura como serviço (IaaS):
– Infra-estrutura computacional baseada 
em técnicas de virtualização de recursos de 
computação;
– Ex: Amazon Elastic Cloud Computing (EC2),
Eucalyptus;
Fonte: (SOUZA, 2010)
1. Introdução 
>> 1.4 Modelos de Implantação
8
• Se comportam como encapsulamento, controlando acesso e 
disponibilidade:
– Nuvem privada: utilizada exclusivamente por uma empresa;
– Nuvem pública: disponibilizada para o público em geral;
– Nuvem Comunidade: organizações com interesses em 
comum;
– Nuvem Híbrida: composta por duas ou mais nuvens de tipos 
diferentes conectadas entre si;
2. Gerenciamento de Dados em Nuvem 
>> 2.1 Vantagens para o usuário
9
1. Previsibilidade e custos mais baixo:
– QoS;
– Cargas de trabalho reais;
2. Complexidade técnica reduzida:
– Delegação de Tunning;
– Administração do banco terceirizada;
3. Elasticidade e Escalabilidade:
– Recursos “infinitos”;
2. Gerenciamento de Dados em Nuvem 
>> 2.2 Escalabilidade e Desempenho
10
• Escalabilidade Vertical: 
– melhora-se a capacidade do hardware;
• Escalabilidade Horizontal: 
– adiciona-se mais máquinas à solução atual;
(1)
(2)
(3)
Fonte: (FERREIRA, 2010)
2. Gerenciamento de Dados em Nuvem 
>> 2.2 Escalabilidade e Desempenho
11
• Replicação (Duplicação de Informação):
 Master-Slave: 
– Cada escrita em banco resulta em N x escritas onde N é o 
número de Slaves;
– Melhora somente a capacidade de leitura;
 Multi-Master:
– Melhora capacidade de escrita;
• Sharding (Divisão de Informação):
 Dividi os dados em múltiplas tabelas do banco;
 Escalar tanto as leituras como as escritas;
Fonte: (DIANA, 2010)
2. Gerenciamento de Dados em Nuvem 
>> 2.2 Escalabilidade e Desempenho
12
• Bancos de dados em nuvem utilizam as técnicas para
escalar automaticamente de forma transparente para os
desenvolvedores;
• Escalar o banco de forma elástica (recursos “infinitos”) é
um problema de otimização:
 Grande quantidade de usuários;
 Cargas de trabalho dinâmica;
Múltiplos sistemas de banco de dados;
 Grandes centros de dados;
• Em relação ao desempenho, SGBDs em nuvem devem lidar 
com problemas e tempo de resposta.
 Hardwares heterogêneos;
 Divisão inteligente da carga de trabalho;
2. Gerenciamento de Dados em Nuvem 
>> 2.3 Requisitos
13
Online Transaction Processing / Processamento de 
transações em tempo-real
EX: sistema de transações bancárias que registra todas as 
operações efetuadas em um banco
2. Gerenciamento de Dados em Nuvem 
>> 2.4 Transações
14
• Não é trivial por ser um ambiente distribuído:
– Dados replicados;
– Fragmentados em locais geograficamente distantes;
• Teorema CAP (Brewer's theorem, 2000)
– Consistency (Consistência): Cada cliente tem sempre a 
mesma visão dos dados;
– Availability (Disponibilidade): todos os clientes podem 
sempre ler e escrever;
– Partition Tolerance (Tolerância a partições): o sistema 
funciona de forma correta em várias partições de rede 
física;
2. Gerenciamento de Dados em Nuvem 
>> 2.4 Transações
15
• Atomicidade
• Consistência
• Isolamento
• Durabilidade
• Basically Available
• Soft state
• Eventually consistent
ACID x BASE
• Tipos de Consistência
 Forte;
 Fraca;
 Eventual;
 Janela de Inconsistência
2. Gerenciamento de Dados em Nuvem 
>> 2.5 Tolerâncias a Falhas e Distribuição de Dados
16
• Infra-estrutura composta por hardware de baixo custo;
• Com certeza irão falhar em algum momento;
• Técnicas que auxiliam na distribuição e replicação de dados 
tratam tais falhas:
 Aumento de disponibilidade;
 Melhor distribuição de carga;
• Exemplo de técnica:
• Distributed hash table: Pares (chave, valor)
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
17
1. Bancos de Dados Chave-valor
2. Bancos de Dados Orientados a Colunas
3. Bancos de Dados Orientados a Documentos
4. Bancos de Dados de Grafos
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.1 Bancos de Dados Chave-valor 
18
– Entradas são armazenadas como pares (chave-valor) em 
Distributed hash table;
– Não possui esquema;
– Chaves são arbitrárias;
– Valores são BLOBs (Binary Large OBject):
• Imagens, áudio, vídeo...
– Não há relacionamentos explícitos;
– APIs de acesso simples:
• get(key);
• set(key, value);
19
Mais fácil recuperar todos os 
dados de um empregado 
específico.
Mais fácil recuperar 
informações como “Todos os 
nomes de empregados”.
Ex: O Google recupera 
informações e meta-informações
sobre vários sites em uma única 
consulta mais rapidamente, ao 
invés de 
recuperar toda informação sobre 
somente um único site.
Fonte: (BERINGER, 2009)
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.2 Bancos de Dados Orientados a Colunas
20
– Armazena osdados em coleções de pares chave-valor
– Chaves são ObjectId
– Valores são Documentos:
• JSON (JavaScript Object Notation) ;
• XML;
– Não possui esquema;
– Desnormalizado;
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.3 Bancos de Dados Orientados a Documentos
21
• Exemplo com MongoDB
> u1 = { 
name : “João", 
address : { 
city : “Viçosa", 
state : “MG" 
} 
};
> u2 = { 
name : “Lucas", 
address : { 
city : “Muriaé", 
state : “MG" 
} 
};
> db.users.save(u1);
> db.users.save(u2);
> db.users.find( {address.state : “MG"} ) .forEach( function(x){ 
print(tojson(x)); 
} );
{"name" : “Jugurta" , “address”: {“city” : “Viçosa”, “state” : “MG” } , "_id" : ObjectId("497cf60751712cf7758fbdbb")}
{"name" : “Lucas" , “address”: {“City” : “Muriaé”, “state” : “MG” } , "_id" : ObjectId("497cf61651712cf7758fbdbc")}
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.3 Bancos de Dados Orientados a Documentos
22
– Armazenam vértices e arestas:
• Vértices = Entidades
• Arestas = Relacionamentos
– Basicamente é um banco de Dados Chave-Valor com 
Relacionamentos;
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.4 Bancos de Dados de Grafos
Fonte: (BERINGER, 2009)
23
• Exemplo com InfoGrid:
2. Gerenciamento de Dados em Nuvem 
>> 2.6 Modelos de Dados
>> 2.6.4 Bancos de Dados de Grafos
//Usando InfoGrid
MeshObject customer = createMeshObject(); // create first node, called MeshObject in InfoGrid
MeshObject order = createMeshObject(); // create second node
customer.relate( order );
//Usando Java
Customer customer = new Customer(); 
Order order = new Order(); 
customer.addOrder( order ); 
order.setCustomer( customer )
//Usando Java
class Customer { ... 
private List<Order> ordersOfThisCustomer = new ArrayList<Order>(); 
}
class Order { ... 
private Customer customerPlacingThisOrder; 
}
//Usando InfoGrid
customer.traverseToNeighbors().getSingleMember(); // returns the single Order object 
order.traverseToNeighbors().getSingleMember(); // returns the single Customer object 
customer.unrelate( order ); // now we delete the edge 
customer.traverseToNeighbors().getSingleMember(); // returns null 
order.traverseToNeighbors().getSingleMember(); // returns null //Usando Java
customer.removeOrder( order ); 
order.setCustomer( null )
3. SGBDs em Nuvens 
>> 3.1 Dynamo
24
• É um banco de dados chave-valor;
– Valores são BLOBs de até 5GB;
• Garante escalabilidade e disponibilidade:
– Consistência eventual 
• Garantias:
– Atomicidade e Isolamento: Não suporta operações sobre 
múltiplos objetos;
– Durabilidade: Escrita Replicada;
3. SGBDs em Nuvens 
>> 3.2 BigTable
25
• É um banco de dados orientado a colunas;
• Possui consistência forte!
• Não da suporte a realização de Joins entre tabelas;
• Tem garantia fraca a atomicidade;
• Tabelas tridimensionais;
3. SGBDs em Nuvens 
>> 3.3 Cassandra
26
BigTable Dynamo
Fonte: (Evans, 2010)
3. SGBDs em Nuvens 
>> 3.4 Outros SGBDs
27
• Relational Cloud (MIT)
• Amazon Relational Database Services
• PNUTS (Yahoo!)
• Microsoft SQL Azure
• CouchDB (Apache)
• SimpleDB (Amazon)
• Voldemort (LinkedIN)
• Hbase (Apache)
....
4. Caminhos para a área nos próximos 10 anos
28
• Padronização de uma linguagem de consulta robusta que
tenha características dos sistemas tradicionais;
• Buscar alternativas para integração de técnicas de
criptografia com SGBDs em nuvem que diminuam a
latência das consultas;
• Lidar de maneira mais balanceada com o Teorema CAP
oferecendo simultaneamente:
– Alta escalabilidade;
– Alta disponibilidade;
– Alta consistência;
5. Relação com a indústria e transferência de 
tecnologia
29
• A maior parte das pesquisas de SGBDs em nuvem partem da 
própria indústria.
• Empresas envolvidas:
– Microsoft
– Google
– Amazon
– Yahoo!
– Facebook
– LinkedIN
– Twitter
– Apache
– Rackspace Hosting
6. Pesquisadores
30
• Brian Frank Cooper (PNUTS)
– Atualmente engenheiro de software Google
– Foi principal cientista do Yahoo! Research
– 62 Publicações e 242 citações (fonte: Portal ACM)
• Raghu Ramakrishnan (PNUTS)
– Um dos principais pesquisadores do Yahoo! Research
– Foi professor de Ciências da Computação da Universidade de 
Wisconsin-Madison
– 169 Publicações e 3603 citações (fonte: Portal ACM)
• Fay Chang (BigTable)
– Engenheiro do Google
– 12 Publicações e 317 citações (fonte: Portal ACM)
6. Pesquisadores
31
• Daniel J Abadi (Column-Oriented DB)
– Assistant Professor of Computer Science in Yale University
– 21 Publicações e 510 citações (fonte: Portal ACM)
• Amr El El Abbadi
– Professor of Computer Science at the University of California 
at Santa Barbara
– Research interests are in the fields of fault-tolerant 
distributed systems and databases
– 219 Publicações e 1261 citações (fonte: Portal ACM)
• Divyakant Agrawal
– Professor of Computer Science at the University of California 
at Santa Barbara
– His research expertise is in the areas of database systems, 
distributed computing, data warehousing, and large-scale 
information systems
– 222 Publicações e 1444 citações (fonte: Portal ACM)
7. Conferências
32
• Simpósio Brasileiro de Banco de Dados (SBBD)
– Qualis: B3
• ACM Symposium on Cloud Computing (SOCC)
– ACM SOCC será realizado em conjunto com as Conferências ACM 
SIGMOD e ACM SOSP, em anos alternados. Iniciou com o ACM 
SIGMOD em 2010. (10 e 11 de Junho de 2010)
• IEEE International Conference on Data Engineering (ICDE)
– Qualis: A2
• ACM International Conference on Management of Data 
(SIGMOD)
– Qualis: A1
8. Journals
33
• ACM Transactions on Database Systems
– Qualis: A1
– ISSN: 0362-5915
• Journal of Database Management
– Qualis: B2
– ISSN: 1063-8016 (printed)
– ISSN: 1533-8010 (electronic)
• IEEE Bulletin of the Technical Committee 
on Data Engineering
– Publicação trimestral
– Desde 1977
• JOURNAL OF INFORMATION AND DATA 
MANAGEMENT (JIDM)
– ISSN: 2178-7107
– 3 vezes por ano
– Publicação oficial da SBC com foco em
Banco de Dados
• International Journal of Cloud 
Computing (IJCC)
– ISSN: 2043-9997 (online)
– ISSN: 2043-9989 (print)
• IEEE Transactions on Knowledge and Data 
Engineering
– Qualis: A1
– ISSN: 1041-4347 
• Distributed and Parallel Databases
– Qualis: B1
– ISSN: 0926-8782 (print version)
– ISSN: 1573-7578 (electronic version)
9. Fontes de financiamento de pesquisa
34
• Empresas privadas (Ex: Google, Amazon, Microsoft, 
Facebook, Linkedin...etc)
• CAPES (Coordenação de Aperfeiçoamento de Pessoal 
de Nível Superior)
• CNPq (Conselho Nacional de Desenvolvimento 
Científico e Tecnológico)
• FAPEMIG (Fundação de Amparo à Pesquisa do 
Estado de Minas Gerais)
10. Referências Bibliográficas
35
• SOUZA, F. R. C; MOREIRA, L. O; MACÊDO, J. A. F; MACHADO; J. C. (2010). Gerenciamento de Dados em 
Nuvem: Conceitos, Sistemas e Desafios. Disponível em: 
<http://www.es.ufc.br/~flavio/files/Gerenciamento_Dados_Nuvem.pdf>. Acessado em 30 out. 2010.
• SOUZA, F. R. C.; MOREIRA, L. O; MACHADO, J. C. (2010). Computação em Nuvem: Conceitos, Tecnologias, 
Aplicações e Desafios. Disponível em: <http://www.es.ufc.br/~flavio/files/Computacao_Nuvem.pdf >. 
Acessado em 30 out. 2010. 
• Abadi, D. J. (2009). Data management in the cloud: Limitations and opportunities. IEEE Data Eng. Bull., 
32:3-12
• Aboulnaga, A., Salem, K., Soror, A. A., Minhas, U. F., Kokosielis, P.,and Kamath, S. (2009). Deploying 
database appliances in the cloud. IEEE Data Eng. Bull., 32(1):13-20
• Chang, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A., Burrows, M., Chandra,T., Fikes, A., and
Gruber, R. E. (2006). Bigtable: a distributed storage system for structured data. In Proceedings of the 7th 
USENIX Symposium on Operating Systems Design and Implementation - Volume 7 (Seattle, WA, November
06 - 08, 2006). Operating Systems Design and Implementation. USENIX Association, Berkeley, CA, 15-15.
• Evans, E. (2010). Cassandra Explained. Disponível em: <http://www.slideshare.net/jericevans/cassandra-
explained>. Acessado em: 30 out. 2010.
• Mell, P. and Grance, T. (2009). Draft NIST Working Definition of Cloud Computing. National Institute of
Standards and Technology. http://csrc.nist.gov/groups/SNS/cloud-computing.
• FERREIA, E. (2010). Introdução ao NoSQL parte I. Disponível em: 
<http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/>. Acessado em 30 out. 2010.
10. Referências Bibliográficas
36
• DIANA, M. (2010). Introdução aos Bancos de Dados Não-Relacionais. Disponível em: 
<http://www.slideshare.net/mdediana/introducao-aos-bancosdedadosnaorelacionais>. Acessado em 30 
out. 2010.
• BERINGER, F. (2009). Musings on NoSQL. Disponível em: <http://www.fredberinger.com/musings-on-
nosql/>. Acessado em 30 out. 2010.
Dúvidas
37

Continue navegando