; FACULDADE LOURENÇO FILHO CURSO DE BACHARELADO EM NOME DO CURSO NOME DO ALUNO TEMA DA MONOGRAFIA – PODERÁ SER EM MAIS DE UMA LINHA FORTALEZA – CE Nome do aluno TEMA DA MONOGRAFIA – PODERÁ SER EM MAIS DE UMA LINHA Monografia apresentada ao curso de Bacharelado em Ciência da Computação como requisito parcial necessário à obtenção do grau de Bacharel em _____________ da Faculdade Lourenço Filho. Orientação: Prof(a). M.Sc. ____________________. Julho - 2015 ii Nome do aluno TEMA DA MONOGRAFIA – PODERÁ SER EM MAIS DE UMA LINHA Monografia apresentada ao curso de Bacharelado em Ciência da Computação da Faculdade Lourenço Filho, como requisito parcial à obtenção do grau de Bacharel em Ciência da Computação. Aprovada em: ____/____/______ BANCA EXAMINADORA: __________________________________________ Orientador - MSc. Xxxxxxxxxx Xxxxxxxx Faculdade Lourenço Filho __________________________________________ MSc. Xxxxxxxxxx Xxxxxx - 1º. Membro Faculdade Lourenço Filho __________________________________________ MSc. Xxxxxxxxxx Xxxxxx - 2º. Membro Faculdade Lourenço Filho __________________________________________________________ Prof. MSc. Xxxxxxxxxx Xxxxxxxxx Coordenador do Curso Nome do Curso iii Dedicatória, pessoal e facultativa iv AGRADECIMENTOS Cada um define a quem gostaria de agradecer. Aos meus pais, xxxx. Aos professores xxxxxxx A todos que, de alguma forma, contribuíram para o alcance desse objetivo e sem os quais minha caminhada teria sido árdua e os meus esforços dificilmente lograriam êxito. v A citação aqui também é facultativa. Todas as inovações eficazes são surpreendentemente simples. Na verdade, o maior elogio que uma inovação pode receber é haver quem diga: isso é óbvio. Por que não pensei nisso antes?” (Peter Drucker) vi RESUMO O texto deve ser escrito em um único parágrafo descrever o trabalho de forma sintética e objetiva e conter em tono de 250 caracteres. Palavras-chave: Pelo menos quatro, separadas por ponto e virgula. vii ABSTRACT Tradução do resumo. Key-words: viii LISTA DE FIGURAS Figura 1: Atores do ambiente de Computação em Nuvem ....................................................... 20 Figura 2: Papéis no ambiente de Computação em Nuvem ...................................................... 24 Figura 3: Configuração simplificada de um Sistema de Banco de Dados ............................... 29 Figura 4: Sistema de BD – componentes: dados, hardware, software e usuários ................... 30 Figura 5: Organização de Banco de Dados como um serviço ................................................. 46 Figura 6: Bancos de Dados independentes e instâncias de Banco de Dados independentes ... 50 Figura 7: Tabelas independentes e instância de Banco de Dados compartilhada ................... 51 Figura 8: Tabelas compartilhadas e instância de Banco de Dados compartilhada .................. 52 Figura 9: Opções de armazenamento de dados no Windows Azure ....................................... 62 ix LISTA DE TABELAS Tabela 1: Análise comparativa Modelo Relacional X noSQL ................................................. 42 Tabela 2: Requisitos para DaaS ................................................................................................ 48 Tabela 3: Resumo comparativo entre os SGBDs apresentados ............................................... 71 x LISTA DE SIGLAS E ABREVIAÇÕES ACID – Atomicidade, Consistência, Isolamento, Durabilidade API – Application Programming Interface BASE – Basically Available, Soft State, Eventually Consistent BDD – Banco de Dados Distribuído CAP – Consistency, Availability, Partition Tolerance CLR – Common Language Runtime CRM – Customer Relationship Management XML – eXtended Markup Language xi SUMÁRIO INTRODUÇÃO ...................................................................................................................... 14 1 COMPUTAÇÃO EM NUVEM .......................................................................................... 18 1.1 Características Essenciais ................................................................................................. 22 1.2 Modelos de Serviços......................................................................................................... 23 1.3 Modelos de Implantação ................................................................................................... 24 1.4 Utilização da Computação em Nuvem ............................................................................. 25 2 BANCOS DE DADOS ......................................................................................................... 27 2.1 Sistema de Banco de Dados ............................................................................................. 29 CONCLUSÃO......................................................................................................................... 76 REFERÊNCIAS ..................................................................................................................... 78 APÊNDICES .......................................................................................................................... 79 ANEXOS ............................................................................................................................... 80 xii INTRODUÇÃO O desenvolvimento do conhecimento humano vem, ao longo da história, tornando a vida cada vez mais simples. À medida que novas descobertas são feitas, produtos e serviços cuja produção e disponibilização eram complexas e onerosas passam a fazer parte do dia a dia de qualquer pessoa e toda a engenharia e ciência envolvidas no processo acabam passando despercebidas. Apenas o valor agregado, o benefício final, é transferido ao consumidor, e por um custo bastante reduzido. Isso acontece, por exemplo, com o fornecimento de serviços básicos e essenciais, tais como energia elétrica, água potável, gás, combustível, etc. Quem vai assistir a um filme em casa ou preparar um comida no microondas não precisa ter uma usina hidrelétrica particular para gerar sua energia; é necessário apenas pagar um valor mensal a uma empresa de distribuição e utilizá-la. Os diversos serviços são fornecidos com base em uma determinada política de tarifação, em que o usuário final paga de acordo com o uso que faz deles, tanto em termos qualitativos como quantitativos. Com o amadurecimento da Tecnologia da Informação (TI)1, esse modelo de negócio tem ganhado visibilidade no mercado de computação. Um conceito muito em voga atualmente é o de Computação em Nuvem ou cloud computing. Trata-se, como definem Mell e Grance (2011), de um paradigma que possibilita acesso conveniente e sob demanda a um conjunto de recursos computacionais configuráveis que podem ser rapidamente adquiridos e/ou liberados com um mínimo de esforço gerencial ou interação humana com o provedor de serviços. ................................................................................................................................ Estruturalmente, o trabalho está dividido em cinco seções. Após essa breve introdução, apresenta-se, na primeira delas, o conceito de Computação em Nuvem, com suas características essenciais e modelos de serviços e implantação, de forma a introduzir o tema e contextualizar o leitor. Na seção seguinte, capítulo 2, faz-se uma revisão da tecnologia de banco de dados, com foco em suas características, tipos, relevância e evolução. 1 TI – Tecnologia da Informação, termo amplamente utilizado neste trabalho, que indica a área de conhecimento responsável por criar, administrar e manter a gestão da informação através de dispositivos e equipamentos para acesso, operação e armazenamento dos dados, de forma a gerar informações para tomada de decisão. O capitulo 3 trata dos bancos de dados em nuvem, sua aplicabilidade, requisitos, abordagens utilizadas para a construção e principais características. No capítulo 4, são relacionados, descritos e comparados os principais sistemas de gerenciamento de dados em nuvem disponíveis no mercado. Em seguida, apresentam-se, de maneira generalizada, vantagens e desafios trazidos por essa tecnologia. Por fim, na quinta seção, tem-se a conclusão quanto aos aspectos verificados e a aplicabilidade do modelo estudado, além da proposição de temas para trabalhos futuros. 14 1 TITULO DO CAPÍTULO A Internet é hoje onipresente na vida de bilhões de pessoas em todo o mundo e deixou de ser apenas um ambiente de troca de informações. Recursos como softwares, gerenciamento de dados, infraestruturas de TI e plataformas de desenvolvimento podem ser providos como serviços na rede mundial de computadores. Por trás de toda essa versatilidade está o conceito de Computação em Nuvem, cuja base é quase tão antiga quanto os computadores (MOHAMED, 2009 e TANENBAUM, 2003). Segundo Mohamed (2009), a ideia básica que dá sustentação a essa expressão surgiu, de maneira ainda embrionária, no ano de 1961, quando o especialista em inteligência artificial John McCarthy, então professor do Instituto de Tecnologia de Massachusetts, descreveu um modelo semelhante ao de distribuição de energia, mas aplicado à computação, em que centrais forneceriam o processamento e o armazenamento de dados para residências e empresas. ......................................................................................................................... Sobre isso, Alecrim (2008) declara que: A denominação Cloud Computing chegou aos ouvidos de muita gente em 2008, mas tudo indica que ouviremos esse termo ainda por um bom tempo. Também conhecido no Brasil como Computação nas Nuvens ou Computação em Nuvem, Cloud Computing se refere, essencialmente, à ideia de utilizarmos, em qualquer lugar e independente de plataforma, as mais variadas aplicações por meio da Internet com a mesma facilidade de tê-las instaladas em nossos próprios computadores. Na literatura, são inúmeras as definições encontradas, que por vezes podem apresentar conceitos diferentes. Por exemplo, alguns autores defendem que a escalabilidade e o uso otimizado dos recursos são características chave da Computação em Nuvem, enquanto outros discordam, afirmando que esses elementos não são características e sim requisitos de uma infraestrutura que suporte esse paradigma de computação. De acordo com o National Institute of Standards and Technology (NIST), a Computação em Nuvem pode ser definida da seguinte forma: 15 Computação em nuvem é um modelo que possibilita acesso onipresente, 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. Esse modelo de nuvem é composto por cinco características essenciais, três modelos de serviço e quatro modelos de implantação (MELL e GRANCE, 2011, p.3). Vaquero et al. (2010, p.51), buscam em seu trabalho uma definição geral para a expressão Computação em Nuvem, com vistas a contemplar a maior parte das características expostas por outros autores e leva em consideração três conceitos principais: virtualização, escalabilidade e modelo pay-per-use2. A definição proposta é: Computação em nuvem, como o próprio nome sugere, engloba as chamadas nuvens, que são ambientes que possuem recursos (hardware, plataformas de desenvolvimento e/ou serviços) acessados virtualmente e de fácil utilização. Esses recursos, devido à virtualização, podem ser reconfigurados dinamicamente de modo a se ajustar a uma determinada variável, permitindo, assim, um uso otimizado dos recursos. Esses ambientes são, em geral, explorados através de um modelo pay-per-use. Vê-se que Computação em Nuvem é, portanto, um conjunto de características que permitem o acesso sob demanda a recursos computacionais como poder de processamento, capacidade de armazenamento de dados e ambientes de desenvolvimento na forma de serviços, disponibilizados via Internet, que ocultam a complexidade da infraestrutura envolvida. Ou seja, grandes empresas, como Google, Microsoft e Amazon podem emprestar ou vender a capacidade ociosa de seus servidores para pessoas ou empresas que precisem guardar ou processar seus arquivos digitais. Nessa troca, os provedores ganham receita de prestação de serviço, enquanto que usuários finais e pequenas e médias empresas passam a ter acesso a uma gama praticamente infinita de funcionalidades, com parque tecnológico sempre atualizado, mobilidade de acesso, custo reduzido e transparência em relação à tecnologia utilizada, ou seja, pouca ou nenhuma necessidade de conhecimento técnico. Um conceito intrinsecamente ligado à Computação em Nuvem, e que dá suporte à disponibilização de recursos computacionais como serviços, é o de Web Services. Trata-se de 2 Pay-per-use: Pague pelo uso, em inglês. 16 componentes de software ou unidades lógicas que conectam aplicações diretamente com outras, sem a necessidade de grandes customizações ou intervenções humanas. Uma das premissas fundamentais é que o padrão usado pelas conexões seja aberto e independente de plataforma tecnológica ou linguagem de programação. Essa tecnologia combina os melhores aspectos do desenvolvimento baseado em componentes com os recursos da web. As aplicações acessam os Web Services através de protocolos e formatos de dados padrão, como HTTP, XML e SOAP (LAFON, 2011). A Figura 1, a seguir, ilustra os atores do ambiente de Computação em Nuvem, bem como a organização desta, encapsulando a complexidade da infraestrutura envolvida. Figura 1: Atores do ambiente de Computação em Nuvem. Fonte: Adaptado de Vaquero et al. (2009). A ilustração apresenta três atores principais: os usuários finais, que fazem uso dos serviços disponibilizados via Internet; os provedores de serviço, responsáveis por desenvolver soluções sobre a infraestrutura disponível, beneficiando-se da flexibilidade e da redução de custos proporcionadas por esse modelo; e os provedores de infraestrutura, empresas como Google e Microsoft, detentoras do parque tecnológico, que compartilham seu poder de processamento e armazenamento mediante contratos de pagamento pelo uso. A figura apresenta ainda um aspecto de suma importância: a virtualização, utilizada em larga escala nesse ambiente, como forma de otimizar a capacidade do hardware disponível. 17 1.1 Subtítulo Na sociedade moderna, um grande número de atividades cotidianas ...................................................................................................................................... No cenário atual, de alto nível de integração e troca de informações entre os sistemas existentes, novas e versáteis aplicações de Sistemas de Banco de Dados vêm ocupando lugar de destaque. Elmasri e Navathe (2011) destacam algumas aplicações mais novas, como Banco de Dados multimídia3, GIS4, data warehouse5, OLAP6, tecnologia de bancos de dados ativos e real time7. 3 Dados multimídia: texto, imagens, áudio e animação; representação e processamento de áudio digital. 4 GIS - Geographic Information System (Sistema de Informação Geográfica - SIG): sistema de hardware, software, informação espacial e procedimentos computacionais que permite e facilita a análise, gestão ou representação do espaço e dos fenômenos que nele ocorrem. 5 Data warehouse - traduzido literalmente para depósito de dados, é um sistema de computação utilizado para armazenar informações relativas às atividades de uma organização em bancos de dados, de forma consolidada. 6 OLAP - Online Analytical Processing: software cuja tecnologia de construção permite aos analistas de negócios, gerentes e executivos analisar e visualizar dados corporativos de forma rápida, consistente e interativa. 7 Real time: Tempo real, em computação, no contexto Banco de Dados, significa acompanhar a dinâmica das informações, enquanto os dados são registrados no sistema. 18 1.1.1 Detalhamento do subtítulo A Tabela 1, a seguir, apresenta, de forma resumida, uma análise comparativa com base em escalonamento, consistência de dados e disponibilidade do sistema: Relacional noSQL Escalonamento Possível, mas complexo. Devido à natureza estruturada do modelo, a adição, de forma dinâmica e transparente, de novos nós no grid não é realizada de modo natural. Uma das principais vantagens desse modelo. Por não possuir nenhum tipo de esquema pré-definido, o modelo possui maior flexibilidade, o que favorece a inclusão transparente de outros elementos. Consistência Ponto mais forte do modelo relacional. As regras de consistência presentes propiciam um maior grau de rigor quanto à consistência das informações. Realizada de modo eventual no modelo: só garante que, se nenhuma atualização for realizada sobre o item de dados, todos os acessos a esse item devolverão o último valor atualizado. Disponibilidade Dada a dificuldade de se conseguir trabalhar de forma eficiente com a distribuição dos dados, esse modelo pode não suportar a demanda muito grande de informações do banco. Outro fator fundamental do sucesso desse modelo. O alto grau de distribuição dos dados propicia que um maior número de solicitações aos dados seja atendida por parte do sistema e que este fique menos tempo indisponível. Tabela 1: Análise comparativa Modelo Relacional x noSQL. Fonte: Adaptado de Brito (2011). 19 2 CAPÍTULO xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ................................................ 20 3 CAPÍTULO ................................................. 21 CONCLUSÃO A computação evoluiu .................................................................................. propõe-se a realização dos seguintes trabalhos futuros: (i) realização de um estudo de caso de um ........ relacional; (ii) desenvolvimento de técnicas eficazes para descrever, ........ (iii) estudo de viabilidade da utilização de ............. 22 REFERÊNCIAS ABADI, Daniel J. Data management in the cloud: Limitations and opportunities. 2009. Disponível em <http://sites.computer.org/debull/A09mar/abadi.pdf>. Acesso em: set. de 2011. CANTU, Carlos Henrique. Firebird Essencial. Rio de Janeiro: Ciência Moderna, 2005. DATE, C. J. Introdução a Sistemas de Bancos de Dados. 8. ed. Rio de Janeiro: Campus, 2004. DEAN, Jeffrey.; Ghemawat, Sanjay. Mapreduce: simplified data processing on large clusters. 2004. Disponível em <http://usenix.org/events/osdi04/tech/dean.html>. Acesso em: set. de 2011. DECANDIA, G.; Hastorun, D.; Jampani, M.; Kakulapati, G.; Lakshman, A.; Pilchin, A.; Sivasubramanian, S.; Vosshall, P.; Vogels, W. Dynamo: Amazon’s highly available keyvalue store. 2007. SIGOPS Oper. Syst. Rev., 41(6):205–220. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 6. ed. São Paulo: Pearson, 2011. HAMILTON, Gary; QUIMBO, Jocelyn; VERMA, Saurabh. Database as a Service: A Different Way to Manage Data. Disponível em: <http://cloudcomputing.syscon.com/node/1203562>. Acesso em: out. de 2011. KLEIN, Scott; ROGGERO, Herve. Pro SQL Azure. 1. ed. USA: Apress, 2010. VAQUERO, Luis M.; MERINO-RODERO, Luis; CACERES, Juan; LINDNER, Maik. A Break in the Clouds: Towards a Cloud Definition. ACM SIGCOMM Computer Communication Review, volume 39(1): 50-55, jan. de 2009. 23 APENDICES 24 ANEXOS 25