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

Banco de Dados em Nuvens

Lucas Francisco da Matta Vegi – 68654 Orientador: Jugurta Lisboa Filho

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

9. Fontes de financiamento de pesquisa

10. Referências Bibliográficas

8. Journals

Dúvidas?

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

7. Conferências

6. Pesquisadores

5. Relação com a indústria e transferência de tecnologia
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
2

2

1. Introdução
>> 1.1 Computação em Nuvem

“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)

3

1. Introdução
>> 1.1 Computação em Nuvem

• 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)

4

1. Introdução
>> 1.1 Computação em Nuvem

• Evolução/Junção dos conceitos:
– Utility Computing; – Grid Computing;

• Usuários não precisam fazer backups;

5

1. Introdução
>> 1.2 Características Essenciais
• 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;

6

1. Introdução
>> 1.3 Modelos de Serviço
• 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)

7

1. Introdução
>> 1.4 Modelos de Implantação
• 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;

8

2. Gerenciamento de Dados em Nuvem >> 2.1 Vantagens para o usuário 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”;
9

2. Gerenciamento de Dados em Nuvem >> 2.2 Escalabilidade e Desempenho • Escalabilidade Vertical:
– melhora-se a capacidade do hardware;

• Escalabilidade Horizontal:
– adiciona-se mais máquinas à solução atual;

(2) (1)
Fonte: (FERREIRA, 2010)

(3)

10

2. Gerenciamento de Dados em Nuvem >> 2.2 Escalabilidade e Desempenho
• 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)

11

2. Gerenciamento de Dados em Nuvem >> 2.2 Escalabilidade e Desempenho
• 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; 12

2. Gerenciamento de Dados em Nuvem >> 2.3 Requisitos

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

13

2. Gerenciamento de Dados em Nuvem >> 2.4 Transações
• 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;
14

• • • •

2. Gerenciamento de Dados em Nuvem >> 2.4 Transações ACID x BASE Atomicidade • Basically Available Consistência • Soft state Isolamento • Eventually consistent Durabilidade

• Tipos de Consistência  Forte;  Fraca;  Eventual;
 Janela de Inconsistência

15

2. Gerenciamento de Dados em Nuvem >> 2.5 Tolerâncias a Falhas e Distribuição de Dados
• 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)

16

2. Gerenciamento de Dados em Nuvem >> 2.6 Modelos de Dados

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

17

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.1 Bancos de Dados Chave-valor

– 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);

18

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.2 Bancos de Dados Orientados a Colunas

Mais fácil recuperar todos os dados de um empregado específico.

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.

Mais fácil recuperar informações como “Todos os nomes de empregados”.
Fonte: (BERINGER, 2009)

19

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.3 Bancos de Dados Orientados a Documentos

– Armazena os dados 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;

20

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.3 Bancos de Dados Orientados a Documentos

Exemplo com MongoDB
name : “João", address : { city : “Viçosa", state : “MG" }

> u1 = {

}; > 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")}

21

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.4 Bancos de Dados de Grafos

– Armazenam vértices e arestas:
• Vértices = Entidades • Arestas = Relacionamentos

– Basicamente é um banco de Dados Chave-Valor com Relacionamentos;

Fonte: (BERINGER, 2009)

22

2. Gerenciamento de Dados em Nuvem
>> 2.6 Modelos de Dados >> 2.6.4 Bancos de Dados de Grafos

• Exemplo com InfoGrid:
//Usando InfoGrid MeshObject customer = createMeshObject(); // create first node, called MeshObject in InfoGrid MeshObject order = createMeshObject(); // create second node customer.relate( order ); //Usando Java //Usando Java class Customer { ... Customer customer = new Customer(); private List<Order> ordersOfThisCustomer = new ArrayList<Order>(); Order order = new Order(); } customer.addOrder( order ); class Order { ... order.setCustomer( customer ) 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 )

23

3. SGBDs em Nuvens >> 3.1 Dynamo
• É 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;

24

3. SGBDs em Nuvens >> 3.2 BigTable
• • • • • É 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;

25

3. SGBDs em Nuvens >> 3.3 Cassandra
BigTable Dynamo

Fonte: (Evans, 2010)

26

3. SGBDs em Nuvens >> 3.4 Outros SGBDs
• • • • Relational Cloud (MIT) Amazon Relational Database Services PNUTS (Yahoo!) Microsoft SQL Azure

• CouchDB (Apache) • SimpleDB (Amazon) • Voldemort (LinkedIN) • Hbase (Apache)

....
27

4. Caminhos para a área nos próximos 10 anos
• 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;

28

5. Relação com a indústria e transferência de tecnologia
• 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

29

6. Pesquisadores

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)

30

6. Pesquisadores

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) 31

7. Conferências
• 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

32

8. Journals
• ACM Transactions on Database Systems
– – Qualis: A1 ISSN: 0362-5915

International Journal of Cloud Computing (IJCC)
– – ISSN: 2043-9997 (online) ISSN: 2043-9989 (print)

Journal of Database Management
– – – Qualis: B2 ISSN: 1063-8016 (printed) ISSN: 1533-8010 (electronic)

IEEE Transactions on Knowledge and Data Engineering
– – Qualis: A1 ISSN: 1041-4347

IEEE Bulletin of the Technical Committee on Data Engineering
– – Publicação trimestral Desde 1977

Distributed and Parallel Databases
– – – Qualis: B1 ISSN: 0926-8782 (print version) ISSN: 1573-7578 (electronic version)

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

33

9. Fontes de financiamento de pesquisa
• 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)

34

10. Referências Bibliográficas
• 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/cassandraexplained>. 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.

• • •

• •

35

10. Referências Bibliográficas
• 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-onnosql/>. Acessado em 30 out. 2010.

36

Dúvidas

37

Sign up to vote on this title
UsefulNot useful