Baixe o app para aproveitar ainda mais
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
Compartilhar