curso de pós-graduação lato sensu especialização em

Propaganda
UNIVERSIDADE FEDERAL DE MATO GROSSO
INSTITUTO DE COMPUTAÇÃO
CURSO DE PÓS-GRADUAÇÃO LATO SENSU
ESPECIALIZAÇÃO EM BANCO DE DADOS
UM ESTUDO SOBRE BANCO DE DADOS COMO SERVIÇO
EM COMPUTAÇÃO EM NUVENS
FÁBIO ARRUDA GÓES FERREIRA
CUIABÁ – MT
2011
UNIVERSIDADE FEDERAL DE MATO GROSSO
INSTITUTO DE COMPUTAÇÃO
CURSO DE PÓS-GRADUAÇÃO LATO SENSU
ESPECIALIZAÇÃO EM BANCO DE DADOS
UM ESTUDO SOBRE BANCO DE DADOS COMO SERVIÇO
EM COMPUTAÇÃO EM NUVEM
FÁBIO ARRUDA GÓES FERREIRA
Orientador: Prof. Dr. CRISTIANO MACIEL
Projeto de Trabalho de Conclusão de Curso
apresentado ao Curso Lato Sensu de Banco
de Dados da Universidade Federal de Mato
Grosso, como requisito para elaboração da
Monografia do Curso Lato Sensu de banco
de dados.
CUIABÁ – MT
2011
UNIVERSIDADE FEDERAL DE MATO GROSSO
INSTITUTO DE COMPUTAÇÃO
CURSO DE PÓS-GRADUAÇÃO LATO SENSU ESPECIALIZADA
EM BANCO DE DADOS
FOLHA DE APROVAÇÃO
UM ESTUDO SOBRE BANCO DE DADOS COMO SERVIÇO EM
COMPUTAÇÃO EM NUVENS
FÁBIO ARRUDA GÓES FERREIRA
Dissertação defendida e aprovada em 09 de fevereiro de 2011, pela comissão
julgadora:
______________________________
Prof. Dr. Cristiano Maciel
IC-UFMT
______________________________
Prof. Dr. Josiel Maimone de Figueiredo
IC-UFMT
____________________________
Prof. Dr. Alessandro Copetti
IC-UFF
AGRADECIMENTOS
Ao Prof. Dr. Cristiano Maciel, pela orientação, principalmente pela
confiança depositada em mim para entregar e apresentar esse trabalho
dentro das datas estabelecidas, pela paciência, apoio e incentivo no
decorrer da elaboração deste trabalho.
A todo corpo docente do IC-UMFT, professores do curso de banco de
dados que ministraram aulas para a turma.
A minha namorada Kelly que muito paciente me ajudou nos momentos
de stress, e que dispôs de minha presença nos fim de semanas para que
eu pudesse fazer o curso;
A minha família pelo apoio e pela ajuda financeira para realizar este
curso;
A todos os colegas de curso que tornaram as aulas descontraídas.
I
SUMÁRIO
LISTA DE TABELA ............................................................................................................................. III
LISTA DE FIGURAS ........................................................................................................................... IV
LISTA DE SIGLAS E ABREVIATURAS ................................................................................................... V
LISTA DE SIGLAS E ABREVIATURAS ................................................................................................... V
RESUMO ....................................................................................... ERRO! INDICADOR NÃO DEFINIDO.
ABSTRACT ...................................................................................................................................... VII
1. INTRODUÇÃO ............................................................................................................................. 10
1.1 OBJETIVOS ................................................................................................................................. 11
1.1.1 Objetivo Geral ................................................................................................................... 11
1.1.2 Objetivos Específicos ......................................................................................................... 11
1.2 METODOLOGIA ......................................................................................................................... 11
2. SISTEMAS DE BANCO DE DADOS ................................................................................................ 12
2.1. CONCEITO ................................................................................................................................. 12
2.2 VANTAGENS DO BANCO DE DADOS .......................................................................................... 16
2.3 SISTEMA GERENCIADOR DE BANCO DE DADOS – SGBD ........................................................... 17
2.4 OBJETIVOS E FUNÇÕES BÁSICAS DOS SGBD’S ........................................................................... 19
2.5 ARQUITETURA BÁSICA DE UM SGBD ........................................................................................ 20
2.6 PROJETOS DE BANCO DE DADOS .............................................................................................. 22
3 MODELOS DE BANCO DE DADOS ................................................................................................. 23
3.1 MODELOS LÓGICOS BASEADO EM REGISTROS ......................................................................... 23
3.1.1 Modelo de dados relacional ............................................................................................. 23
3.1.2 Modelo de banco de dados de rede ................................................................................. 26
3.1.3 Modelo de dados Hierárquico .......................................................................................... 27
3.2 MODELOS LÓGICOS BASEADOS EM OBJETOS ........................................................................... 28
3.2.1 Modelo entidade-relacionamento.................................................................................... 29
3.2.2 Modelo Orientado a Objeto.............................................................................................. 30
3.3 MODELO DE BANCO DE DADOS DISTRIBUÍDO .......................................................................... 32
3.4 MODELO DE BANCOS DE DADOS CORPORATIVO ..................................................................... 33
4 COMPUTAÇÃO EM NUVENS ........................................................................................................ 34
4.1 CONCEITO .................................................................................................................................. 34
4.2 BENEFÍCIOS DA COMPUTAÇÃO EM NUVENS ............................................................................ 39
4.3 SEGURANÇA E PRIVACIDADE .................................................................................................... 41
4.4 SERVIÇOS OFERECIDOS ............................................................................................................. 42
4.5 APLICAÇÕES ............................................................................................................................... 43
4.6 TIPOS DE NUVENS ..................................................................................................................... 44
4.7 ARQUITETURA EM NUVENS ...................................................................................................... 46
4.7.1 MapReduce ....................................................................................................................... 48
4.7.2 Hadoop .............................................................................................................................. 49
4.7.3 Sharding ............................................................................................................................ 50
5 BANCO DE DADOS NAS NUVENS ................................................................................................. 52
5.2 CONCEITO .................................................................................................................................. 52
5.2 MODELO DE DADOS BASEADO EM SERVIÇOS .......................................................................... 53
II
5.3 LIMITAÇÕES DO MODELO DAAS ............................................................................................... 55
5.4 CONSULTAS ............................................................................................................................... 56
5.5 SEGURANÇA .............................................................................................................................. 57
5.6 ARQUITETURAS UTILIZADAS EM BANCO DE DADOS EM NUVENS ........................................... 59
5.7 SISTEMAS GERENCIADORES DE BANCO DE DADOS PARA NUVENS ......................................... 62
5.7.1 Microsoft SQL Azure .......................................................................................................... 63
5.7.2 BigTable ............................................................................................................................ 65
5.7.3 Cassandra .......................................................................................................................... 67
5.7.4 SimpleDB ........................................................................................................................... 68
5.7.5 Relational Cloud ................................................................................................................ 70
5.7.6 CouchDB ............................................................................................................................ 72
6 ANÁLISE COMPARATIVA DE SGBDS PARA NUVENS ..................................................................... 75
6.1 MICROSOFT SQL AZURE ............................................................................................................ 77
6.2 BIGTABLE ................................................................................................................................... 77
6.3 SIMPLEDB .................................................................................................................................. 78
6.4 CASSANDRA............................................................................................................................... 79
6.5 RELATIONAL CLOUD .................................................................................................................. 79
6.6 COUCHDB .................................................................................................................................. 80
7. CONSIDERAÇÕES FINAIS ............................................................................................................. 84
8. REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................................... 85
III
LISTA DE TABELA
TABELA 01. REGRAS DE SGSB - DATE (2004, P. 23). -------------------------------------------------- 18
TABELA 02 - REQUISITOS PARA SGBD COMO UM SERVIÇO (CURINO ET AL. 2010) ------ 76
TABELA 03. COMPARAÇÃO DOS SISTEMAS – (SOUSA ET AL. 2010) ---------------------------- 81
IV
LISTA DE FIGURAS
FIGURA 01 - COMPONENTES DE UM SISTEMA DE BANCO DE DADOS (KORTH, 2006) ... 14
FIGURA 02 - NÍVEIS DE ABSTRAÇÃO (KORTH, 2006). ............................................................. 22
FIGURA 03 - MODELO RELACIONAL (MORAIS, 2009) ............................................................ 25
FIGURA 04 - ENTIDADE RELACIONAMENTO (MORAIS, 2009)............................................... 30
FIGURA 05 - MODELO DE COMPUTAÇÃO EM NUVEM (CAVALCANTI, 2010) .................... 36
FIGURA 06 - CAMADA CONCEITUAL DE UMA NUVEM (VOAS E ZHANG, 2009) ............... 37
FIGURA 07 - DATACENTER (SEA SERVER, 2011) ...................................................................... 38
FIGURA 08 - CONEXÕES EM NUVENS. (MENESES E CRUZ, 2009) ......................................... 40
FIGURA 09 - ARQUITETURA DE CLOUD (FOSTER, 2008) ........................................................ 47
FIGURA 10 - PROCESSO DE CONSULTA CRIPTOGRAFADO (TRADUZIDO DE HOLANDA,
2008) ........................................................................................................................................... 58
V
LISTA DE SIGLAS E ABREVIATURAS
SaaS
Software as a Service (Software Baseado em Serviço)
IaaS
Infrastucture as a Service (Infraestrutura Baseada em Serviço)
PaaS
Platform as a Service (Plataforma Baseada em Serviço)
DaaS
Database as a Service (banco de dados como Serviço)
SGBD
Sistema de Gerenciamento de banco de dados
B.I
Business Intelligence (Inteligência do Negócio)
VI
RESUMO
FERREIRA, F. A. G. Um estudo sobre banco de dados como serviço em
computação em nuvens. Cuiabá, 2010. 84p. Pós-Graduação Lato Sensu em Banco
de dados. Instituto de Computação, Universidade Federal de Mato Grosso.
Com a crescente demanda por armazenamento, processamento e disponibilidade de
dados de diversas fontes e formas, grande empresas tem focado em criar novas
formas de oferecer serviços de banco de dados. Com essa nova tendência, vem
também sendo crescente a preocupação em garantir requisitos como segurança,
agilidade, operabilidade, manutenabilidade, e, não menos importante, economizando
recursos financeiros dos clientes. Neste ponto cria-se um novo paradigma para a
gestão de dados em que um prestador de serviço terceirizado (hosts), oferece um
banco de dados como um serviço prestado, proporcionando aos seus clientes
mecanismos para criar, armazenar e acessar seus bancos de dados pela rede internet.
Esses recursos ficam disponíveis sem que os clientes tenham a necessidade de saber
que os dados estão espalhados geograficamente, porém garantindo a eles
principalmente a velocidade do serviço, a flexibilidade de aumentar os recursos em
questão de minutos com um custo de uso por utilização dos serviços. Face ao
exposto, o presente trabalho trata o paradigma de banco de dados voltado para
nuvem computacional, abordando alguns sistemas gerenciadores de banco de dados
conhecidos e usados no meio empresarial, bem como a comparação entre segurança e
armazenamento desses SGDBs. Os SGDBs investigados nesse trabalho são SQL
Azure, Relational Cloud, CouchDB, SimpleDB e BigTable. A metodologia aplicada
nesta pesquisa é exploratória e de forma comparativa, por meio de materiais
bibliográficos e pesquisas em diversas fontes como livros e repositórios da Web.
Palavras Chave: Computação em Nuvem; Banco de dados; Banco de dados como
Serviço.
VII
ABSTRACT
FERREIRA, F. A. G. A study on the database as cloud computing service. Cuiabá,
2010. 84p. Pós-Graduação Lato Sensu em banco de dados. Instituto de computação,
Universidade Federal de Mato Grosso.
As the demand has growing for storage, processing and availability of data from
various sources and forms, big companies have focused on creating new ways to
provide services database. With this new trend comes also a rising concern as to
ensure safety requirements, flexibility, operability, maintainability, and, not less
important, saving financial resources of clients. At this point it comes a
new paradigm for data management as an outsourced service provider (Hosts), offers
a database as a service, providing mechanisms to its customers to create, store and
access your bank Internet data over the network. These resource are available
without customers have to know that the data are scattered geographically, but
guaranteeing them primarily the speed of service, flexibility to increase resources in
minutes at a cost of use by service utilization. In the of her Hans this essay of master
discuss about the paradigm of database oriented for cloud computing, including
some management systems, database known and used throughout business, as well as
the comparison between security and storage of DBMSes. The DBMSes investigated
in this work are Azure SQL, Relational Cloud CouchDB, SimpleDB and
BigTable. The methodology applied in this research is exploratory and comparative
way, by means of bibliographic materials and research from several sources such as
books and web repositories
Keywords: Cloud Computing, Database, Database as a Service.
10
1. INTRODUÇÃO
A grande corrida armamentista das organizações na área de tecnologia tem
aumentado o número de dados disponíveis, e tem uma exigência cada vez maior de
segurança e confiabilidade dos seus dados e serviços gerados por novas aplicações
como WEB 2.0, B.I (Business Intelligence); de maneira que, os métodos
convencionais de armazenamento, processamento e distribuição já não são capazes
de atender a tais demandas.
Com as novas necessidades, grandes indústrias da área tecnológica, como
GOOGLE INC e MICROSOFT, vem cada vez mais investindo em formas de quebrar
paradigmas para compatibilizar o crescimento com a demanda crescente de dados
gerados.
A essa problemática tem se projetado o conceito de “Cloud Computing” ou
computação em nuvem, que é uma forma nova de se construir as camadas de
softwares, infraestrutura e banco de dados, baseados em servidores virtualizados ou
não, disponibilizados para terceiros por fornecedores independentes e distribuídos
geograficamente pelo mundo todo. Desta forma a organização troca seus recursos de
processamento locais, por recursos disponibilizados pela nuvem, sem se preocupar
como e onde está processando ou armazenando seus dados.
A essa nova tendência, surgem também novos problemas para ser
investigado, como o atual modelo de armazenamento e organização dos sistemas
gerenciadores de banco de dados (SGBD).
Os sistemas gerenciadores de banco de dados são em sua maioria relacionais,
com a forma de armazenar, manipular e recuperar dados estruturados unicamente
baseados em tabelas relacionadas por meio de chaves e organizadas por atributos,
dificultando à alta escalonabilidade dos mesmos.
Tornando o processo de construção do banco de dados em Nuvens, ou
baseado em serviços em um trabalho complexo e/ou inatingível muitas das vezes.
Novos SGDB estão introduzindo novas técnicas para adaptar ou resolver os
problemas dos modelos relacionais de banco de dados. Os SGDBs desenvolvidos
para tais soluções, ainda são poucos populares e com tecnologias diversas. As
11
principais serão pesquisados nesse trabalho, a fim de mostrar suas principais funções
e delimitações, e traçar uma pequena amostra de alguns pontos como segurança,
benefícios, armazenamento e outros fatores que venha ser encontrado em sua
estrutura.
1.1 OBJETIVOS
1.1.1 Objetivo Geral
Traçar um comparativo das principais tecnologias envolvendo sistemas
gerenciadores de banco de dados como serviço no modelo de nuvens
computacionais, focando nos aspectos de armazenamento e segurança.
1.1.2 Objetivos Específicos
I.
II.
Abordar a tecnologia de banco de dados em Nuvens.
Traçar pontos fortes e fracos no uso de bancos de dados em Nuvens.
III.
Pesquisar por sistemas gerenciadores de banco de dados focados para nuvem.
IV.
Apresentar os benefícios principais do uso do SGDB para nuvem.
1.2 METODOLOGIA
A metodologia utilizada é de pesquisas exploratórias e métodos
comparativos, por meio de materiais bibliográficos e pesquisas na internet, incluindo
bases de dados especializadas tais como Google acadêmico, Google books e
Asssociation for Computing Machinery (ACM).
12
2. SISTEMAS DE BANCO DE DADOS
Atualmente, as empresas precisam de informações rápidas, seguras e exatas
para sobreviverem num mercado altamente competitivo. As ferramentas de banco de
dados agrupadas na internet vem suprir essas necessidades, oferecendo fácil acesso a
comunicação e manipulação de informações em qualquer parte do mundo. Com isso,
vários fornecedores procuram satisfazer as necessidades do mercado, trazendo para
os bancos de dados os recursos que as empresas e seus clientes necessitam,
melhorando assim seus produtos.
Este capítulo abordará sobre o sistema de banco de dados, demonstrando o
seu conceito, os seus elementos, e as suas vantagens. Aborda ainda o funcionamento
do sistema gerenciador de banco de dados (SGBD), bem como os seus objetivos e
funções. Finalizando, descreve a arquitetura básica de um SGBD e discute o projeto
de banco de dados.
2.1. CONCEITO
O conceito de banco de dados segundo Medeiros (2006, p. 10):
É uma das tecnologias mais poderosas e duradouras do ambiente de
sistemas de informações. Ele inclui uma variedade de questões técnicas e
gerenciais, além de recursos que estão no centro da cena dos sistemas de
informação de hoje.
Conforme vimos, o conceito acima destaca que o sistema de banco de dados
é fundamentalmente um sistema computadorizado de manutenção de registros; em
outras palavras, é um sistema computadorizado cujo objetivo, geral é armazenar
informações e permitir que os usuários busquem e atualizem essas informações
quando as solicitar.
Conforme Biazus (2010):
As informações em questão podem ser qualquer coisa que tenha algum
significado ao individuo ou a organização a que o sistema deve servir, ou
seja, qualquer coisa que seja necessária para auxiliar no processo das
atividades desse individuo ou dessa organização.1
1
http://www.scribd.com/doc/7507097/Introdu-o-a-banco-de-dados-1-Alunos
13
Para Ozsu e Valduriez (2001, p. 14): “Um sistema de banco de dados (SBD)
é basicamente um sistema de manutenção de registros por computador. O objetivo
dos SBDs é manter os registros e disponibilizar quando solicitados”.
Podemos dizer que a tecnologia de banco de dados deve-se especialmente
aos especialistas que desenvolveram os sistemas nas organizações, sentindo eles a
necessidade de um armazenamento de dados mais eficiente que os arquivos
tradicionais,
pois,
estes
apresentavam
poucos
métodos
de
acesso
e
predominantemente seqüencial.
Segundo Korth (2006, p. 10) um banco de dados “é uma coleção de dados
inter-relacionados, representando informações sobre um domínio específico”, ou
seja, sempre que for possível agrupar informações que se relacionam e tratam de um
mesmo assunto, posso dizer que tenho um banco de dados.
Podemos dizer que, a definição de um banco de dados é um conjunto de
informações, estruturadas de forma a organizá-la para facilitar operações como
inserção, busca e remoção sobre estes dados. Estas informações são em regra
manipuladas por um software que gerencia sua estrutura e operações que possam ser
realizadas.
Segundo Melo et al. (1997, p. 3), um sistema de banco de dados pode
ser definido como “um ambiente de hardware e software composto por dados
armazenados em banco de dados (BD), o software que gerencia o banco de dados
(SGBD) e os programas de aplicação”.
Banco de dados é um termo que deve ser aplicado apenas aos dados,
enquanto o termo sistema gerenciador de bancos de dados deve ser aplicado ao
software com a capacidade de manipular bancos de dados de forma geral. Porém, é
comum misturar os dois conceitos.
Ao final, temos que avaliar um sistema de banco de dados como o conjunto
de quatro elementos básicos: dados, hardware, software e usuários.
Date (2004, p. 18) conceituou que “sistema de bancos de dados pode ser
considerado como uma sala de arquivos eletrônica”. A figura 01 ilustra os
componentes de um sistema de banco de dados.
14
FIGURA 01 - Componentes de um sistema de banco de dados (KORTH, 2006)
Segue conceitos dos elementos de um sistema de banco de dados:
Conforme Date (2004, p. 20):
dados (grifo nosso) é um repositório, que pode ser qualificado como
integrado ou compartilhado. O banco de dados integrado visa ao controle
de total eliminação da redundância de dados geralmente encontrada em
sistemas de arquivos comuns (gerenciadores de arquivos); o
compartilhado visa ao acesso de vários usuários a uma mesma parte dos
dados, com finalidades distintas.
A consistência e segurança dos dados são importantes para a computação
em nuvem e acredita-se que futuras aplicações centradas em dados irão alavancar os
serviços de dados em nuvem.
De acordo com Heuser (2009, p. 28):
Hardware (grifo nosso) tendo este como elemento os Volumes de
armazenamento secundário são normalmente, discos magnéticos, que são
usados para manter os dados armazenados, juntamente com os
dispositivos de entrada/saída associados (unidades de discos, etc.),
controladores de dispositivos, canais de entrada/saída e assim por diante.
O Processador de hardware e memória é associado, para dar suporte à
execução do software do sistema de banco de dados.
Além disso, o hardware é a parte física do computador, onde engloba tudo
que pode se visto e/ou tocado no computador, como por exemplo, o gabinete, placas,
memórias e periféricos. Cada máquina física tem as mesmas configurações de
software, mas pode ter variação na capacidade de hardware em termos de CPU,
memória e armazenamento em disco.
Para Korth (2006, p. 25):
Software (grifo nosso) é uma camada no banco de dados físico,
relacionados aos dados fisicamente armazenados e aos usuários do
sistema, conhecida como administrador de banco de dados ou servidor de
bando de dados ou, mais freqüentemente, como sistema gerenciador de
banco de dados (SGBD). Todas as requisições de acesso ao banco de
15
dados são tratadas pelo SGBD; os recursos para acrescentar e remover
arquivos (ou tabelas), buscar dados e atualizar dados em tais arquivos ou
tabelas, e assim por diante, são facilidades fornecidas pelo SGBD.
O sistema gerenciador de banco de dados é o componente de software mais
importante entre todos os sistemas, mas não é o único. Conforme Medeiros (2006, p.
14): “Outros componentes incluem utilitários, ferramentas de desenvolvimento de
aplicações, recursos para auxiliar no projeto, geradores de relatórios e o gerenciador
de transações”. A sigla SGBD também é usada para citar, determinado produto
especifico de um determinado fornecedor em particular.
Date (2004, p. 20-21) afirma que:
Usuários (grifo nosso) são os objetivos primordiais do sistema de banco
de dados, proporcionarem ambiente para a consulta às informações e para
o armazenamento de novas informações no banco de dados. Há diferentes
tipos de usuários de um sistema de banco de dados e são diferenciados
pela maneira que se propões a interagir com o sistema.
Os profissionais de computação que trabalham com o sistema utilizando
comandos de DML, são chamados de programadores de aplicação, os comandos de
DML são programas escritos em linguagens de programação (Cobol, PL/1, Pascal,
C).
De acordo com Mecenas e Oliveira (2005, p. 30) em sua abra, ensina que:
Estes programas são comumente chamados de programas de aplicação.
Exemplos de programas de aplicação em um sistema bancário incluem
um programa que gera cheques de pagamento, debita e credita uma conta,
transfere fundos entre contas, etc.
Os programadores são responsáveis pela escrita de programas de aplicações
de banco de dados em alguma linguagem de programação. Esses programas acessam
o banco de dados emitindo a requisição apropriada ao SGBD.
Conforme Heuser (2009, p. 29):
Usuários ocasionais (grifo nosso) são usuários sofisticados, que
interagem com o sistema sem escrever programas. Em vez disso
formulam requisições escrevendo suas consultas em linguagem de
consulta. Cada uma dessas consultas é submetida a um processador de
consultas, cuja função é quebrar um comando DML em instruções que o
gerenciador do banco de dados entenda;
Portanto, os usuários ocasionais, formulam suas solicitações ao banco de
dados através de linguagens de consultas. Interagem sem escrever programas.
Para Korth (2006 p. 25-26):
16
Usuários simples (grifo nosso) são os usuários que não são sofisticados,
que interagem com o sistema utilizando-se dos programas de aplicação
existentes. Por exemplo, um caixa de banco que necessita transferir
R$150,00 de uma conta A para uma conta B deve invocar um programa
chamado transfer. Este programa deve perguntar ao caixa a quantidade de
dinheiro a ser transferida e a conta para onde o dinheiro deve ser
transferido;
Ademais, o usuário simples interage com o sistema, através de programas de
aplicações.
Conforme Date (2004, p. 21):
Usuários especializados (grifo nosso) entram como usuários sofisticados
que escrevem aplicações de banco de dados não adaptáveis aos padrões
tradicionais de processamento de dados. Entre essas aplicações estão
sistemas de computer-aided design, bases de conhecimento e sistemas
especialistas, que armazenam dados com tipos de dados complexos como
dados gráficos e dados de áudio e sistemas de modelagem de ambiente.
Enfim, o usuário especializado escreve aplicações especializadas de banco
de dados não tradicionais, como as: bases de conhecimentos, sistemas especialistas e
tipos de dados complexos.
2.2 VANTAGENS DO BANCO DE DADOS
O banco de dados armazena os dados em um único local na organização
desta forma, eliminam-se redefinições de dados idênticos e reduz de maneira drástica
a redundância, que anteriormente encontravam duplicadas nas diversas aplicações.
No compartilhamento de dados há facilidade em integrar novas aplicações à
organização, uma vez que não é necessário redefinir o que já existe, nem incluir
dados já presentes no banco de dados.
Conforme demonstra Mecenas e Oliveira (2005, p. 32) em sua obra:
Todos os procedimentos para tratamento de dados são agora realizados
pelo banco de dados causando uma independência dos dados, isto é, os
dados não precisam estar na área de armazenamento onde executa a
aplicação. Além disso, modificações nestes procedimentos não afetam a
aplicação, ou seja, esta não necessita ser recopilada.
O acesso do banco de dados é por meio de linguagens de alto nível.
Anteriormente era necessário programar um procedimento para realizar uma
operação sobre os dados, agora basta apenas escrever um pequeno comando nesta
linguagem de manipulação.
17
2.3 SISTEMA GERENCIADOR DE BANCO DE DADOS
– SGBD
O sistema gerenciador de banco de dados pode ser relacionado a um
conjunto de programas inter-relacionados cujo objetivo principal é equipar um
ambiente que seja adequado e eficiente para recuperar e armazenar informações de
banco de dados, além de gerenciar o acesso e a correta manutenção dos dados
armazenados. O acesso acontece por forma de linguagem onde aceita a comunicação
com aplicação por meio de uma interface amigável ao usuário. Garantindo ao sistema
gerenciador de banco de dados a integridade, segurança e concorrência, de modo a
evitar dados inconsistentes.
De acordo com Medeiros (2006, p. 16) em sua obra, demonstra que o:
Surgimento teve início na década de 70 com o objetivo de facilitar a
programação de aplicação de banco de dados (BD). Os primeiros sistemas
eram caros e difíceis de usar, requerendo especialistas treinados para
utilizar o SGBD específico.
Com o transcorrer dos anos, os SGBD’s foram evoluindo através de
pesquisas e novas tecnologias foram desenvolvidas melhorando as interfaces e,
portanto, facilitando o manuseio dos dados; conseqüentemente os SGBD’s tornaramse mais populares entre as classes de profissionais da área de desenvolvimento.
Conforme Date (2004, p. 22):
O SGBD em regra interage com diversas aplicações de uma organização
através da Linguagem de Manipulação de dados (DML) embutidos no seu
código e a comunicação com os meios de armazenamento de dados
geralmente é efetuada por meio de interface com o sistema operacional do
equipamento, para leitura e gravação de dados.
Podemos dizer que para o gerenciamento de dados, são importantes os itens
como a integridade, segurança, concorrência, acesso e autorização, os quais citados
são responsabilidade do sistema gerenciador de banco de dados. No próximo item
serão apresentadas as principais funções dos SGBD’s.
Conforme o Machado (2008, p. 25) explana em sua obra:
Existem algumas regras básicas e claras para que um sistema de
manipulação de dados possa ser considerado um SGBD. Fica implícito
que se ao menos uma das características abaixo não estiver presente no
nosso "candidato" a SGBD, este poderá ser um Gerenciador de Arquivo
de altíssima qualidade, "quase" um SGBD, mas não um SGBD.
18
No quadro abaixo podemos visualizar melhor as explicações referente às
regras segundo Date (2004, p. 23):
REGRA
EXPLICAÇÃO
Um SGBD não contém apenas os dados em si, mas armazena
completamente toda a descrição dos dados, seus relacionamentos e formas
Auto-Contenção
de acesso. Normalmente esta regra e chamada de Meta-Base de dados.
Quando as aplicações estiverem realmente imunes a mudanças na estrutura
de armazenamento ou na estratégia de acesso aos dados, podemos dizer que
esta regra foi atingida. Portanto, nenhuma definição dos dados devera estar
Independência dos dados
contida nos programas da aplicação.
O chamado Modelo de dados e um tipo de abstração utilizada para fornecer
esta representação conceitual. Neste modelo, um esquema das tabelas, seus
relacionamentos e suas chaves de acesso são exibidas ao usuário, porem
nada e afirmado sobre a criação dos índices, ou como serão mantidos, ou
Abstração dos dados
qual a relação existente entre as tabelas que devera ser mantida integra.
Um SGBD deve permitir que cada usuário visualize os dados de forma
diferente daquela existente previamente no banco de dados. Uma visão
Visões
consiste de um subconjunto de dados do banco de dados, necessariamente
derivados dos existentes no banco de dados.
Um SGBD deve gerenciar completamente a integridade referencial definida
em seu esquema, sem precisar em tempo algum, do auxilio do programa
aplicativo. Desta forma exige-se que o banco de dados tenha ao menos uma
instrução que permita a gravação de uma serie modificações simultâneas e
uma instrução capaz de cancelar uma série modificações. Por exemplo,
Transações
imaginemos que estejamos cadastrando um pedido para um cliente, que
este deseje reservar cinco itens de nosso estoque, que estão disponíveis e,
portanto é reservado, porem existe um bloqueio financeiro (duplicatas em
atraso) que impede a venda. A transação devera ser desfeita com apenas
uma instrução ao banco de dados, sem qualquer modificação suplementares
nos dados.
Em um Gerenciador de Arquivos uma situação típica e o chamado DeadLock, o abraço mortal. Esta situação indesejável pode ocorrer toda vez que
um usuário travou um registro em uma tabela e seu próximo passo será
travar um registro em uma tabela relacionada à primeira, porem se este
registro estiver previamente travado por outro usuário, o primeiro usuário
ficara paralisado, pois, estará esperando o segundo usuário liberar o registro
em uso, para que então possa travá-lo e prosseguir sua tarefa. Se por
hipótese o segundo usuário necessitar travar o registro travado pelo
primeiro usuário, afirmamos que ocorreu um abraço mortal, pois cada
usuário travou um registro e precisa travar outro, justamente o registro
Acesso Automático
anteriormente travado pelo outro. Imaginemos um caso onde o responsável
pelos pedidos acabou de travar o Registro Item de Pedido, e, necessita
travar um registro no Cadastro de Produtos, para indicar uma nova reserva.
Se concomitantemente estiver sendo realizada uma tarefa de atualização de
pendências na Tabela de Itens, e para tanto, previamente este segundo
usuário travou a Tabela de Produtos, temos a ocorrência do abraço mortal.
TABELA 01. REGRAS DE SGSB - DATE (2004, P. 23).
19
2.4 OBJETIVOS E FUNÇÕES BÁSICAS DOS SGBD’S
Descreveremos abaixo os principais objetivos e funções de um sistema
gerenciador de banco de dados.
Segundo Machado (2008, p. 26):
Os objetivos de um sistema de banco de dados são o de isolar o usuário
dos detalhes internos do banco de dados (promover a abstração de dados)
e promover a independência dos dados em relação às aplicações, ou seja,
tornar independente da aplicação, a estratégia de acesso e a forma de
armazenamento.
Nos sistemas gerenciadores de banco de dados os seus acessos devem ser
feitos de forma eficaz, procurando tornar mínimo o número de acessos ao meio de
armazenamento secundário. Eles suportam duas categorias de linguagens, são elas:
Conforme Reis (2000, p. 20):
Linguagem de definição de dados (DDL) (grifo nosso) aceita a
modelagem lógica dos dados, ou seja, entidades com seus atributos e tipos
de dados associados; os relacionamentos entre estas entidades e os índices
de acesso associados aos atributos.
De acordo com Reis (2000, p. 20): “Linguagem de manipulação de dados
DML (grifo nosso) permite as operações usuais de manipulação de dados (inclusão,
alteração, exclusão e consulta), executados pelas aplicações”.
Podemos articular que a independência lógica além de garantir a
modelagem das visões de cada usuário também evolui de uma forma sem interferir
em outras visões onde haja compartilhamento de dados. Não podendo deixar as
evoluções das visões globais interferirem nas visões particulares.
Conforme Date (2004, p. 37): “A independência física garante que
mudanças no armazenamento dos dados, por qualquer razão, não repercutem na
definição conceitual dos dados”.
A sua facilidade de consulta deve ser aceitável especificar apenas o que se
deseja consultar ou manipular e não como fazê-lo. Linguagens declarativas são uma
tendência natural nesta interface, dada sua elegância e clareza semântica.
Sua administração centralizada de dados tem como setor de administração,
através do controle das estruturas de armazenamento e estruturas de dados, visa
garantir a coerência dos dados.
De acordo com Greff (2010, p. 9):
20
A não redundância dos dados é um dos problemas dos sistemas de
arquivos tradicionais era a duplicação desordenada dos dados pelos
diferentes arquivos. Um dos principais objetivos dos SGBD é o de evitar
a redundância dos dados.
Só ocorrerá a não redundância dos dados, por causa da sua estruturação, que
é integrada nos bancos de dados e a sua administração centralizada. Em casos
eventuais (desempenho, decisões de projeto) onde se justifique uma duplicação, os
SGBDs controlarão a redundância mais facilmente que os sistemas convencionais de
gerenciamento de arquivos.
Para Greff (2010, p. 9):
A coerência dos dados provê mecanismos que garantem a coerência dos
bancos de dados, em geral através de restrições de integridade ligadas às
propriedades dos dados. Os SGBD são responsáveis pelo controle destas
restrições (regras).
Através do seu compartilhamento de dados é permitido que vários usuários
tenham a capacidade de acessar aos mesmos dados, de forma simultânea, para
garantir a integração dos dados quando for compartilhado ao mesmo tempo.
Segundo Date (2004, p. 38): “A segurança dos dados está relacionada com a
acessibilidade dos dados. O objetivo é o de garantir acesso ao banco de dados ou
parte deste apenas por pessoas devidamente autorizadas”.
De acordo com Reis (2000, p. 19):
Os SGBD’s, apesar de oferecerem todas estas vantagens para os
desenvolvedores de aplicações, necessitam ser devidamente escolhidos,
de forma a se adequarem com a plataforma computacional onde a
aplicação executará. Muitas vezes, dependendo desta plataforma, os
SGBD’s podem ser mais ou menos poderosos.
2.5 ARQUITETURA BÁSICA DE UM SGBD
O SGBD pode ser notado como um sistema que fornece ao usuário as
informações necessárias nos dados armazenados, isto é, o sistema omite certos
detalhes de como os dados são armazenados e mantidos simplificando a interação do
usuário com os dados.
Conforme Date (2004, p.39):
Pode-se dizer que o SGBD tem um nível interno, onde é descrito a
estrutura de armazenamento físico dos dados, um nível intermediário,
21
onde se tem a descrição lógica dos dados e um nível externo onde são
descritas as visões para grupos de usuários.
O grande objetivo de um sistema de banco de dados é fornecer aos usuários
uma visão abstrata dos dados. Esta abstração se dá em três níveis:
Para Freitas (2000, p.21) o primeiro é o nível físico:
Onde corresponde ao nível menos abstrato, onde se sabe detalhes físicos
da organização de um dado. É uma estruturação de baixo nível, onde é
descrito como os dados estão armazenados, em termos de bytes (tamanho
de registros, tamanho e posição de campos). O módulo de gerenciamento
de arquivos do SGBD lida com este nível de visão dos dados, uma vez
que localiza, lê e grava registros;
Portanto, o nível físico é o mais baixo de abstração descreve como os dados
estão realmente armazenados. Esse nível possui complexas estruturas de dados de
baixo nível sendo descritas em detalhes.
Elencando Freitas (2000, p.21) sobre o nível conceitual:
Este corresponde ao nível intermediário, que suporta uma descrição de
mais alto nível em relação ao nível físico, onde a preocupação está em
descrever quais dados são significativos para uma organização. Neste
caso, se lida com os dados em nível de entidades e relacionamentos, tal
qual está definido no esquema. É similar, por analogia, à descrição de um
registro em uma linguagem de programação, ou seja, se lida com nomes
de arquivos e campos e não com seqüências de bytes;
Dessa forma, o nível conceitual descreve quais dados estão armazenados de
fato no banco de dados e as relações que existem entre eles. Sendo o banco de dados
descrito por inteiro em termos de um pequeno número de estruturas relativamente
simples. Esse nível é usado por administradores de banco de dados, que podem
decidir quais informações devem ser mantidas no sistema.
Segundo Freitas (2000, p.21), sobre o nível de visão: “Que é o nível mais
alto de abstração, sendo particular de cada aplicação que manipula dados do BD.
Este universo de dados pode ser uma porção do esquema global da organização”.
Apesar do uso de estruturas desse nível ser o mais simples do que no nível
conceitual, alguma complexidade perdura devido ao grande tamanho do banco de
dados.
22
FIGURA 02 - Níveis De Abstração (KORTH, 2006).
Para ter um bom suporte de dados o sistema gerenciador de banco de dados
necessita realizar mapeamentos sobre os três níveis, deixando assim de forma
transparente, para o usuário de um nível mais alto, a organização do dado nos níveis
mais baixos.
2.6 PROJETOS DE BANCO DE DADOS
Conforme Heuser (2009, p.31) afirma que:
Todo bom sistema de banco de dados deve apresentar um projeto, que
visa à organização das informações e utilização de técnicas para que o
futuro sistema obtenha boa performance e também facilite infinitamente
as manutenções que venham a acontecer.
O projeto de um novo banco de dados dá-se em três fases:
Conforme Bolzan (2010): “Modelagem Conceitual (grifo nosso) permite
nesta fase inicial e construído um modelo conceitual, na forma de um diagrama
entidade-relacionamento. Este modelo independe da implementação”.
De acordo com Heuser (2009, p.32):
O Projeto Lógico (grifo nosso) tem como objetivo transformar o modelo
conceitual obtido na primeira fase em um modelo lógico. O modelo
lógico define como o banco de dados será implementado em um Sistema
de Gerenciador de banco de dados especifico.
Elenca Date (2004, p. 40):
O Projeto Físico (grifo nosso) nesta etapa o modelo de BD será
enriquecido com detalhes que influenciam no desempenho do BD, mas
não interferem em sua funcionalidade. Alterações neste modelo não
afetam as aplicações que usam o BD.
23
3 MODELOS DE BANCO DE DADOS
Atualmente, os sistemas de banco de dados podem ser agrupados em
modelos, os quais representam claramente os diversos estágios de evolução até
chegar aos padrões atuais. Neste capítulo serão analisados os principais modelos
existentes de banco de dados, sendo esses responsáveis pela sua evolução.
3.1 MODELOS LÓGICOS BASEADO EM REGISTROS
Podemos dizer que os modelos representam estruturas das tabelas de uma
forma próxima à existente fisicamente, usando sua descrição de dados nos níveis
conceitual e visual. A denominação modelos baseados em registros significa que o
banco de dados é estruturado em registros tendo o seu formato fixo de diversos tipos.
Cada tipo de registro define um numero fixo de campos ou atributos e cada campo é
usualmente de um tamanho fixo.
Vamos mencionar três modelos de dados: o relacional, de rede e o
hierárquico, que serão mencionados neste capítulo.
3.1.1 Modelo de dados relacional
Segundo Medeiros (2006, p. 36) a definição clássica de modelo relacional:
“São conjunto de dados visto segundo um conjunto de tabelas e as operações sobre
elas são feitas por linguagem que manipulam a álgebra relacional, não sendo
procedural, ou seja, manipulando conjuntos de uma só vez.”
De acordo com Date (2004, p. 41): “O conceito principal vem da teoria dos
conjuntos da álgebra relacional. Não é relevante ao usuário, saber onde os dados
estão, nem como os dados estão (transparência)”.
Os usuários manejam objetos dispostos em linha e colunas das tabelas.
Tendo na álgebra relacional conjunto de operadores e funções de alto nível.
Conforme Heuser (2009, p. 33):
O banco de dados mais utilizado atualmente e o banco de dados
relacional, principalmente pelas suas fortes características de seguranças,
compartilhamento e integridade dos dados, fatores primordiais para uma
administração eficaz da informação de qualquer empresa. Com o próprio
24
nome diz, esse tipo de banco de dados é composto de relações entre
entidades, denominadas tabelas, seguindo o mesmo conceito matemático
de relação.
Relacionado por meio de chave as tabelas, onde as chaves são chamadas de
estrangeiras, podendo esta ser de forma simples, formando apenas um atributo, ou
compostas, formadas por vários atributos. Já o atributo compreende-se a
representação de um tipo de informação.
Elenca Date (2004, p. 42):
Para que um modelo seja considerado relacional, os dados devem ser
armazenados em tabelas, nenhum ponteiro ou ligação deve ser visível ao
usuário, a linguagem de consulta deve ser relacionalmente completa e as
consultas podem ser expressas sem uso de iterações ou recursões. Cada
linha da tabela, formada por um conjunto de colunas, representa um
registro ou tupla.
Devemos mencionar que os registros não necessitam ter dados em todas as
colunas, porque os seus valores podem ser nulos. Denominando de campos as
colunas de uma tabela. Tendo os campos características que definem o dado que será
armazenado. Os dados do SGBD’s são armazenados por possuírem normas que irão
reger. Podendo existir em um banco de dados uma ou centenas de tabelas.
Conforme Korth (2006, p. 27): “Cada coluna de uma tabela obedece às
regras definidas na sua criação. Cada coluna recebe um tipo de dado, que representa
o conjunto de valores que podem ser armazenados em cada uma das colunas.”
Basicamente, cada coluna representa o tipo de cada dado, ou seja, as regras de
entrada dos dados, evitando a incompatibilidade.
Para Machado (2008, p. 30):
As linhas representam todos os dados cadastrados, ou seja, um conjunto
de colunas ou campos. As linhas representam o numero de registros
cadastrados na tabela e as colunas representam os tipos de dados ou
campos cadastrados. Alguns campos da tabela alem do tipo de dados,
possuem uma propriedade adicional. Esses campos recebem o nome de
chave.
São dois modelos de chaves: a primeira é chamada de chave primária, ela
identifica cada registro, dando-lhe unicidade. Nunca se repetindo a chave primária
dentro da estrutura da tabela, já a segunda é denominada de chave estrangeira, onde é
formada pela chave primária de outra tabela e da chave de um campo da tabela
externa que recebe o relacionamento. Podendo esta chave se repetir várias vezes.
25
Devemos fazer uma busca em tabelas diferentes, para podermos recuperar
informações necessárias estabelecendo sempre um relacionamento entre elas. Esta é
a origem do nome deste paradigma de banco de dados.
De acordo com Couceiro (1984, p. 77):
Muitos bancos de dados Relacionais tem linguagem de alto nível e dá
suporte a uma forma limitada de visões do usuário. Usualmente, os
esquemas conceituais e internos não são distinguíveis e a Linguagem de
Definição de dados (DDL) é utilizada para descrever todos os aspectos de
estrutura do banco de dados. Por exemplo, determinar quais os
correntistas de cada conta-bancária, significa determinar um subconjunto
da união dos conjuntos cliente e conta, onde todos os elementos possuam
uma determinada propriedade.
Enfim, toda a informação de um banco de dados relacional é armazenada
em tabelas, que na linguagem do modelo relacional, podendo também ser
denominada de entidades. Por exemplo, posso ter uma tabela "clientes", onde seriam
armazenadas informações sobre os diversos clientes.
Conforme Freitas (2000, p.25):
Quando o banco de dados precisa montar uma expressão algébrica para
encontrar um resultado, ele deve escolher uma entre várias expressões.
Apesar de apresentarem o mesmo resultado, as expressões são diferentes,
e a diferença fará com que o banco de dados adote um diferente caminho
para resolver cada uma.
Podemos dizer que um grande número de produtos de banco de dados
relacionais está disponível no mercado. Eles incluem entre outros, IBM DB2, Oracle,
Sybase, Informix, Progress e etc.
FIGURA 03 - MODELO RELACIONAL (MORAIS, 2009)
26
A figura 03 mostra as informações sobre as tabelas cliente e conta. Na
tabela cliente, será armazenado seu código, nome, rua e cidade, enquanto na tabela
conta, teremos a informação do numero da conta e do saldo. Podemos perceber que
no final da figura a uma ligação entre o cliente e a conta, obtendo assim informações
de cada tabela.
3.1.2 Modelo de banco de dados de rede
De acordo com Javarotti Filho (2008):
O banco de dados em rede é composto de uma estrutura mais completa,
possui as propriedades básicas de registros, conjuntos e ocorrências, e
utiliza a linguagem de definição de banco de dados (DDL) e a linguagem
de manipulação de dados (DML), alem de permitir uma evolução mais
eficiente do modelo.
A estrutura é formada de entidade (registros), atributos (itens de dados), tipo
de registro e ocorrência do registro.
Segundo Heuser (2009, p. 40) conceitua que:
O modelo rede utiliza como elemento básico de dados a ocorrência de
registro. Um conjunto de ocorrências de registros de um mesmo tipo
determina um tipo de registro. Um conjunto de tipos de registro
relacionados entre si, através de ligações (associação entre dois registros)
especiais, forma uma estrutura de dados em rede que por sua vez podem
ser implementadas sob a forma de ponteiros, listas de ponteiros, etc.
Para Freitas (2000, p.26), “Uma rede é essencialmente um conjunto de
ilimitado de nós (tipos de registros neste caso) e de ramais de ligação, ou bordas. Na
verdade, uma hierarquia é apenas um tipo particular de rede”. Podendo então uma
rede não apresentar o conceito de nó ‘raiz’ e os registros podem ter diversos tipos de
registros-pais, assim como diversos tipos de registros-filhos.
Elencando Freitas (2000, p.26), “As referências ou ligações estão
normalmente inseridas junto com as ocorrências de registro, assim, todo acesso a um
próximo registro utiliza o ponteiro inserido no registro corrente disponível”.
Podemos mencionar neste modelo, o seu elemento distintivo, o registro
base, a partir de então são dispostos os demais registros.
Conforme Javarotti Filho (2008):
A estrutura e formada de entidade (registros), atributos (itens de dados),
tipos de registros e ocorrência do registro. Tanto no modelo hierárquico
quanto o de rede são chamados de sistemas de navegação, pois as
27
aplicações devem ser construídas para atravessar um conjunto de registros
interligados previamente.
A maior vantagem do modelo de rede frente ao hierárquico é um melhor
controle sobre a redundância de dados.
Conforme Couceiro (1984, p. 81): “O modelo de rede difere do modelo
relacional, ao representar os dados através de coleções de registros e os
relacionamentos entre os dados através de ligações”. No modelo relacional, os dados
e os relacionamentos entre os dados são representados por uma coleção de tabelas.
Para Medeiros (2006, p. 38):
Podendo ser descritas como de ordem de entrada e de existência as
restrições impostas pelo Modelo de Redes. Já as de entradas tem a
obrigatoriedade de cada novo registro estar conectado (ou apontado) ao
conjunto indicado. Em relação a restrições de existência pode-se dizer que
um componente de um tipo de registro pode existir de forma
independente de outros desde que esteja conectado a algum outro registro
fazendo parte de algum conjunto, ou sendo base de um novo conjunto.
O modelo de banco de dados de rede tem uma estrutura mais completa,
possui as propriedades básicas de registros, conjuntos e ocorrências, e emprega a
linguagem de definição de banco de dados (DDL) e a linguagem de manipulação de
dados (DML), além de aceitar evolução mais eficiente do modelo.
Conforme Medeiros (2006 p. 38-39):
Uma modalidade especial deste modelo foi apresentada pelo data base
Task Group (DBTG) da Conference on Data Systems and Languages
(Codasyl). Uma crítica feita a este modelo é a inclusão de detalhes que
tem mais a ver com implementação física do que com estrutura lógica.
3.1.3 Modelo de dados Hierárquico
Para Freitas (2000, p.27):
O modelo hierárquico é similar ao modelo de rede, pois os dados e
relacionamentos são representados por registros e ligações,
respectivamente. Cada registro neste modelo é uma coleção de campos,
cada um contendo somente uma informação. Uma ligação é uma
associação entre precisamente dois registros.
Os seus registros são organizados em níveis e subníveis, sendo que cada
nível é o detalhamento das informações do nível imediatamente superior.
Segundo Takai et al. (2005, p. 6):
28
Um diagrama de estrutura de árvore é um esquema para o banco de dados
hierárquico. Um diagrama consiste de dois componentes básicos: caixa,
que corresponde o tipo registro e linha, que corresponde à ligação. Um
diagrama de estrutura de árvore é similar a um diagrama de estrutura de
dados no modelo de rede.
Conforme Heuser (2009, p. 48): “Quando se fala em hierarquia de dados, o
acesso aos dados é feito através do segmento “raiz” em que um campo é escolhido
como campo-chave e os outros são baseados em índices ou acesso aleatório”.
A diferença entre modelo hierárquico do modelo de redes está no sentido
em que os registros são organizados como coleções de árvores composta de
conjuntos de registros interligados descrevendo uma hierarquia.
Para Mecenas e Oliveira (2005, p. 40):
Todos os bancos de dados apresentam vantagens e desvantagens em sua
utilização, e com o banco de dados modelo hierárquico não e diferente.
Ele é um modelo bastante simplificado representa naturalmente sistemas
que possuem uma hierarquia bem definida, não representando sistemas
que não possuem tais características, alem de aumentar os índices de
redundância ou duplicidade, possuir tempos de consulta e processamento
reconhecidamente altos.
São considerados os modelos mais utilizados na área comercial, os três
modelos mencionados anteriormente.
3.2 MODELOS LÓGICOS BASEADOS EM OBJETOS
Os modelos lógicos baseados em objetos são apresentados no nível
conceitual e no nível de visões do usuário.
Para Freitas (2000, p. 28):
São modelos que procuram representar as informações através dos
paradigmas da orientação a objetos, utilizando o conceito de Classes que
irão conter os objetos. Eles se caracterizam pelo fato de fornecerem
capacidades de estruturação flexíveis e admitirem restrições de dados.
Esses modelos são conhecidos por apresentarem uma capacidade de
estruturação flexível, conforme elencado por Freitas.
De acordo com Mecenas e Oliveira (2005, p. 42) ensinam que:
Modelos lógicos baseados em objetos são usados na descrição de dados
nos nível conceitual e visão. Caracterizam-se por proporcionar ampla e
flexível capacidade de estruturação e por permitir a especificação de
restrições de dados de forma explícita.
29
A seguir serão demonstrados dois exemplos de modelos utilizados pelo
modelo lógico baseados em objeto, modelo de entidade-relacionamento e orientado a
objeto, embora existam vários modelos pertencentes a este grupo.
3.2.1 Modelo entidade-relacionamento
Para Greff (2010, p. 06):
Esse modelo baseia-se numa percepção de mundo real que consiste em
uma coleção de objetos básicos chamados entidades, e de
relacionamentos entre esses objetos. Uma entidade é um objeto que existe
e é distinguível de outros objetos.
Para fazer a distinção dos objetos, tem que associar cada entidade em um
conjunto de atributos que os descrevam. Por exemplo, os atributos número e saldo
descrevem uma conta particular bancária.
Segundo Mecenas e Oliveira (2005, p.42), “Um relacionamento é um
associação entre diversas entidades. Por exemplo, um relacionamento cliente-conta
associa um cliente com cada conta que possua”. O conjunto de todas as entidades e
relacionamentos do mesmo tipo é chamado de conjunto de entidades e conjunto de
relacionamentos, respectivamente.
Podemos expressar graficamente a estrutura conceitual global de um banco
de dados através de um diagrama E-R que incide nos seguintes elementos:
•
Retângulos, que representam conjuntos de entidades;
•
Círculos, que representam os atributos;
•
Losangos, que representam relacionamentos entre conjuntos de
entidades;
•
Linhas, que ligam atributos a conjuntos de entidades e conjuntos de
entidades a relacionamentos.
Vamos considerar um modelo de entidade–relacionamento ER, como no
exemplo da figura 04, onde mostra as entidades Cd’s e Faixas. Na figura 04 mostra a
descrição abstrata dos dados armazenados, permitindo construir a sua estrutura lógica
global.
30
FIGURA 04 - Entidade relacionamento (MORAIS, 2009)
3.2.2 Modelo Orientado a Objeto
Este modelo é um sistema onde a sua unidade de armazenamento é vista
pela forma de um objeto, ou seja, ela tem propriedades e não campos.
De certa forma podemos sugerir que orientação a objetos corresponde à
organização de sistemas como uma coleção de objetos que integram estruturas de
dados e comportamento. Diferenciando a abordagem das demais por incluir certos
números de conceitos, princípios e mecanismos.
De acordo com Freitas (2000, p. 29):
Semelhante ao modelo E-R, o modelo orientado a objeto é baseado no
conceito de objeto (dados encapsulados em forma de códigos e métodos)
que operam trocando mensagens entre si, e esses objetos são estruturados
em classes, e as classes estão baseadas em uma hierarquia de subclasse e
superclasse, herdando propriedades e métodos das classes superiores.
No modelo orientado a objeto cada informação sua são armazenadas na
forma de objetos. O trato com a informação no modelo orientado a objetos é mais
coerente. As regras de negócio são mais claras, mais simples de executar e manter
porque tratam com objetos reais, e não com listas abstratas. No modelo orientado a
objeto, o banco é quem acompanha a evolução do modelo e da aplicação, e não o
contrário.
Segundo o pesquisador Heuser (2009, p. 47):
“Os modelos de dados orientados a objetos tem um papel importante nos
SGBD porque, em primeiro lugar, são mais adequados para o tratamento
de objetos complexos (textos, gráficos, imagens) e dinâmicos (programas,
31
simulações). Depois, por possuírem maior naturalidade conceitual e,
finalmente, por estarem em consonância com fortes tendências em
linguagens de programação e engenharia de software. O casamento entre
as linguagens de programação e banco de dados é um dos problemas que
estão sendo tratados de forma mais adequada no contexto de orientação a
objetos”.
Em modelos de dados orientados a objetos um objeto é criado como uma
instância de uma classe, apresentando as propriedades e comportamento desta classe.
Apresentando um identificador único que o distingue dos demais objetos.
Elenca Mecenas e Oliveira (2005, p.43):
Uma vez criado, o objeto pertence a esta classe durante todo o seu tempo
de vida, mesmo se, com o passar do tempo, suas características
comportamentais evoluam de modo a ser identificado com as
características de outra classe.
Um banco de dados orientado a objetos se caracteriza por:
De acordo com Freitas (2000, p. 29):
Ser formado por um conjunto de tipos abstratos de dados, com operações
definidas sobre estes tipos, as quais caracterizam as propriedades ou o
comportamento dos tipos, sendo os objetos instâncias destes tipos; Serem
os objetos acessados e manipulados somente através das operações
definidas para os tipos, ficando a estruturação dos dados e os detalhes da
implementação, totalmente escondidos. Os objetos são definidos,
portanto, somente através de suas propriedades (seus comportamentos).
Nota-se que este modelo apresenta a semântica da aplicação em seu
esquema conceitual e permitindo então modelar entidades do mundo real na forma de
objetos armazenados, se tornando então um dos maiores alvos de interesse em
aplicações complexas de sistemas de informações, tudo por causa da sua facilidade.
Observa-se a necessidade constante de aumento de produtividade, fazendo
com que as equipes de desenvolvedores, procurem criar padrões de programas,
bibliotecas de classes e softwares que gerem aplicações semi-prontas que auxiliem
neste objetivo.
Os desenvolvedores enfrentam uma dificuldade, porque este modelo não
programa sem levar em conta o banco de dados em que os objetos serão
armazenados. Deve existir uma preocupação com o mapeamento entre os diferentes
modelos.
Para Freitas (2000, p. 30): “O desenvolvimento do sistema gerenciador de
banco de dados orientado a objetos (SGBDOO) teve origem na combinação de idéias
32
dos modelos de dados tradicionais e de linguagens de programação orientada a
objetos”.
Conforme Korth (2006, p. 29):
O sistema gerenciador de banco de dados orientado a objeto simplifica
muito a integração com as linguagens de programação deste paradigma
orientada a objetos, porque ele apóia o modelo de dados diretamente.
Existem duas propriedades importantes para a construção de um SGBDOO:
Para Toledo (1994, p. 18): “Extensibilidade (grifo nosso) garante que o
conjunto de tipos oferecidos pelo sistema permite a definição de novos tipos e não há
distinção entre os tipos pré-definidos e os definidos pelo usuário”.
De acordo com Toledo (1994, p. 18): “Completude computacional (grifo
nosso) implica que a linguagem de manipulação de um banco de dados Orientado a
Objetos pode exprimir qualquer função computacional”.
Neste modelo a noção de objeto é empregada no nível lógico possuindo
características não encontradas nas linguagens de programação tradicionais, como no
caso de operadores de manipulação de estruturas, gerenciamento de armazenamento,
tratamento de integridade e persistência dos dados.
3.3 MODELO DE BANCO DE DADOS DISTRIBUÍDO
Conforme Korth (2006, p. 28):
Um banco de dados distribuído é um conjunto de banco de dados
armazenados em diferentes nodos de uma rede de computadores, sendo
esse banco de dados correlacionados logicamente, seja por relações
funcionais, seja porque são no todo ou em parte, cópias múltiplas das
mesmas informações, de modo a constituir em qualquer caso uma única
coleção de dados.
Este modelo permite compartilhar e acessar dados de um modo eficiente e
seguro, fazendo com que este se torne um dos benefícios deste modelo. A forma
utilizada para localização dos seus dados é influenciado pela estrutura de controle
adotada na rede.
Afirma Freitas (2000, p. 30):
Na estrutura hierárquica, os computadores executam tarefas que
interagem de modo mais ou menos estruturado e controlado pelos
membros de mais alto nível na hierarquia. Na estrutura simétrica, todos os
computadores cooperam a um mesmo nível lógico, embora relações
proprietário-usuário possam ser criadas dinamicamente na execução de
algumas tarefas e a tendência é colocar junto a cada nodo os dados mais
33
utilizados. Para dados utilizados com freqüência por dois ou mais nodos,
pode-se criar cópias residentes em cada um desses nodos.
Esse modelo consiste em dois ou mais arquivos de dados logicamente interrelacionados localizados em sites distintos numa rede de computadores.
De acordo com Mecenas e Oliveira (2005, p. 47):
É um problema difícil manter a consistência entre as cópias quando
ocorre uma atualização em um nodo contendo uma das cópias. A
atualização deve atuar corretamente, independentemente da velocidade de
transmissão dos dados, o nodo que vai empreender a atualização deve
notificar a todos os demais que contenham cópias sua intenção de
atualizar o nodo, e se houver algum conflito, este deve ser resolvido nesse
momento.
Uma das grandes desvantagens deste modelo está no seu acréscimo de
complexidade exigida para assegurar coordenação própria entre os locais. Este
aumento de complexidade tem como conseqüência:
•
Custo de desenvolvimento de software mais elevado;
•
Maior potencial para erro, uma vez que os locais que compõem
o sistema distribuído operam em paralelo.
3.4
MODELO
CORPORATIVO
DE
BANCOS
DE
DADOS
Para Freitas (2000, p. 31), “Conceitua-se este modelo como o
armazenamento de todos os arquivos e informações de uma empresa agrupados de
uma forma que seja possível consultá-los com uma maior exatidão e rapidez de
qualquer parte da empresa”.
Para Korth (2006, p. 29):
Esse banco de dados não é uma mudança nas características fundamentais
de um banco de dados, mas sim, a disponibilidade de novas tecnologias
para o seu acesso e armazenamento, ele vai além das fronteiras de um
banco de dados, aonde é aperfeiçoado o acesso aos dados através de uma
melhoria nas tecnologias de processamento com componentes mais
rápidos, terminais remotos, além da aceitação cada vez maior de aceitação
compartilhada, ou seja, os dados podem ser gerenciados como um
recurso.
Esses dados podem ser considerados recursos por possuírem a mesma
informação, sendo esta de grande importância e pode ser requisitada ou necessária
34
para várias partes da empresa, com isso se torna importante gerenciá-los, sendo o
único recurso que mantém a pista dos demais.
Sendo este modelo gerenciado por um departamento, onde as suas
atribuições, em geral, tem a responsabilidade pelo banco de dados, onde essa abrange
o seu projeto, desempenho, segurança e publicidade.
4 COMPUTAÇÃO EM NUVENS
A computação em nuvem é uma tecnologia nova da área de TI, muitos a
usam sem perceber, como é o caso daqueles que utilizam uma conta de e-mail da
Google, por exemplo. Esta tecnologia consiste na interligação de vários servidores
que fornecem aplicativos e espaço de armazenamento de dados. Portanto, neste
capítulo será abordado o conceito da computação em nuvens, seus benefícios, a sua
segurança e privacidade, os serviços oferecidos, aplicação, tipos de nuvens e, por
último, a arquitetura em nuvens.
4.1 CONCEITO
A Computação em nuvem tem objetivo de proporcionar serviços de
tecnologia da informação (TI) sob demanda com pagamento baseado no uso.
Computação em nuvem pretende ser global e prover serviços para as massas que vão
desde o usuário final que hospeda seus documentos pessoais na Internet até empresas
que terceirizam toda infraestrutura de TI para outras empresas.
De acordo com Holanda et al. ( 2009): “Nuvem computacional é um modelo
de computação em que dados, arquivos e aplicações residem em servidores físicos ou
virtuais, acessíveis por meio de uma rede em qualquer dispositivo compatível”.
Segundo Taurion (2009, p. 91):
Em um mundo onde a evolução tecnológica é constante, e a necessidade
de comunicação é grande, mas não só entre pessoas, empresas e
colaboradores, estreita a relação entre o tempo e a velocidade de
comunicação e de conexão.
A computação em nuvem possui inúmeras vantagens, uma delas é a
possibilidade de ampliar os recursos utilizados sempre que necessário.
35
Para Foster (2008, p. 20):
Cloud computing é um paradigma de computação em larga escala que
possui foco em proporcionar economia de escala, em que um conjunto
abstrato, virtualizado, dinamicamente escalável de poder de
processamento, armazenamento, plataformas e serviços são
disponibilizados sob demanda para clientes externos através da Internet.
Na computação em nuvens os nossos arquivos, aplicações e outros, ficam
gravados nos servidores da internet, assim podemos acessá-los de qualquer lugar
através de um dispositivo com acesso à internet.
Conforme Vaquero et al. (2009):
O termo computação em nuvem (do inglês cloud computing) está
associado a um novo paradigma na área de computação. Basicamente,
esse novo paradigma tende a deslocar a localização de toda a
infraestrutura computacional para a rede. Com isso, os custos de software
e principalmente de hardware podem ser consideravelmente reduzidos.
Este novo modelo de computação move todos os dados e as aplicações dos
usuários para grandes centros de armazenamento. Com isso, as aplicações e os
sistemas de hardware são distribuídos na forma de serviços baseados na Internet.
De acordo com Maximiano (2009):
A empresa Katri foi a primeira a desenvolver a tecnologia no Brasil
(2002), batizando-a de IUGU. Aplicada inicialmente no site de busca de
pessoas físicas e jurídicas (fonelista), durante o período que o mesmo
esteve no ar, de 2002 a 2008, seus usuários puderam comprovar a grande
diferença na velocidade em pesquisas proporcionadas pelo processamento
paralelo. Atualizando para 2009, a tecnologia tem evoluído muito e
sistemas funcionais desenvolvidos no início da década, já passam de sua
3ª geração, incorporando funcionalidades e utilizando de tecnologias
como Índices Invertidos (Inverted Index).
A infraestrutura do ambiente de computação em nuvem normalmente é
composta por um grande número, centenas ou milhares de máquinas físicas ou nós
físicos de baixo custo, conectadas por meio de uma rede.
De acordo com Lopes (2008):
A computação em nuvem é um termo usado para descrever um ambiente
de computação baseado em uma rede massiva de servidores,
armazenamento e processos, sejam virtuais ou físicos. Computação nas
nuvens, ou Cloud computing, hospeda as cloud applications, que são as
aplicações que estão residentes nesta nuvem (cloud). Pode ser visto,
ainda, como o estágio mais evoluído do conceito de virtualização.
Podemos notar que, a computação em nuvens tem diversos desafios a serem
solucionados, apesar de ser recente, como a segurança e a interoperabilidade, e a
36
grande quantidade de pesquisas na área admitirá que ela seja amplamente debatida
debatid
por muito tempo.
FIGURA 05 - Modelo de Computação em Nuvem (CAVALCANTI
CAVALCANTI, 2010)
Em relação à figura 05, podemos dizer que o principal objetivo da
computação em nuvem é fornecer serviços de fácil acesso, de menor custo e com
garantias de disponibilidade e escalabilidade para seus clientes.
clientes. Pretendendo assim
facilitar a vida dos usuários, fazendo que seus arquivos fiquem disponíveis em
qualquer plataforma que ele venha a usar.
Cavalcanti demonstra na figura 05 a sua infraestrutura,
infraestrutura sendo estas
compostas por varias máquinas físicas,
físicas ou seja, por vários
rios nós físicos de menor
custo, que são ligados através de uma rede computacional, interligando assim vários
servidores que fornecem aplicativos e espaço de armazenamento de dados para os
seus usuários, desde que esses usuários tenham em suas máquinas
máquinas um sistema
operacional,
ional, um navegador e acesso a internet.
i
Como cita Taurion (2009, p. 10) em sua obra:
A nuvem é um espaço de processamento e armazenamento de dados que
não depende da existência de qualquer máquina específica para existir.
São onde seus usuários armazenam arquivos, ou seja, já não são dados
únicos, pois estão dentro da nuvem, e podem ter a opção
o
de ser
compartilhados. Uma vez que está dentro da nuvem e com acesso a
internet garantida, não há a necessidade de ter o determinado arquivo em
seu computador, porque pode ser acessado de qualquer lugar, basta uma
conexão com a internet.
37
O e-mail é um dos serviços utilizados na computação em nuvens, basta
apenas acessar o provedor para poder visualizar as mensagens. O Youtube, Picasa e
Flickr, são outros tipos de serviços considerados mais populares.
FIGURA 06 - Camada conceitual de uma nuvem (VOAS; ZHANG, 2009)
Na figura 06 mostra um usuário acessando do seu computador informações
armazenadas na camada de uma nuvem. O conceito desta camada é o simples acesso
da internet, que leva o usuário buscar informações que estão armazenadas nos
servidores das empresas que disponibilizam este serviço, podendo os usuários
acessarem a qualquer tempo, a qualquer hora e de qualquer computador que tenha
acesso á internet a informação desejada, por isso o seu computador estará nas
nuvens.
Conforme Lopes (2008):
Na prática a arquitetura cloud é como se uma empresa (ou um conjunto de
empresas) disponibilizasse uma infraestrutura de computadores
interligados, verdadeiros parques computacionais, nem sempre no mesmo
local físico, cujas informações são replicadas, inter-relacionadas e
compartilhadas entre os servidores, de forma que nenhum deles fique
sobrecarregado.
Os Datacenters encontram-se na base da nuvem, sendo salas imensas
lotadas de computadores interligados, podendo funcionar como um só, tendo o seu
foco sempre para a mesma finalidade, ou divididos em grupos, cada um com um
objetivo.
Segundo Kaufman (2009, p.42):
Esse novo modelo de computação, o data center armazena informações
que os usuários tradicionalmente armazenariam em seus próprios
computadores. Além disso, esses usuários desconhecem tanto a
38
localização exata de seus dados quanto à fonte dos dados que estão
armazenados junto aos deles.
De acordo com Terry (2010):
A computação em nuvem promete mudar radicalmente a forma como as
aplicações e serviços de informática são fabricados, entregues e
gerenciados. Grandes datacenters permite a partilha de recursos através
de aplicações hospedadas e levam a economias de escala, tanto a nível de
hardware e software. Os serviços de software podem obter escalabilidade
aparentemente infinita e o crescimento incremental para atender às
demandas dos clientes. O pay-as-you-go é um modelo de
provisionamento rápido e pode resultar em uma utilização mais eficiente
dos recursos e redução de custos.
FIGURA 07 - Datacenter (SEA SERVER, 2011)
A figura 07 mostra a estrutura, que resguarda todos os sistemas de
informações de uma empresa, sendo estas informações armazenadas em servidores.
O seu objetivo é eliminar os pontos de falhas e aumentar a redundância e
confiabilidade das informações da empresa.
Conforme afirma Rydlewski (2009):
A composição da computação nas nuvens é formada por data centers, que
é o nome dado a unidade de processamento física formada pelo
aglomerado de grandes máquinas com alta capacidade de armazenamento
e processamento, semelhantes aos servidores que antes ficavam numa sala
separada, climatizada, com investimentos e atenção especial da empresa.
No data center, as máquinas são dispostas em rede e se unem para atuar
como um gigantesco processador e armazenador de dados. Os data
centers já existiam, em salas frias e incumbidos de determinadas funções,
eles eram mantidos e estruturados pelas grandes corporações como a
Microsoft, Google, Amazon, etc, e localizados em lugares estratégicos. A
fibra ótica e a evolução da internet tornaram irrelevante a localização
destes parques tecnológicos, assim como a obrigação das companhias de
mantê-los e custeá-los. Agora, com a virtualização é possível propor o uso
racional dessas máquinas e de seus recursos com total elasticidade de
demandas.
39
A virtualização é o componente responsável pela qualidade dinâmica dos
data centers. Ou seja, ela admite que os ambientes virtuais de cada usuário sejam
ampliados ou reduzidos dinamicamente, de maneira a atender aos recursos
solicitados.
De acordo com Holanda et al. (2009):
Na computação nas nuvens, os data centers provêem uma rede de
serviços que são utilizados à medida que são requeridos. A virtualização é
o componente responsável pela característica dinâmica dos data centers.
A escalabilidade está diretamente relacionada com essa característica: os
recursos são facilmente escaláveis graças a esse dinamismo.
Vamos destacar três fundamentais aspectos que são novos na computação
em nuvem, em relação aos modelos anteriores.
Conforme Armbrust et al. (2009):
•
A ilusão da disponibilidade de recursos infinitos ilimitados, o
conceito da nuvem sugere que o usuário tem em suas mãos toda a Internet
e os seus serviços;
•
A eliminação de um comprometimento com antecedência por parte
dos usuários, em uma empresa pode começar usando poucos recursos de
hardware, e, à medida que for crescendo, ou seja, à medida que for
necessário, pode ir aumentando a quantidade de recursos usados, sem que
haja um comprometimento anterior em relação a essa quantidade; a
escalabilidade é uma das características responsáveis por esse aspecto;
•
A habilidade de pagar pelo uso dos recursos à medida que eles são
utilizados, o modelo pay-per-use pode usar, por exemplo, uma métrica de
processadores por hora, ou de armazenamento por dia, para cobrar pelos
serviços; isso permite que os recursos sejam liberados caso não sejam
utilizados, evitando um consumo desnecessário.
4.2 BENEFÍCIOS DA COMPUTAÇÃO EM NUVENS
Cada vez mais a computação em nuvem vai evoluindo, trazendo assim
vários benefícios, como no caso dos chips que virão nos objetos, contendo neles
várias informações, sempre detectados pela nuvem, assim os objetos poderão
comunicar-se.
Como por exemplo, a geladeira da Samsung, que possui um chip emitindo
alertas sobre o fim do prazo de validade ou falta de produtos, sendo possível
relacionar os produtos consumidos e também agendar sua reposição, como num
estoque de uma empresa.
De acordo com Meneses e Cruz (2009):
Os benefícios para a vida casual são imensos, mas não são apenas eles
que alavancam o crescimento dessa tecnologia, pois os principais
beneficiados são as empresas que ganham velocidade no acesso e
compartilhamento de dados, e economizam milhões com a possibilidade
40
de hospedar seus arquivos na nuvem, assim não precisam gastar dinheiro
montando sua própria estrutura tecnológica, que fica defasada com o
passar do tempo, então usarão estruturas da Google e IBM.
Os benefícios da computação em nuvens são inúmeros, tanto do ponto de
vista de hardware como de software.
Elenca Meneses e Cruz (2009):
A Computação em Nuvem pode ser considerada como o próximo passo
na evolução da Internet, seu modelo
odelo de fornecimento de serviços traz
benefícios incontestáveis para qualquer modelo de empresa, benefícios
como uma economia grande quanto à questão de investimentos em
hardware e software,, e pode também proporcionar a pequenas empresas
que utilizem amplas
as capacidades informáticas, através da utilização de
serviços, que no caso de outra maneira não estaria ao alcance de muitas
empresas.
Trata-se
se de uma tecnologia que proporciona uma maneira conveniente de
acessar os serviços de computação. Ela alivia a necessidade
ecessidade de guardar informações
informaç
no seu computador, celular, etc. Fazendo que as informações possam ser rapidamente
e facilmente acessadas através da rede.
Conforme Holanda et al. (2009):
As vantagens para os usuários: Na maioria das vezes, o usuário não
precisará mais se “adaptar ao meio”. O software deve ser instalado,
configurado e posteriormente atualizado a cada novo lançamento. Os
dados podem ser acessados de qualquer computador
computado que tenha acesso à
Internet. Não é mais necessário o pagamento por uma licença definitiva
de um determinado programa, já que é viável a tarifação do uso específico
do Software. Para vendedores: Programas são desenvolvidos, testado se
executados na plataforma de escolha
colha do vendedor e não do cliente.
Atualizações e Correções de erro conseguem ser feitos em minutos,
acelerando o processo.
FIGURA 08 - Conexões em Nuvens. (MENESES e CRUZ, 2009)
A figura 08 mostra vários meios para conectar-se
conectar se na internet e adquirir
qualquer informação que esteja armazenada na nuvem, bastando apenas à conexão da
internet para essas informações serem compartilhadas.
41
4.3 SEGURANÇA E PRIVACIDADE
Podemos explanar que na maioria das vezes nas revoluções tecnológicas, o
surgimento da nuvem causa temores e apreensão, e esta ocorrência tem a ver com a
segurança e privacidade dos arquivos hospedados na nuvem. O fato é que
informações armazenadas on-line têm menos segurança do que na prática legal.
Conforme Miller e Veiga (2009, p. 12):
“A nuvem faz uso dos mesmos protocolos de segurança aplicados em
outros servidores. Antigamente os poucos dados disponíveis na nuvem
eram públicos, como sites, músicas, imagens e outros arquivo.”
Na computação em nuvem os dados continuam os mesmos, porém, perdeu
a sua liberdade de acesso, apenas os proprietários, e às vezes nem eles manipulam os
dados quando na rede, como o que ocorre com serviços do tipo Migração entre
Provedores.
De acordo com Terry (2010):
A computação em nuvens requer novas técnicas de gerenciamento de
dados compartilhado na nuvem, computação esta tolerante a falhas, a
composição de serviços, programação, medição e faturamento,
protegendo a privacidade, comunicação e, mais geralmente, a partilha de
recursos entre aplicações sob o controle de diversas organizações. A
comunidade científica está acelerando para enfrentar esses desafios, assim
como uma série de empresas de alta tecnologia. Esta coleção de
documentos destaca alguns esforços iniciais no que é certo ser uma área
produtiva de inovação para os próximos anos.
É aconselhado que antes de contratar um serviço pago de computação em
nuvem, que se pesquise a idoneidade da empresa fornecedora, e ter cuidado com as
garantias explicitas no contrato. A maior parte dos problemas de segurança que
surgem com essa nova forma de usar a internet tem origem no descumprimento do
contrato, ou na inexistência da clausula que garantiria a segurança.
De tal modo, a proteção da privacidade dos usuários e a integridade das
informações devem ser consideradas pelos prestadores de infra-estrutura e de
serviços. De maneira a criar um ambiente seguro mínimo, garantindo assim, a
confidencialidade e a integridade dos dados.
As seguintes capacidades devem ser oferecidas em uma nuvem.
•
Um esquema de criptografia, de forma a assegurar que o ambiente de
armazenamento proteja os dados;
42
•
Um controle de acesso rigoroso, de forma a prevenir o acesso não
autorizado aos dados;
•
Um sistema de gravação de cópias de segurança e um armazenamento
seguro dessas cópias.
Conforme elenca Taurion (2009, p. 79), “Essas três capacidades, contudo,
podem não ser suficientes para proteger os dados nas nuvens”. Em relação à
criptografia, surge à questão de quem fica responsável pelo gerenciamento das
chaves, por exemplo. Com isso, é necessário que novos mecanismos de proteção de
dados sejam investigados, para que a privacidade e a segurança dos usuários sejam
garantidas.
4.4 SERVIÇOS OFERECIDOS
Os serviços oferecidos são de grande variedade e inúmeros deles de forma
disfarçada, tais como o webmail, os que terceirizam a utilização de correio
eletrônico, discos virtuais, e até mesmo sites que executam tarefas predeterminadas,
gastando poder de armazenamento, processamento e consumo apenas no servidor.
A grande procura dos serviços em nuvem em empresas tornou admissível o
surgimento de mais um novo ramo da computação em nuvem, exclusivamente os
serviços de migração (Business to Business). Uma empresa que está fazendo uma
atualização em seu sistema de nuvem, ou mudando de provedor, pode contratar esse
serviço que será feito por uma empresa, que dispõe de armazenamento e segurança
para realizar essa transação, e que fará em menor tempo, pois tem conexões
dedicadas ou até mesmo diretas entre as nuvens.
Conforme Taurion (2009, p. 98):
O google, empresa que iniciou suas atividades como um catalogo de site,
sendo bem modesto na descrição, já disponibiliza um serviço que mais
demonstra o funcionamento da computação em nuvem. Destinada a
programadores e a “hard users” o google app engine, descrito na figura
9, permite criar um programa ou um site usando as tecnologias do google
code, que por enquanto aceita programação em python e java. Esse
serviço oferece gratuitamente até cinco milhões de acessos por dia,
qualquer quantidade acima disso será necessário adquirir o serviço
avançado.
43
4.5 APLICAÇÕES
Há muitas aplicações que empregam as idéias de computação em nuvem
para seu funcionamento. Abaixo, estão relacionadas as mais conhecidas e utilizadas
pela rede.
De acordo com Foster (2008, p. 32):
Google Apps (grifo nosso) é um pacote de serviços onde o google
oferece aplicativos de edição de texto, planilhas e apresentações (google
docs) serviço de agenda (google agenda), comunicador instantâneo
integrado (google talk), e-mail e outros. Todos os serviços são
gerenciados e processados pelos servidores da google e o cliente só
precisa criar as contas de usuário. O google apps oferece pacotes gratuitos
e pagos, de acordo com a quantidade de usuários.
Em resumo, a google esta aperfeiçoando constantemente as suas
ferramentas, para oferecer a melhor tecnologia aos seus usuários.
Para Amazon web service (2011):
Amazon (grifo nosso) é um dos maiores serviços de e-commerce do
mundo. Para suportar o volume de vendas no período do Natal, a empresa
montou uma superestrutura de processamento e armazenamento de dados,
que acabava ficando na maior parte do ano ociosa. Daí surgiu à idéia de
“alugar” esses recursos e surgiram os serviços como o simple storage
solution (S3), para armazenamento de dados, e o elastic compute cloud
(EC2), um serviço que permite aos usuários alugar computadores virtuais
para executar suas aplicações.
A amazon possui um conjunto de web services muito completo, "amazon
web services"(AWS), que permite checar todas as informações relativos a livros, CDs
e DVDs, bem como jogos e tudo mais que é vendido nos sites.
Segundo Dikaiakos et al. (2009, p. 61):
Live Mesh (grifo nosso) é um serviço da Microsoft [...]. Sua proposta
principal é a de permitir que o usuário acesse o seu desktop de qualquer
computador, com a diferença de que todos os seus arquivos ficam na
nuvem, isto é, nos servidores da Microsoft.
O levi mesh permite que arquivos e pastas sejam compartilhados e
sincronizados em vários dispositivos. Consiste esse em um componente, ele é o
sistema de sincronização da Microsoft.
De acordo com Foster (2008, p. 32):
Aprex (grifo nosso) é brasileiro, e oferece um conjunto de ferramentas
para uso profissional, como calendário, gerenciador de contatos, lista de
tarefas, disco virtual, blog, serviço de e-mail marketing, apresentações,
44
entre outros. Tudo é feito pela Web e, no caso de empresas, é possível até
mesmo inserir o logotipo e alterar o padrão de cores das páginas. Há
opções de contas gratuitas e pagas.
O aprex fornece um conjunto de ferramentas e serviços online destinados a
profissionais. Podendo proporcionar a opção de contas gratuitas e pagas. Os serviços
são fornecidos pelo aprex mediante acesso à world wide web, através de dispositivos
próprios do Usuário.
Segundo Dikaiakos et al. (2009, p. 61):
UniCloud (grifo nosso) é a extensão do unicluster, produto líder em
administração de sistemas HPC da empresa Univa UD (empresa privada
que vende software de gerenciamento de cloud computing, data centers e
computação de alto desempenho). Por meio do unicloud, as organizações
podem dispor e escalar recursos dentro de ambientes físicos ou
virtualizados como a amazon EC2, expandindo o recurso computacional
para suprir as necessidades em períodos de pico. O unicloud também é
flexível e opera sob demanda para satisfazer as necessidades de HPC da
empresa com um menor custo.
O unicloud admitiu que as organizações estabelecessem diretrizes de horas
de funcionamento e requisitos de modo dinâmico no setup das máquinas virtuais
dentro do ambiente do EC2. Sendo esse flexível, sob demanda para satisfazer a
necessidade de HPC, reduzindo os custos.
4.6 TIPOS DE NUVENS
As nuvens podem ser classificadas de 04 (quatro) formas básicas, sendo
elas: privada, comunitárias, híbrida e públicas. Elas devem ser escolhidas de acordo
com a necessidade do usuário. A seguir, iremos transcrever a utilidade de cada uma
dessas formas.
Segundo Chirigati (2009):
As nuvens privadas são aquelas construídas exclusivamente para um
único usuário (uma empresa, por exemplo). Diferentemente de um data
center privado virtual, a infra-estrutura utilizada pertence ao usuário, e,
portanto, ele possui total controle sobre como as aplicações são
implementadas na nuvem. Uma nuvem privada é, em geral, construída
sobre um data center privado.
Se o usuário quiser aumentar os recursos utilizados em sua nuvem privada,
terá que adquirir novos equipamentos. As nuvens privadas são aplicáveis para
45
aquelas áreas que exigem níveis específicos de qualidade de serviço e de localização
dos dados.
De acordo Tujal (2010, p.70):
As nuvens comunitárias são a infraestrutura de nuvem sendo esta
compartilhada por diversas organizações e suporta uma comunidade
determinada com preocupações em comum (por exemplo, considerações
sobre compatibilidade, requisitos de segurança, política e finalidade).
Porém, as nuvens comunitárias são compartilhadas por diversas empresas de
uma nuvem, sendo divididos seus interesses. Essas nuvens podem existir local ou
remotamente e, em geral, são administrados por alguma empresa da comunidade ou
por terceiros.
Conforme Souza et al. (2009):
A nuvem hibrida: No modelo de implantação híbrido, existe uma
composição de duas ou mais nuvens, que podem ser privadas,
comunidade ou pública e que permanecem como entidades únicas e
ligadas por uma tecnologia padronizada ou proprietária que permite a
portabilidade de dados e aplicações.
Desta forma, podemos dizer que as nuvens híbridas introduzem a
complexidade de determinar a maneira como as aplicações são distribuídas entre
nuvens públicas e privadas.
Para Taurion (2009, p. 107):
As nuvens públicas são aquelas que são executadas por terceiros. As
aplicações de diversos usuários ficam misturadas nos sistemas de
armazenamento, o que pode parecer ineficiente a princípio. Porém, se a
implementação de uma nuvem pública considera questões fundamentais,
como desempenho e segurança, a existência de outras aplicações sendo
executadas na mesma nuvem permanece transparente tanto para os
prestadores de serviços como para os usuários.
As nuvens públicas têm um grande benefício em relação à nuvem privada, o
poder de ser maior do que uma nuvem privada. Além disso, a possibilidade de
destinar uma determinada porções da nuvem pública para o uso exclusivo de um
único usuário, permitindo que este usuário tenha uma expansão de visibilidade de
toda a infraestrutura, instituindo assim o chamado data center privado virtual.
46
4.7 ARQUITETURA EM NUVENS
A arquitetura de nuvem é responsável pela identificação dos componentes
fundamentais para seus sistemas, indicando as várias interações destes componentes
entre si e especificando o propósito e a função destes componentes.
De acordo com Tujal (2010, p. 88):
Esta arquitetura é ponto de partida para trabalhar o ciclo de vida da
tecnologia de nuvens computacionais. Juntas, tecnologia e arquitetura
podem representar o que comumente se denomina middleware de nuvem,
visto sob a ótica dos serviços necessários para suportar um conjunto de
aplicações num ambiente de rede distribuído.
Arquitetura em nuvem não é apenas um conjunto de servidores interligados.
Conforme Tujal, ela é o ponto de partida para trabalhar a tecnologia das nuvens,
portanto sua infraestrutura requer um grande gerenciamento de dados.
Para Taurion (2009, p. 140):
A natureza da arquitetura de cloud pode ser definida como orientada a
protocolos, os quais governam a interação entre componentes, e não suas
implementações. Do mesmo modo que o advento da web revolucionou a
forma de se compartilhar informações através de uma sintaxe e protocolos
universais (HTTP e HTML), nuvens também necessitam de padrões de
sintaxe e protocolos para poderem funcionar em consonância com os
preceitos de orientação a serviços, promovendo compartilhamentos entre
organizações virtuais, além de se observar os rumos que estão sendo
consolidados sob a égide da Green IT, ou TI verde.
Num ambiente em rede, a adoção de protocolos comuns possibilita a
interoperabilidade, a qual representa o principal aspecto a ser abordado. São de
extrema importância as organizações virtuais em computação em nuvem,
comportando participantes novos dinamicamente, suportando diversas plataformas,
linguagens e ambientes de desenvolvimento.
Afirma Tujal (2010, p. 89):
Complementando o aspecto dos protocolos, destacam-se também as
application programming interfaces (APIs) e os softwar e development
kits (SDKs). Outra orientação importante para a arquitetura de cloud
consiste nos serviços. Deste modo, estabelece-se aqui que um serviço se
encontra definido em função do protocolo que ele usa para se comunicar e
do comportamento que ele implementa.
47
De acordo com Foster (2008, p. 71): “a arquitetura não define os protocolos
a serem usados ou serviços, mas identifica os requisitos para classes de
componentes”.
A figura 10 mostra as camadas de arquitetura da nuvem e seu mapeamento
com o modelo de camadas TCP/IP.
FIGURA 09 - Arquitetura de cloud (FOSTER, 2008)
Passamos agora a transcrever cada camada de arquitetura de cloud conforme
sugere a figura 09:
Conforme Costa (2009, p.04):
Aplicação camada que compreende as aplicações de usuário que
executam num ambiente de organizações virtuais. Estas aplicações em
termos de serviços de quaisquer camadas, assim como também podem
chamar serviços definidos em quaisquer camadas.
Conforme Tujal (2010, p. 90) “Enquanto a camada de recurso tem enfoque
em interações relacionadas a um único recurso, a camada coletiva contém protocolos,
serviços, APIs e SDKs de natureza global e que apreendem interações entre coleções
de recursos”.
Segundo Costa (2009, p. 04):
A camada do recurso se baseia nos protocolos de comunicação e
autenticação para definir protocolos, APIs e SDKs para oferecer formas
seguras de negociar, inicializar, monitorar e controlar as operações
compartilhadas em cada recurso. As implementações dos protocolos da
camada recurso executam funções da camada de tecido para acessar e
controlar os recursos locais.
Ocorrem na conectividade os protocolos de comunicação e autenticação
fundamentais para transações de rede específicas de nuvens. Sendo supridos pelos
48
protocolos da pilha o transporte, roteamento e resolução de nomes, sendo
considerados estes requisitos essenciais para conectividade.
Soluções
de
autenticação
para
organizações
virtuais
devem
ter
características como o single sign on (SSO – que é definido como um único ponto de
entrada, ou seja, um usuário apenas necessita se autenticar uma única vez),
delegação, integração com varias soluções de segurança local e relacionamentos de
confiança baseados em usuários.
Segundo Tujal (2010, p. 90), “o tecido é a camada que fornece recursos para
a mediação do acesso compartilhado pelos protocolos do cloud”. Os componentes da
camada tecido praticam as operações locais específicas de recurso, obtendo o nível
mais alto da pilha da camada. É através de pesquisas que permitem a descoberta de
sua estrutura, estado e capacidades (tais como recursos computacionais, recursos de
armazenamento, recursos de rede, repositórios de código e catálogos) e mecanismos
que provêem o controle da qualidade de serviço.
A seguir, veremos três das principais ferramentas que permitem que o
modelo em nuvem seja possível. O MapReduce, Hadoop e Sharding fazem com que
grandes volumes de dados sejam processados, replicados, divididos e sincronizados
geograficamente espalhados por data centers sem perder o desempenho e garantindo
a sua disponibilidade com um custo reduzido.
4.7.1 MapReduce
MapReduce é um algoritmo patenteado pelo google, que fornece apoio a
computação distribuída para grandes quantidades de dados em clusters. É útil para
operação de agregação e para processamento em lote de dados. Ele representa o que
em SQL seria a operação de GROUP BY.
MapReduce segundo Taurion (2009, p. 101), “é um modelo de programação
e framework introduzido pelo google para suportar computações paralelas em
grandes coleções de dados em clusters de computadores”.
Sendo visto como um novo modelo computacional distribuído, inspirado
pelas funções map e reduce, usadas comumente em programação funcional.
MapReduce é um “data-oriented” que processa dados em duas frases primárias: Map
e Reduce.
49
A sua filosofia por trás do MapReduce, é diversa de data-stores centrais,
como um banco de dados, não pode ser admitido que todos os dados residem em um
lugar central, portanto, não pode executar uma query e esperar obter os resultados em
uma operação síncrona.
De acordo com Almeida (2009):
Neste caso, precisa executar a query em cada fonte de dados
simultaneamente. O processo de mapear a requisição do originador para o
data source é chamado de ‘Map’, e o processo de agregação do resultado
em um resultado consolidado é chamado de ‘Reduce’.
A função Map é aplicada em paralelo a cada item do conjunto de dados de
entrada. Isso produz uma lista de pares para cada chamada. Depois disso, o sistema
MapReduce recolhe todos os pares com a mesma chave de todas as listas e os agrupa,
criando assim um grupo para cada uma das diferentes chaves geradas.
A função Reduce é então aplicada em paralelo com cada grupo, que por sua
vez, produz uma coleção de valores no mesmo domínio, fazendo assim um grupo de
informações relevantes.
Hoje, existem diversas implementações de MapReduce, como: Hadoop,
Disco, Skynet, FileMap e Greenplum. Conforme Almeida (2009), Hadoop é a
implementação mais famosa em Java como um projeto open source.
4.7.2 Hadoop
Hadoop é um framework desenvolvido em Java para auxiliar na
computação distribuída voltada para clusters e processamento de grandes massas de
dados. Foi construído com base no sistema de gerenciamento do google (GoogleFS)
e no modelo de MapReduce. É um projeto de alto nível desenvolvido e mantido pela
apache fondation e diversas comunidades virtuais e principalmente o Yahoo.
Conforme Ferreira (2010):
Um exemplo de aplicação são as operadoras de telefonia, pois sabem que
muitas vezes um único usuário que resolve mudar de operadora acaba
levando com ele muitos outros. Analisar os padrões de interações entre
seus usuários e detectar quem são os que têm mais chances de mudar de
operadora é uma grande ferramenta estratégica.
O principal objetivo de Hadoop é a análises de grandes quantidades de
dados, onde podem ser feitas decisões mais precisas e bem elaboradas em bancos de
50
dados como de redes sociais e/ou instituições financeiras, que movimentam
diariamente milhões de bits de informação, e com necessidades em tempo real para
decisões estratégicas.
O Hadoop, conforme Breitman e Viterbo (2010, p. 27), [...] ele se propõe a
resolver problemas de escalabilidade das aplicações, possibilitando o processamento
de grandes volumes de dados, da ordem de grandeza de petabytes.
Hadoop também tem sido fortemente utilizado para marketing virtual, onde
é possível traçar um perfil melhor do usuário a partir da análise de dados de
pesquisas, emails, visitas eletrônicas, etc.
Ele também promete resolver problemas como no caso de encontrar fraudes,
onde podemos processar quantidades gigantes de dados e perceber tendências
imperceptíveis em escala menor.
4.7.3 Sharding
Sharding em banco de dados é um sistema de particionamento horizontal do
banco, onde cada partição individual é referida como um estilhaço ou fragmento de
banco de dados.
Sharding conforme Taurion (2009, p. 101):
É um termo relacionado à shared nothing, que consiste em dividir os
dados horizontalmente, ou seja, quebrar as tabelas, diminuindo o seu
número de linhas e separando-as em ambientes diferentes (em outros
servidores, por exemplo,”.
O particionamento horizontal é um princípio onde as linhas de uma tabela
do banco de dados são divididas na horizontal, ao invés de dividir por colunas (como
acontece na normalização de banco de dados). Cada partição faz parte de um
fragmento, que por sua vez, pode estar localizado em um servidor de banco de dados
separado em servidores virtuais, ou mesmo em localização física diferente, em
servidores espelhados geograficamente.
Neste ponto todos os dados de uma partição não devem conter referências
aos dados de outras partições, sendo que os dados em comum deverão ser replicados
entre as bases.
51
De acordo com Code futures (2010):
Sharding banco de dados pode ser simplesmente definido como um
"shared-nothing" esquema de particionamento para grandes bases de
dados através de um número de servidores, possibilitando novos níveis de
desempenho e escalabilidade do banco de dados alcançável. Se
pensarmos em vidro quebrado, podemos obter o conceito de sharding quebrando o banco de dados em pedaços menores chamados "cacos" e
divulgar os através de um número de servidores distribuídos.
Contudo, podemos dizer que Sharding tem uma enorme escalabilidade,
além do amplo desempenho no banco de dados central.
Existem várias vantagens para utilizar este tipo de particionamento. O
número total de linhas em cada tabela é reduzido, isso reduz o índice,
e
conseqüentemente tamanho das tabelas, que geralmente melhora o desempenho da
pesquisa.
52
5 BANCO DE DADOS NAS NUVENS
Este capítulo versa o tema central do trabalho, no qual será exposto o
conceito de banco de dados nas Nuvens, os seus modelos de dados baseado em
serviços, as suas limitações, consultas, seguranças, os modelos de Arquitetura
utilizada em banco de dados em nuvens e uma ênfase sobre os SGDBs.
5.2 CONCEITO
Os principais atrativos dessa nova tendência de banco de dados como
serviço estão na economia nos custos de hardware software e manutenção de
servidores e aplicativos, quando se contrata um host. Este fornecerá espaço e
infraestrutura de poderosos data centers, com os custos calculados proporcional à
utilização , isto se aplica tanto de licenciamento de software e custos administrativos.
Segundo Barros (2010):
A computação na nuvem pode ser definida como um modelo para
permitir acesso conveniente, sob demanda da rede para um conjunto
compartilhado de recursos de computação configurável (por exemplo,
redes, servidores, armazenamento, aplicações e serviços) que podem ser
rapidamente provisionados e lançados com o mínimo de gestão, esforço
ou a interação do prestador de serviços.
Sistemas gerenciadores de banco de dados (SGBD) é um item indispensável
como componente geral em ambientes computacionais atualmente, e é pouco
provável diminuir sua importância ou uso.
Então podemos dizer que, computação em nuvem é um modelo pay-per-use
para que permiteir o acesso à rede sob demanda para um conjunto compartilhado de
configurável recursos de computação (redes, servidores, armazenamento, aplicações,
serviços), que podem ser rapidamente configurados e liberados com a gestão do
esforço mínimo ou de interação prestador de serviços.
Conforme Barbieri (2010):
Uma nova forma de armazenamento de dados se estabeleceu nas Nuvens.
Nuvem, aqui, bem explicado, é a cloud, conceito maior com que se
denomina a grande Internet, composta de milhões de usuários e de
máquinas, e que tem uma conformação tão mutável e dinâmica, como a
própria. Os grandes usuários desse ambiente são aquelas empresas que
tem "negócio" centrado na manipulação de grandes volumes de dados
(marca dos penta e exabytes), como Google, Amazon, Facebook, Twitter
e etc.
53
As grandes empresas espalham através da internet aplicações e serviços,
para que todos tenham acesso, direcionando sempre seus esforços e tecnologia para
cloud computing.
5.2 MODELO DE DADOS BASEADO EM SERVIÇOS
De acordo com Taurion (2009, p. 129):
Bancos de dados são essenciais a qualquer negócio [...]. Não é comum
vermos centenas de empresas com diferentes tipos de bancos de dados, a
maioria críticos nas operações, suportado por diversos softwares de
gerenciamento de banco de dados, os SGBD.
Surge então o modelo database-as-a-service (DaaS), provendo banco de
dados por demanda. Com o DaaS, uma empresa usa uma nuvem para armazenar e
acessar informações sem se preocupar com a infraestrutura que vai suportar os
bancos de dados.
Conforme Taurion (2009, p. 129):
Neste modelo o usuário paga pelo volume de dados armazenado e pela
quantidade de dados transmitidos de e para a nuvem. Os custos de
infraestrutura e suporte ficam a cargo do provedor da nuvem que mantém
o DaaS.
Os atrativos do modelo DaaS são principalmente, a redução de custos
quando comparado ao modelo tradicional e elasticidade dos recursos.
O modelo DaaS pode ser implementado por três arquiteturas básicas: os
modelos de container, modelos de cópia compartilhada e modelo de cópia exclusiva.
•
Modelo container, no qual o provedor fornece um container que
representa uma coleção de entidades heterogêneas, da mesma maneira
que um banco de dados possui múltiplas tabelas. Os programas
acessam as entidades nos container.
•
Modelo cópia compartilhada, modelo de uma mesma cópia do banco
de dados residente na nuvem é compartilhada por vários clientes,
embora cada um possua seu próprio espaço de dados. O
compartilhamento é do software de banco de da infraestrutura apenas.
54
•
Modelo de cópia exclusiva, cada cliente tem sua própria cópia na
nuvem do software de banco, apenas compartilham a mesma
infraestrutura.
É de suma importância que a escolha do provedor de serviços seja feita de
forma adequada e consciente. Durante o processo de seleção deve-se verificar em
amplitude dos serviços oferecidos, solidez financeira do provedor, presença
geográfica, expertise e suporte técnico na tecnologia específica do banco de dados,
referências de clientes e oferta de serviços de nuvens adicionais.
De acordo com Alecrim (2010):
Database-as-a-service (DaaS): O nome já deixa claro que esta
modalidade é direcionada ao fornecimento de serviços para
armazenamento e acesso de volumes de dados. A vantagem aqui é que o
detentor da aplicação conta com maior flexibilidade para expandir o
banco de dados, compartilhar as informações com outros sistemas,
facilitar o acesso remoto por usuários autorizados, entre outros.
O modelo DaaS ainda se encontra com os seus serviços em nuvem nos
estágios iniciais de sua adoção. Provavelmente nos próximos anos veremos uma
evolução significativa, tanto em seus modelos de negócios, como na evolução de sua
tecnologia.
Conforme Tujal (2010, p, 78):
O padrão banco de dados como um serviço fornece a capacidade de alocar
serviços de um banco de dados hospedado remotamente, entregando-os
logicamente, em termos de desempenho e funcionalidades, como se o
banco fosse local.
Os principais serviços oferecidos no modelo DaaS é a capacidade de
flexibilidade e escalabilidade.
Para Holanda et al. (2009):
O modelo database-as-a-service (DaaS) oferece flexibilidade e
escalabilidade que uma empresa de pequeno ou médio-porte não são
capazes de bancar. Não há risco de que o serviço se torne atrasado.
Eliminam a necessidade de qualquer investimento de capital em
infraestrutura.
Existe tanto a possibilidade de se criar ambientes de testes, quanto à de
economizar ao armazenar dados poucos utilizados.
Conforme Holanda et al. (2009):
Oferecendo também flexibilidade para desenvolvimento e teste, sem ter que
esperar por dias ou semanas para ter o ambiente disponibilizado. Podemos
dizer que 20% dos dados das empresas são realmente ativos, o restante são
acessados com pouca ou nenhuma freqüência. Custo menor do que fosse
55
mantidos nos discos da empresa. Uso para backup devido ao custo do
armazenamento.
No database-as-a-service, existem dois modelos de cópias, o modelo de
cópia compartilhada e o modelo de cópia exclusiva.
Para Taurion (2009, p. 132), “No modelo de cópia compartilhada: uma
própria cópia residente na nuvem é compartilhada por diversos clientes, apesar de
cada uma possuir seu próprio espaço de dados (tabelas)”.
Já no modelo de cópia exclusiva cada cliente tem sua própria cópia do
software de banco de dados.
5.3 LIMITAÇÕES DO MODELO DAAS
De acordo com Taurion (2009, p. 132): as três principais limitações são:
1) A sobrecarga da largura de banda de internet entre o servidor e
clientes;
2) O risco de sobrecarregar pelos clientes com alto processamento de
consultas;
3) Limitações no lado dos hosts em oferecer recursos administrativos para
os operadores de banco de dados.
Isto decorre porque o servidor ainda não é capaz de executar consultas e
cruzamento de dados complexos, devido a esses dados serem criptografados em sua
maioria nos bancos de dados em nuvem, que por sua vez resulta em um conjunto de
dados criptografados, que são enviados para o cliente, que conseqüentemente detêm
a chave para concluir a consulta desejada.
A transmissão dos resultados é de grande sobrecarga na comunicação entre
o servidor e o cliente, exigindo uma larga banda de rede. Os tipos de consultas que
podem ser executados no servidor sobre os dados criptografados são limitadas a
lógica, o que reduz muito a utilidade do servidor no processamento da consulta.
Especificamente, como a reunião de dados e correspondência não é
suportada na íntegra, isso acaba resultando em um trabalho maior na carga dos
clientes. Isso pode ser aceitável se o cliente estiver usando o seu desktop ou laptop
com uma velocidade alta de conexão de rede e internet, mas no caso do cliente tiver
um dispositivo fraco, como um telefone celular ou PDA, a energia da bateria e
recursos computacionais são limitados.
56
Taurion (2009, p. 132) diz que:
“[...]este modelo está como a maioria dos serviços em nuvens, nos
estágios iniciais de sua adoção. Provavelmente nos próximos anos
veremos uma evolução significativa tanto em seus negócios quanto em
sua tecnologia”.
5.4 CONSULTAS
As consultas podem trazer muitas diferenças do modelo atual
utilizado, onde as querys são executadas na forma SQL, e de forma aberta, sem que
haja criptografia, com várias possibilidades de junção e funções para agrupar dados
de variadas tabelas.
Em sua maioria, os bancos de dados voltados para nuvem são de padrão
NoSQL (pós-relacional), onde formas de consulta dependem de API que são
comandos prontos para pesquisas de dados, eles não aceitam funções de junção
agrupação, de outra forma trazem mais segurança ao usuário, pois criptografa suas
consultas e seus resultados, e somente o detentor dos dados pode decodificá-los.
Conforme Mykletun et. al (2006, p. 89), “As consultas possibilitam ter
diferentes perspectivas sobre os dados e a selecionar e editar a informação que
satisfaz determinados critérios”. A disposição da informação dada por uma tabela,
não é a forma mais conveniente quando o objetivo é analisar dados.
A estrutura das cunsultas dependem muito da forma de armazenar do
SGDB, onde temos também tabelas que são chamadas de column-families. Como o
nome indica um column-family são várias colunas agrupadas entre si. As quais são
essas colunas que a aplicação define.
Cada coluna salva um valor, e o grupo de colunas dentro de uma familia é
acessível através de uma chave (row-key). O esquema fica assim:
1. columnFamily – parecido com uma tabela (tabela de colunas)
2. rowKey – ID do grupo de colunas
3. column – nome da coluna
4. value – valor a salvar
De acordo com Date (2004, p. 43), “Os atributos são criptografados com o
sistema chamado cryptosys, a qual somente o cliente sabe uma chave de decifração, e
quando confirmada essa chave, a base de dados resultante é transmitida”.
57
5.5 SEGURANÇA
A segurança dos resultados de um dispositivo é equipado com uma
multitude de sensores capazes de detectar vários ataques. No
caso em que a
penetração do dispositivo é detectada através da sinalização por meio de sensores,
esses são monitoramentos possíveis, se um alarme dispara todo o conteúdo de
memória é apagado, destruindo o chip de memória física através de um vazamento
de ácido.
Além de suas características de segurança, os serviços podem ser equipados
com suporte de criptografia de hardware, hash e geração aleatória de números.
Armazenando chaves criptográficas e outros dados confidenciais dentro de uma
memória e usá-lo como encriptação de decodificação. Essas Soluções já foram
propostas no âmbito da rede segura de servidores em que o objetivo é aumentar o
nível de confiança depositada no Servidor.
Conforme Date (2004, p. 30):
A IBM 4758 sc, que é o primeiro de seu tipo, é equipado com processador
de 99 mhz e 2 mb de memória, placa de memória on-board, embora o
avanço tecnológico realizados desde sua introdução espera para continuar.
Uma vez que o sc é uma unidade programável, é possível fornece para um
locomotor de execução da consulta.
Questões de segurança devem ser consideradas para prover a autenticidade,
confidencialidade e integridade.
Segundo Hacigumus (2002, p.28):
Uma vez que a criptografia de dados, é utilizada como uma solução para
o problema de privacidade de dados. Umas das coisas mais importantes
deles é garantir a integridade dos dados dos usuários. A integridade dos
dados pode ser comprometida , quando isto acontece, o cliente não tem
nenhum mecanismo para detectar a integridade dos dados originais.
Assim, novas tecnicas tem que ser desenvolvidas para fornecer mais
seguraças para os clientes.
Outra questão a abordar no âmbito das bases de dados criptografadas é o
gerenciamento de chaves. Todas as técnicas de criptografia dependem de segura e
eficiente arquitetura de gerenciamento de chaves. O modelo DaaS coloca mais
complexidade na arquitetura de gerenciamento de chaves. Geração, armazenamento,
registro e atualização de chaves de encriptação são funções essenciais que têm de ser
tratadas de forma eficiente no modelo de DAS.
58
Conforme Holanda et al. (2009):
Recentemente foi criada uma associação chamada cloud security alliance,
o qual produziu o relatório security guidance for critical areas of focus in
cloud computing (versão v2. 1). Este relatório é um work-in-progress,
pois cloud computing ainda é um conceito e um modelo computacional
em evolução. Começa ele com um nivelamento dos aspectos conceituais
da computação em nuvem, seus modelos de serviço (infrastruture-as-aservice, platform-as-a-service e software-as-a-service) e de entrega
(public ou private clouds). A partir daí descreve os aspectos críticos que
se relacionam com segurança, divididos basicamente em dois domínios: o
domínio da governança (incluindo fatores como riscos, compliance,
auditoria, interoperabilidade entre nuvens e assim por diante) e
operacional, que inclui variáveis como operação do data center em
cloud,continuidade do negócio, gerenciamento de identidades de acesso,
virtualização, etc .
FIGURA 10 - Processo de Consulta criptografado (Traduzido de HOLANDA, 2008)
Podemos utilizar técnicas de criptografia para garantir a privacidade dos
dados. Entretanto, estas técnicas têm implicações significativas de desempenho de
consultas em SGBDs.
Portanto, alternativas para a integração de técnicas de criptografia com
SGBDs devem ser investigadas e desenvolvidas, já que a complexidade
computacional da criptografia de dados aumenta o tempo de resposta da consulta.
59
5.6 ARQUITETURAS UTILIZADAS EM BANCO DE
DADOS EM NUVENS
Existem dois modelos de arquitetura, que são compatíveis para banco de
dados em nuvens, iremos fazer uma comparação entre os dois modelos e avaliar qual
será o ideal para sua utilização.
Os dois modelos são: disco de arquitetura de banco de dados compartilhado
e disco de arquitetura de banco de dados não compartilhado.
Segundo Taurion (2009, p. 123):
A arquitetura de banco de dados chamado de disco compartilhado, o que
elimina a necessidade de dados de partição, é ideal para banco de dados
em nuvem. As Bases de dados de disco compartilhado permitir clusters
de servidores de baixo custo para usar uma coleção única de dados,
geralmente servidos por uma Storage Área Network (SAN) e Network
Attached Storage (NAS).
Todos os dados estão disponíveis para todos os servidores e não há
separação dos dados. De acordo com Date (2004, p. 32), “Como resultado, se
estivermos usando dois servidores, e sua consulta leva 0,5 segundo, podendo
adicionar dinamicamente outro servidor e que a mesma consulta pode agora ter 0,35
segundo”. Em outras palavras, bancos de dados de disco partilhado suportam a
escalabilidade elástica.
A arquitetura de disco compartilhado DBMS tem outras importantes
vantagens, além de escalabilidade elástica que o tornam muito atraente para a
implantação na nuvem.
Nessa arquitetura são necessários menos servidores, as bases de dados não
compartilhados quebram os dados em partes distintas e não são suficientes para ter
um único servidor para cada conjunto de dados, precisando de um backup no caso de
o primeiro falhar. Por isso é chamado de escravo de configuração mestre. Em outras
palavras, deve duplicar sua infraestrutura de servidor. Já o disco de arquitetura de
banco de dados compartilhados é uma configuração mestre, de modo que cada nó
fornece fail-over para os outros nós. Isso reduz consideravelmente o número de
servidores necessários para metade quando se usa disco compartilhado.
Para Dikaiakos et al. (2009):
Servidores de custo mais baixo (prolongar a vida dos seus servidores
atuais) Em um banco de dados não compartilhado, cada servidor deve ser
executado em baixa utilização da CPU, a fim de ser capaz de acomodar
60
picos de uso para esse servidor de dados. Isso significa comparar grandes
(caro) servidores para lidar com os picos. Por outro lado, espalha esses
picos de uso em todo o cluster. Como resultado, cada sistema pode ser
executado em uma Maior utilização da CPU. Isto significa que com um
banco de dados no disco compartilhado pode comprar de baixo custo ao
invés de pagar um prêmio grande para computadores high-end. Isto
também se estende a tempo de vida dos servidores existentes, uma vez
que eles não precisam oferecer um desempenho de ponta.
A escala em modelo permite que os provedores de cloud computing
aloquem e cobrem os clientes com base na forma como muitas instâncias de um
banco de dados estão sendo executado em uma máquina multi-core. Essa escala
permite lançar uma instância do MySQL por núcleo de CPU.
A manutenção simplificada ou o processo de atualização, nos servidores que
fazem parte de um banco de dados em disco, pode ser compartilhado
individualmente, enquanto o cluster permanece online. Seletivamente, pode torná-los
fora de serviço, atualizá-los e recolocá-los no serviço, enquanto os outros continuar a
funcionar. Não podendo fazer isso com um banco de dados compartilhado, porque
cada nó individual é dono de uma parte específica de dados.
A alta disponibilidade em um banco de dados de disco compartilhados é
completamente intercambiável, podendo perder nós e degradar o seu desempenho,
mas o sistema continua operando. Banco de dados de um servidor perde o sistema se
for desligado manualmente até que promova um escravo para o papel principal. De
acordo com Foster (2008, p. 85):
A redução de particionamento e serviços tuning é uma das vantagens, os
dados devem ser particionado. Embora seja bastante simples para dividir
os dados entre servidores, pensativo dos dados para minimizar o tráfego
entre os nós do cluster, também conhecida como função ou data shipping,
que é o envio de dados, requer uma grande quantidade de análises em
andamento e afinação. Tentar fazer isso em um cluster compartilhado
nada estático é um desafio significativo, mas tentar fazê-lo com um
escalar dinamicamente database cluster de banco de dados é uma tarefa
Sysiphian.
Redução de custos de suporte é outra das vantagens das bases de dados em
nuvem. Mudam muito de baixo nível DBA com especialistas que estão a gerir as
bases de dados de forma centralizada para todos os usuários. No entanto, ajustar um
banco de dados nada compartilhado requer a participação coordenada de ambos os
DBA e o programador da aplicação. Isso aumenta significativamente os custos de
suporte. Diferente do disco compartilhado de banco de dados que de forma limpa
61
separa as funções do DBA e os desenvolvedores do aplicativo, sendo assim o modelo
ideal para bases de dados em nuvem.
Bases de dados de disco compartilhados fornecem igual balanceamento de
carga, reduzindo ainda mais os custos de suporte em uma nuvem ambiente. Tornando
assim o disco de arquitetura de banco de dados compartilhado o ideal para a
computação em nuvem.
A arquitetura de disco compartilhado requer menos servidores e menores
custos, oferecendo alta disponibilidade, reduzindo os custos de manutenção,
eliminando a partição, e oferecendo escalabilidade dinâmica. Sendo essa responsável
para identificar os componentes fundamentais dos sistemas; indicar as várias
interações destes componentes entre si e especificar o propósito e a função desses
componentes.
De acordo com Tujal (2010, p. 88):
Esta arquitetura é ponto de partida para da tecnologia de nuvens
computacionais. Juntas, tecnologia e arquitetura podem representar o que
comumente se denomina middleware de nuvem, visto sob a ótica dos
serviços necessários para suportar um conjunto de aplicações num
ambiente de rede distribuído.
Num ambiente em rede, a adoção de protocolos comuns possibilita a
interoperabilidade, a qual representa o principal aspecto a ser abordado.
Conforme Breitman e Viterbo (2009, p. 38):
Interoperar torna-se essencial para a constituição das OVs (organizações
virtuais) em cloud computing, dada a natureza fluida e dinâmica das
relações entre partes quaisquer, comportando participantes novos
dinamicamente, suportando diversas plataformas, linguagens e ambientes
de desenvolvimento.
A Arquitetura em nuvem é muito mais que apenas um conjunto (embora
massivo) de servidores interligados. É uma metáfora para a internet ou infraestrutura
de comunicação entre os componentes arquiteturais, baseada em uma abstração que
oculta à complexidade da infraestrutura.
Afirma Tujal (2010, p. 89):
Complementando o aspecto dos protocolos, destacam-se também as
application programming interfaces (APIs) e os softwar e development
kits (SDKs). Outra orientação importante para a arquitetura de cloud
consiste nos serviços. Deste modo, estabelece-se aqui que um serviço se
encontra definido em função do protocolo que ele usa para se comunicar e
do comportamento que ele implementa.
62
5.7 SISTEMAS GERENCIADORES DE BANCO DE
DADOS PARA NUVENS
Os SGDBs para nuvem são extremamente escaláveis, em sua maioria o
acesso é via browser pela internet, podem ser escritos em várias linguagens, como
Java, Ruby, C, e diversas outras.
De acordo com Foster (2008, p.86), “Os SGBDs fornecem uma interface
extremamente atraente para gerenciar e acessar dados, e tem provado ser um grande
sucesso em muitos negócios financeiros e aplicações da Internet”. No entanto, eles
têm várias limitações:
•
Sistemas de banco de dados são difíceis de dimensionar, a maioria dos
seus sistemas tem limites rígidos.
•
Sistemas de banco de dados são difíceis de configurar e manter os
custos administrativos e facilmente representam uma fração significativa do custo
total de propriedade de um sistema de banco de dados. Além disso, é extremamente
difícil para os profissionais sem formação obter um bom desempenho fora da maioria
dos sistemas comerciais;
•
Diversificação dos sistemas disponíveis dificulta a seleção tendo o
aumento dos sistemas de banco de dados especializado para mercados específicos
(sistemas de memória principal para OLTP ou colunas lojas para OLAP); complica a
seleção do sistema, especialmente para os clientes cujos volumes de trabalho não irão
cair perfeitamente em uma categoria;
•
Pico provisionamento leva a custos desnecessários as cargas de banco
de dados que estão sempre em rajadas na natureza e, portanto, de provisionamento
para o pico, geralmente resultando em um excesso de recursos durante as fases de
pico-off e custos desnecessários.
A seguir, destacaremos alguns Sistemas Gerenciadores de banco de dados
para Nuvens e apresentaremos uma análise comparativa dos seguintes sistemas:
Microsoft SQL Azure, BigTable, Cassandra, SimpleDB, Relational Cloud e
CouchDB
63
5.7.1 Microsoft SQL Azure
De acordo com Moura (2010):
A Microsoft Windows Azure é uma plataforma para serviços na nuvem
que é utilizado para o desenvolvimento, o armazenamento e o
gerenciamento dos serviços dentro do ambiente da plataforma Azure. A
plataforma é flexível e pode ser utilizada para construir novas aplicações
para rodar na nuvem ou para melhorar programas já existentes. A
arquitetura aberta permite que os desenvolvedores tenham a opção de
construir aplicações na web, conectar aparelhos, PCs, servidores ou
soluções híbridas.
Segundo Taurion (2009, p. 101), “O SQL Azure database é o serviço de
banco de dados na nuvem da Microsoft. Ele oferece funcionalidade de banco de
dados voltadas para a web como um serviço utilitário”. As soluções de banco de
dados baseadas na nuvem como o SQL Azure podem proporcionar muitos benefícios,
incluindo o provisionamento rápido, a escalabilidade eficaz e econômica, a alta
disponibilidade e a redução da sobrecarga de gerenciamento.
Conforme
mencionado
anteriormente,
são
muitos
os
benefícios
proporcionados pelo uso do SQL Azure. Eles incluem capacidade de gerenciamento,
alta disponibilidade, escalabilidade, modelo de desenvolvimento familiar e modelo
de dados relacional.
Vamos passar a analisar cada um dos seus benefícios.
Para Curino (2010, p. 230):
O autogerenciamento do SQL Azure onde oferece uma grande escala e a
funcionalidade de um data center corporativo sem a sobrecarga
administrativa associada às instâncias locais do SQL Server. Essa
capacidade de autogerenciamento permite que a organização provisione
serviços de dados para aplicações de toda a empresa sem aumentar a
carga de suporte do departamento de TI central ou tirar os funcionários
especializados em tecnologia de suas tarefas básicas de manutenção da
aplicação de banco de dados departamental.
Alta Disponibilidade do SQL Azure foi edificada a partir das tecnologias
Windows Server e SQL Server, cujo predicado já foi comprovado, sendo flexível o
bastante para lidar com qualquer variação no uso e na carga. O serviço replica
múltiplas cópias redundantes dos dados em vários servidores físicos para manter a
disponibilidade dos dados e a continuidade dos negócios. No caso de uma falha de
64
hardware, o SQL Azure realiza o failover automático para otimizar a disponibilidade
de sua aplicação.
Para a Microsoft (2009):
Escalabilidade é a principal vantagem do SQL Azure é a facilidade de
escalonamento da solução. Após particionar os dados, o serviço escala
conforme o crescimento deles. Com o modelo de precificação "pague à
medida que crescer", pagando apenas pelo armazenamento que usar, de
modo que pode reduzir a escala do serviço quando não precisa dele.
No Modelo de Desenvolvimento Familiar ao criar aplicações locais que
usam o SQL Server, o desenvolvedor utiliza bibliotecas de cliente que usam o
protocolo TDS para realizar a comunicação entre o cliente e o servidor. O SQL Azure
fornece a mesma interface TDS do SQL Server, portanto pode usar as mesmas
ferramentas e bibliotecas para construir aplicações clientes para os dados
armazenados no SQL Azure. Para saber mais sobre o TDS, veja protocolos de rede e
pontos de extremidade TDS.
De acordo com a Microsoft (2010):
O Modelo de dados Relacional o SQL Azure será familiar para os
desenvolvedores e administradores, pois o armazenamento dos dados é
semelhante ao que ocorre no SQL Server, ou seja, é feito através da
Transact-SQL. Conceitualmente similar a uma instância local do SQL
Server, o servidor do SQL Azure é um grupo lógico de bancos de dados
que atua como uma barreira de autorização.
Dentro de cada servidor do SQL Azure, podem ser criados múltiplos bancos
de dados, que terão tabelas, exibições, procedimentos armazenados, índices e outros
objetos familiares. Esse modelo de dados aproveita suas habilidades de programação
em Transact-SQL e design de banco de dados relacional, e simplifica o processo de
migração das aplicações de banco de dados locais para o SQL Azure.
Os servidores e bancos de dados do SQL Azure são objetos virtuais que não
correspondem a servidores e bancos de dados físicos. O SQL Azure cuida da
implementação física, permitindo que dedique seu tempo ao design do banco de
dados.
De acordo com a Microsoft (2009):
Mais de 70 % de um orçamento típico de TI é gasto com infra-instrutora,
como sistemas operacionais, armazenamento e rede. O custo do
gerenciamento desta infraestrutura está aumentando. Os clientes querem
proteger o acesso às informações a qualquer dispositivo, de qualquer
lugar.
65
O armazenamento da Microsoft SQL Azure é feito em minutos, tendo como
benefícios a diminuição dos custos e configura apenas o que for necessário. Tendo
no seu armazenamento o auto provisionamento no SQL Azure, alterando sempre que
for necessidades para melhor atender.
Segundo Oliveira (2010):
A segurança é uma das maiores preocupações das empresas ao considerar
a movimentação de suas informações para nuvem, a Microsoft criou o
Azure com segurança em mente. O. NET access controle service permite
integração das identificações, o security assertion markup language troca
mensagens que são usadas nas aplicações para quando é pra permitir
acesso. A Microsoft desenhou um framework que se adéqua às principais
normas reguladoras de segurança.
Com a autenticação nos acessos e com a criptografia do dado na rede, os
dados e as suas aplicações torna-se mais seguros. O usuário tem que fornecer nome e
senha para ter uma conexão com o SQL Azure, dando mais segurança nas suas
informações.
Em relação ao custo benefício e modelo de precificação, podemos dizer que
o SQL Azure é cobrado pelo consumo, ou seja, pode ser cobrado o serviço por mês,
hora, tudo depende do que for contratado.
Conforme Moura (2010):
O preço do Windows Azure é baseado na medição do consumo de
serviços usados conforme o crescimento. O consumo é medido por quatro
medidores: medidores de computação (por hora de serviço); medidores de
armazenamento (por GB/DB armazenados); medidores de largura de
banda (por GB transferidos) e medidores de transações (por
usuários/transações). Empresas de todos os tamanhos podem adquirir o
Windows Azure com a rede de parceiros da Microsoft ou no site.
5.7.2 BigTable
O BigTable é um sistema de armazenamento de dados distribuído em larga
escala. Segundo O’Reilly (2006), “Ele funciona como um SGBDs orientado a
colunas e utiliza o GFS para gerenciar os dados, podendo ser utilizado juntamente
com o MapReduce para distribuir o processamento dos dados”.
Conforme Sousa et al. (2010):
O BigTable não suporta um modelo relacional, mas fornece um modelo
simples e flexível. No modelo de dados do BigTable, uma tabela é um
mapa esparso, distribuído, persistente e multidimensional, organizado em
três dimensões: linha, coluna e timestamp, formando uma célula. Linhas
com chaves consecutivas são agrupadas em tablets, que são unidades de
distribuição e balanceamento de carga.
66
As linhas são a unidade básica de atomicidade e alterações de uma única
linha são sempre transacionais. As colunas são agrupadas em famílias que formam a
unidade de controle. Várias versões de uma mesma célula podem ser armazenadas e
indexadas pelo timestamp. BigTable não suporta nenhum tipo de junção e relações
são gerenciadas na camada de aplicação.
O BigTable tem três elementos principais: uma biblioteca comum aos
clientes, um servidor mestre e vários servidores de tablets. O servidor mestre é
responsável por designar para os servidores de tablets, balanceamento de cargas e
por gerenciar alterações nos esquemas dos dados.
Um tablet fornece uma grande consistência, mas não replica o banco de
dados diretamente, pois pode ser atribuído para apenas um servidor por vez. A
replicação dos dados é realizada por meio do GFS, que gerencia o armazenamento
dos tablets e dos arquivos de log. Conforme Date (2004, p. 25):
O Google App Engine (GAE) datastore é uma solução de gerenciamento
de dados baseado no BigTable. O GAE datastore utiliza um modelo de
dados livre de esquema, suporta tipos de dados primitivos e armazena os
objetos de forma serializada no BigTable. O GAE datastore suporta
transações realizadas sobre várias entidades, mas exige que todos os
objetos em uma transação estejam dentro do mesmo grupo de entidade.
Utiliza consistência forte, similar ao BigTable. Muitos tipos de dados
comuns são suportados no armazenamento de dados, incluindo String, int,
float, e DateTime.
O GAE datastore utiliza uma chave como identificador único para atributos
como linha, links, entre outros e pode ser acessado com a linguagem de consulta
Google Query Language (GQL), um subconjunto da linguagem SQL. A linguagem
GQL possui suporte a seleção, ordenação e alguns operadores. A instrução de
seleção pode ser realizada em uma única tabela, ou seja, não suporta junções, assim
como associações ou chaves compostas em decorrência do modelo de dados
utilizado. Dessa forma, associações devem ser implementadas na camada de
aplicação.
De acordo com Imasters (2010):
O BigTable, do Google, não é uma solução de dados relacionais nem
orientada a documentos (e, na verdade, não suporta JDBC de nenhuma
maneira). O BigTable é o que é conhecido como armazenamento de
chave/valor. Ou seja, ele não tem esquema e permite armazenar
basicamente qualquer coisa que quisermos, seja uma instância de multa
de estacionamento, uma lista de corridas, sejam os corredores de uma
67
corrida. A falta de esquema do BigTable oferece uma enorme
flexibilidade, que suporta o desenvolvimento rápido.
5.7.3 Cassandra
Cassandra primeiramente foi criada pelo Facebook, que abriu seu códigofonte para a comunidade em 2008. Agora é mantido por desenvolvedores da
fundação Apache e colaboradores de muitas empresas.
Conforme Date (2004, p. 35):
A Apache Cassandra é um projeto de sistema de banco de dados
distribuído altamente escalável de segunda geração, que reúne a
arquitetura do Dynamo, da Amazon e modelo de dados baseado no
BigTable, do Google.
Cassandra pode funcionar em hardware de baixo custo e lida com alta taxa
de escrita sem sacrificar a eficiência na leitura. Tendo ela uma arquitetura do
Dynamo com o modelo de dados do BigTable e possui uma API simples como meio
de acesso aos dados.
De acordo com Lopes (2010):
Ele é um banco de dados pós-relacional. Mas como esse termo não é
muito conhecido, utilizaremos o termo NoSQL. Um repositório de dados
leve, feito em Java, similar aos famosos CouchDB (outro projeto que,
assim como o Cassandra, é incubado na Apache Incubator) e
BigTable, utilizando ferramentas similares ao Hadoop e conceitos como
MapReduce (para bancos distribuídos).
Conforme Mucin (2010), “Exerce com excelência a função de repositório de
dados. Leve e desenvolvido na plataforma Java, ele não apresenta a sobrecarga de
recurso do banco de dados convencionais”. Atualmente o projeto é baseado na
tecnologia emergente NoSQL e encontra-se incubado pela Fundação Apache.
Segundo Breitman e Viterbo (2010, p. 37):
Cassandra integra o modelo de dados BigTable com o design distribuído
Dynamo, oferecendo consistência futura. Em vez de manter dados
armazenados em sequências de filas ou colunas, ele usa a ordem ColumnFamily, inspirada no BigTable. Cassandra é distribuído por diversos data
centers, como as zonas de disponibilidade do Amazon EC2, além de
oferecer a disponibilidade e escalabilidade para alguns sites bem
conhecidos, incluindo as gigantes comunidades de usuários, Twitter e
Facebook.
68
5.7.4 SimpleDB
SimpleDB é um serviço da Web que fornece armazenamento de dados
estruturados na nuvem, e apoiada por grupos de servidores de banco de dados
gerenciado Amazônia.
Os dados não requerem nenhum esquema e são armazenadas com segurança
na nuvem. Existe uma função de consulta, e todos os dados que forem armazenados
os valores são totalmente indexados. Em consonância com outros serviços web da
Amazon, não há taxa mínima, podendo ser cobrado apenas pelo seu uso real.
De acordo com Pigatto (2009):
O Amazon SimpleDB é um serviço que provê as principais funções de um
banco de dados voltado para as nuvens. O objetivo do SimpleDB é
diminuir a complexidade de uso de bancos de dados escaláveis,
permitindo ao desenvolvedor preocupar-se apenas com a aplicação em
desenvolvimento.
Amazon SimpleDB é um serviço web para execução de consultas sobre
dados estruturados em tempo real. Estes serviços são projetados para tornar a
computação na escala da Web mais fácil e mais rentável para os desenvolvedores.
Conforme Imasters (2011):
O SimpleDB da Amazon é um armazenamento de dados baseado em
nuvem bastante simples, mas substancialmente escalável e confiável.
Devido à sua base não relacional/NoSQL, o SimpleDB é flexível e
incrivelmente rápido. Como parte da família de serviços da Web da
Amazon, o SimpleDB usa HTTP como mecanismo de comunicação
subjacente, de modo que é capaz de suportar ligações de linguagem, da
linguagem Java a Ruby, e Perl.
Segundo Pigatto (2009), “Este tipo de serviço é classificado como
Armazenamento de dados (DaaS), visto que ele permite ao usuário armazenar seus
dados em discos remotos e acessá-los a qualquer momento e de qualquer lugar”.
Para Imasters (2011):
O SimpleDB também tem um preço acessível: no licenciamento do
SimpleDB, paga-se somente pelos recursos consumidos, diferente do
método mais tradicional de comprar uma licença de antemão para uso e
espaço previstos. Como parte da classe de armazenamento de dados
NoSQL, ou não relacional, que está surgindo, o SimpleDB está
relacionado ao BigTable ou CouchDB do Google.
O serviço da SimpleDB da Amazon funciona em estreita articulação com o
Amazon Simple Storage Service (Amazon S3) e Amazon Elastic Compute Cloud
69
(Amazon EC2), colectivamente, a capacidade de processar, armazenar e consultar
dados conjuntos na nuvem.
Conforme Lopes (2010):
Amazon SimpleDB é um banco de dados vastamente distribuído do tipo
chave-valor. Definitivamente não é o tipo de banco que serve para todo
tipo de negócio, e possuí uma série de restrições de desempenho e
escalibilidade. Atributos são limitados a 1KB cada então os seus itens a
fazer não podem ter nomes maiores que um kilobyte.
O modelo de controle de acesso do SimpleDB é similar ao S3 (Simple
Storage Service) da Amazon que é um sistema de armazenamento distribuído, onde o
sistema usa uma chave de usuário (uma cadeia de caracteres longa com aparência
aleatória) e uma senha de usuário (outra cadeia de caracteres com aparência
aleatória) para permitir que arquivos sejam armazenados e recuperados do banco de
dados.
De acordo com Amazon web Services (2010):
Amazon SimpleDB fornece um ponto final https para garantir
criptografado, a comunicação segura entre seu aplicativo ou do cliente e
seu domínio. Além disso, através da integração com a AWS
gerenciamento de Identidade e Acesso, podendo estabelecer usuário ou
nível de controle sobre o acesso ao grupo SimpleDB domínios específicos
e operações.
A construção de uma rede social simples pode utilizar sem problemas o
SimpleDB. Mesmo assim, podemos avaliar os seus requisitos de negócio, orçamento
e qualquer outra restrição técnica para descobrir se o SimpleDB servirá aos seus
propósitos.
Afirma Pigatto (2009):
O Amazon SimpleDB trabalha com uma abordagem que elimina a
necessidade de modelagem de dados, constantes manutenções e
preocupação com aumento de desempenho, o que normalmente acontece
com desenvolvedores que utilizam bancos relacionais. O serviço oferece
um conjunto de APIs para armazenagem e acesso aos dados,
possibilitando implementar escalabilidade, pagando somente por recursos
utilizados.
O SimpleDB é um sistema de armazenamento hierárquico de dados
construído para superar as limitações do S3(Amazon Simple Storage Service).
Conforme Amazon web Services (2010):
70
Amazon SimpleDB mede o tamanho de seus dados faturável adicionando
o tamanho de bytes brutos dos dados que forem enviado + 45 bytes de
sobrecarga para cada item, o nome do atributo e um par atributo-valor.
Amazon SimpleDB é projetado para armazenar quantidades relativamente
pequenas de dados e é otimizado para acesso rápido aos dados e
flexibilidade na forma como os dados são expressos. A fim de minimizar
os seus custos nos serviços AWS, grandes objetos ou arquivos devem ser
armazenados em Amazon S3, enquanto os ponteiros e os meta-dados
associados com esses arquivos podem ser armazenados na Amazônia
SimpleDB. Isso permitirá que possa rapidamente procurar e acessar seus
arquivos, minimizando os custos de estocagem.
Os dados armazenados em SimpleDB ficam disponível na internet. A
segurança dos dados é de grande importância para muitas aplicações, enquanto a
segurança da base conta de serviços web deve ser importante para todos os usuários.
Para proteger os dados, todos os acessos aos SimpleDB, se ler ou escrever, é
protegido por credenciais de sua conta. Cada pedido deverá conter a assinatura
correta e autorizada digital ou então é rejeitada com um código de erro.
De acordo com Amazon web Services (2010):
Amazônia SimpleDB passa os seus benefícios financeiros de escala da
Amazônia. Podendo pagar apenas para os recursos que realmente
consumir. Para a Amazon SimpleDB, isso significa armazenar dados lê e
escreve são cobrados por recursos computacionais consumidos por cada
operação, e não são cobrados os recursos computacionais quando não
estiver usando-as. Pague apenas pelo que usa. Não há taxa mínima. Os
preços baseiam-se na região pode estabelecer o seu domínio Amazônia
SimpleDB. Podendo começar com a Amazon SimpleDB gratuitamente.
Novos e atuais clientes recebem 25 Horas Máquina SimpleDB e 1 GB de
armazenamento gratuito de cada mês. Muitas aplicações devem ser
capazes de operar dentro desses limites perpetuamente livre camada.
5.7.5 Relational Cloud
Conforme Curino (2010, p. 235):
Relational Cloud é um SGBD como um serviço concebido com o objetivo
de consolidar as funcionalidades de gestão de dados para grandes
empresas e outsourcing do gerenciamento de dados em nuvem para
pequenas e médias empresas.
O Relational cloud prove de uma disponibilidade por meio de replicação
transparente, gerenciamento automático das cargas de trabalho e migração de dados
em tempo de execução, além de oferecer suporte a transações distribuídas
serializáveis.
Para Sousa et al. (2010):
71
Tendo então o seu foco na fragmentação e alocação dos dados, migração
de dados em tempo de execução e análise de carga de trabalho. Em
relação à fragmentação, o Relational Cloud propõe um novo algoritmo
com o objetivo de minimizar a probabilidade de uma determinada
operação ter que acessar múltiplos nós para fornecer uma resposta.
Ocorre que a migração em tempo de execução é obtida por meio de uma
estratégia que prevê quando uma adaptação será necessária antes que algum nó do
sistema seja sobrecarregado. Para tanto, o deslocamento de pequenos conjuntos de
dados é realizada durante a execução.
A alocação e análise de carga de trabalho são realizadas por meio de
técnicas estáticas e dinâmicas de caracterização da carga de trabalho, seleção de
SGBDs, atribuição de cargas de trabalho para as instâncias de banco de dados e
atribuição de instâncias de banco de dados para nós físicos.
O Relational Cloud foi projetado para ser executado em máquinas em um
único centro de dados. Cada máquina física executa várias instâncias de um SGBDs.
Estas instâncias podem utilizar sistemas de armazenamento diferentes, visto que
sistemas especializados, em geral, são eficientes para tarefas específicas.
Cada banco de dados é dividido em partições lógicas por meio de técnicas
de fragmentação. Essas partições são armazenadas em grupos de réplicas com o
objetivo de garantir a disponibilidade e tolerância a falhas. Um grupo de réplica
consiste de várias instâncias do banco de dados sendo que cada uma armazena cópia
dos dados de uma partição lógica. A fragmentação dos dados e alocação dos grupos
de réplicas nas máquinas é controlada pelo analisador de carga de trabalho.
O Relational Cloud e a sua comunicação entre as aplicações são realizadas
por meio de interfaces padrão ou protocolos conhecidos, tais como a interface JDBC.
Segundo Couceiro (1984, p. 77), “As consultas SQL recebidas são enviadas
para um roteador, responsável por analisar e verificar os metadados do banco de
dados e determinar o plano de execução”. Por fim, o sistema de transações distribui a
carga de trabalho, assegurando a serializabilidade e o tratamento de falhas. Por meio
do monitoramento constante de desempenho e carga de trabalho, o Relational Cloud
ajusta a fragmentação dos dados e as opções de localização em tempo de execução.
Falhas no sistema e alterações de carga de trabalho exigem a evolução do esquema
de fragmentação e alocação em tempo de execução.
72
Para tanto, é necessária a migração dos dados baseada nas instâncias do
mecanismo de armazenamento, o que melhora o desempenho do sistema.
5.7.6 CouchDB
Segundo Henry (2006, p. 88): “O CouchDB é um banco de dados orientado
a documentos e de código fonte aberto escrito na linguagem Erlang, buscando
replicação e escalabilidade horizontal”.
Ele é construído em um poderoso mecanismo de armazenamento B-tree, que
é responsável por manter os dados do CouchDB classificados e fornece um
mecanismo para procurar, inserir e excluir em tempo amortizado de forma
logarítmica. O CouchDB usa esse mecanismo para todos os dados internos,
documentos e visualizações.
Devido à maneira livre de esquema na qual o banco de dados está
estruturado, o CouchDB depende do uso de visualizações para criar relacionamentos
arbitrários entre documentos e para fornecer recursos de agregação e relatório. Os
resultados dessas visualizações são computados usando Mapear/Reduzir, um modelo
para processar e gerar grandes conjuntos de dados usando computação distribuída.
Para Chirs (2009), as principais características do CouchDB são:
•
Atomicidade;
•
Consistência;
•
Isolamento;
•
Durabilidade;
•
Confiabilidade;
•
Tolerante a falhas;
•
Suporte a replicação.
Suas funções referentes a mapear/reduzir no CouchDB produzem pares de
chave/valor, permitindo que o CouchDB insira-os no mecanismo B-tree,
classificados por chaves. Isso permite consultas eficientes por chave e aprimora o
desempenho de operações no B-tree. Além disso, isso também significa que os dados
podem ser particionados por muitos nós sem interferir com a capacidade de consultar
cada nó individualmente.
73
Os bancos de dados CouchDB armazenam documentos denominados
exclusivamente e fornecem uma API de JSON RESTful que permitem que aplicativos
leiam e modifiquem esses documentos. Todos os dados de um banco de dados
CouchDB são armazenados em um documento e cada documento pode ser formado
por um número indefinido de campos. Isso significa que cada documento pode ter
campos que não são definidos em outros documentos. Ou seja, os documentos não
estão ligados a um esquema rígido de banco de dados.
Conforme Chirs (2009):
Cada documento pode conter metadados (dados sobre os dados), como
um ID de documento exclusivo e números de revisão. Os campos do
documento podem conter diversos tipos de dados, como cadeias de texto,
números, valores booleanos (true/false), etc. Os campos não são ligados a
um limite de tamanho. Cada campo deve receber um nome exclusivo (os
documentos não podem ter dois campos com o mesmo nome).
O CouchDB possui uma série de características que torna seu uso viável em
servidores que possuem hardware de menor desempenho e emprega técnicas de
armazenamento e controle de concorrência baseadas na estrutura do documento.
De acordo com Lennon (2009):
Quando são feitas mudanças em um documento do CouchDB, as
mudanças não são realmente anexadas ao documento existente, mas, em
vez disso, uma nova versão de todo o documento, chamada revisão, é
criada. Isso significa que um histórico completo de modificações de
documentos é mantido automaticamente pelo banco de dados. O sistema
de revisão de documento funciona de forma semelhante a como um wiki
ou o sistema de gerenciamento de documento baseado na Web gerencia o
controle de revisão, exceto por tudo ser tratado automaticamente no nível
do banco de dados.
O CouchDB gerencia as alterações de documentos por meio de um
identificador de revisão contido em cada documento.
Afirma Lennon (2009):
Ele não possui mecanismos de bloqueio; dois clientes podem carregar e
editar o mesmo documento ao mesmo tempo. No entanto, se um cliente
salvar suas mudanças, o outro cliente receberá um conflito de edição ao
tentar salvar suas mudanças. Esse conflito pode ser resolvido carregando
a versão mais nova do documento, aplicando novamente as edições e
tentando salvar novamente. O CouchDB mantém consistência de dados
assegurando que as atualizações de documento sejam tudo ou nada —
funcionam ou falham. Nunca haverá um documento parcialmente salvo
no banco de dados.
Dessa forma, o CouchDB possui um mecanismo incremental de replicação
com detecção e gerenciamento bi-direcional de conflitos.
74
Chirs (2009) afirma que:
O CouchDB é de natureza desestruturada e, embora sua falta de um
esquema rígido forneça benefícios em termos de flexibilidade e
escalabilidade, pode ser bem difícil de realmente usar em aplicativos no
mundo real. Quando se pensa em um banco de dados relacional, é
possível ver que, para aplicativos do dia-a-dia, o relacionamento entre
tabelas definidas rigidamente é importante para dar sentido aos dados.
No entanto, quando o alto desempenho é necessário, visualizações
materializadas são criadas para desnormalizar os dados. Muitas vezes, o banco de
dados orientado a documentos faz as coisas ao contrário. Armazena seus dados em
um espaço de endereço simples, bem semelhante a um armazém de dados
completamente desnormalizado. Fornece um modelo de visualização para incluir
estrutura nos dados de forma que possa ser agregada para fornecer significado útil.
Visualizações no CouchDB são criadas on demand e podem ser usadas para
agregar, juntar e relatar sobre documentos do banco de dados. Elas são construídas
dinamicamente e não têm nenhum efeito nos documentos do banco de dados. As
visualizações são definidas em documentos de design e podem ser replicadas em
instâncias. Esses documentos de design contêm funções JavaScript que executam
consultas usando o conceito MapReduce. A função mapear da visualização usa o
documento como um argumento e executa uma série de computações para
determinar quais dados devem estar disponíveis através da visualização. Se uma
visualização tiver uma função reduzir, é usada para agregar os resultados. Recebe um
conjunto de chaves e valores e combina os mesmos em um único valor.
As visualizações do CouchDB podem ser visualizações permanentes
armazenadas dentro do documento de design ou visualizações temporárias
executadas on demand. As visualizações temporárias exigem muitos recursos e se
tornam mais lentas à medida que a quantidade de dados armazenados no banco de
dados aumenta. Por essa razão, as visualizações do CouchDB devem, em grande
parte, ser criadas em documentos de design.
75
6 ANÁLISE COMPARATIVA DE SGBDS PARA NUVENS
Neste capítulo é realizada a análise comparativa dos sistemas gerenciadores
de banco de dados para nuvens. Antes disso, vamos apresentar algumas
características que nos permitem identificar tais sistemas como SBBDs. Para tal,
tivemos como base as características abordadas no capítulo 2 deste trabalho, em
especial aqueles apresentados na Tabela 01.
Segundo Machado (2008), existem algumas regras básicas e claras para que
um sistema de manipulação de dados possa ser considerado um SGBD. Podem-se
citar as seguintes regras: a auto-contenção, independência dos dados, abstração dos
dados, visões, transações e acesso automático.
A tabela 02 feita por Curino (2010) mostra requisitos diferentes dos
apresentados no capítulo 02. Desta vez as regras dizem sobre quais elementos devem
possuir os SGDBs para atender a 03 critérios macros para compor a computação em
nuvem e ser considerado como um sistema gerenciador de banco de dados.
Os elementos apresentados são requisitos de usuário com regras de API de
consultas, acesso fácil a configurações avançadas, disponibilidade e outros. Em
requisitos de provedor, exige-se controle de SLA (Service Level Agreemet),
economia de hardware e energia, e redução de custos administrativos. E por fim,
requisito extra de nuvem pública, onde traz questões de preço, garantias de segurança
e privacidade e baixa latência do sistema.
76
Requisitos do Usuário
U1 API simples com pouca configuração e administração (ex. sem tuning)
U2 Alto desempenho (ex. vazão, escalabilidade)
U3 Alta disponibilidade e confiança (ex. hot stand-by, backup)
U4 Acesso fácil à características avançadas (ex. snapshot, evolução de esquema,
mineração de dados)
Requisitos do Provedor
P1 Atender o SLA do usuário (ex. potencialmente sob carga de trabalho dinâmica)
P2 Limitar hardware e custo de energia (ex. multiplexação intensiva)
P3 Limitar custo de administração (ex. custo com pessoal)
Requisitos extra de Nuvem Pública
P1 Esquema de preço: barato, previsível e proporcional ao uso (elasticidade)
P2 Garantias de segurança e privacidade
P3 Baixa latência (relevante para OLTP e aplicações Web)
TABELA 02 - REQUISITOS PARA SGBD COMO UM SERVIÇO (CURINO ET AL. 2010)
A seguir, será feita uma análise comparativa dos seguintes sistemas
gerenciadores de bancos de dados para nuvens: Microsoft SQL Azure, BigTable,
Cassandra, SimpleDB, Relational Cloud e CouchDB.
Na visão de Foster (2008), os sistemas gerenciadores de banco de dados
para nuvens, não precisam mais dessas regras para ser considerados SGBDs. Com o
passar do tempo e com a evolução da tecnologia, esses sistemas foram evoluindo,
mudando as regras tradicionais citadas no capítulo 2.
De acordo com Curino et al. (2010), os sistemas evoluíram e apresentam
uma lista de requisitos novos para um SGBD como um serviço da nuvem, conforme
a tabela 02.
77
6.1 MICROSOFT SQL AZURE
Forma de distribuição: Serviço.
Segurança: a Microsoft criou o Azure pensando na sua segurança. O Net
Access Controle Service tem a integração das identificações, o Security Assertion
Markup Language troca mensagens que são usadas nas aplicações para quando é
para permitir acesso. A Microsoft delineou um framework que se adéqua às
principais normas reguladoras de segurança.
Armazenamento: em relação ao armazenamento, com SQL Azure, pode ser
configurado seu armazenamento de dados rapidamente. Isso reduz os custos iniciais
e permite que configure apenas o que o necessário. Quando as necessidades mudam,
pode-se facilmente estender seu armazenamento de dados baseados no auto
provisionamento do SQL Azure.
Suporte: podemos dizer que o preço é baseado de acordo com o seu
consumo de serviços. Este consumo é medido por quatro medidores: medidores de
armazenamento (por GB/DB armazenados); medidores de computação (por hora de
serviço); medidores de largura de banda (por GB transferidos) e medidores de
transações (por usuários/transações).
Benefícios: um dos seus benefícios é o seu acelerado provisionamento,
escalabilidade econômica, elevada disponibilidade e sobrecarga de gerenciamento
reduzida.
6.2 BIGTABLE
Forma de distribuição: serviço
Segurança: sedimentação dos dados em três partes, em servidores diversos e
aleatórios. Consulta de forma criptografada.
Armazenamento: o seu armazenamento é feito por meio da chave/valor. Não
precisa de esquema e permite armazenar basicamente qualquer coisa, seja uma
instância de multa de estacionamento, uma lista de corridas, sejam os corredores de
uma corrida.
Suporte: o seu serviço é pago, com custos inferiores da Amazon SimpleDB.
78
Benefícios: extrema rapidez na recuperação de dados, muito superior a
bancos de dados relacionais, devido a cada nó no cluster se comunicarem com outros
nós (p2p) e fazer ativamente parte da partição/replicação. A capacidade de
armazenamento e escalabilidade também se destacam por superar a marca do
teraflops facilmente.
6.3 SIMPLEDB
Forma de distribuição: serviço
Segurança: os dados que armazenados em SimpleDB ficam disponíveis na
internet. Para proteger os dados, todos os acessos aos SimpleDB, se ler ou escrever, é
protegido por credenciais de sua conta. Cada pedido deverá conter a assinatura
correta através de assinatura digital e criptografia para as consultas.
Armazenamento: a Amazon tem seu próprio armazenamento de chave/valor
baseado em nuvem chamado de SimpleDB, um armazenamento de dados de
chave/valor extremamente escalável e confiável, que é exposto via interface da Web.
De acordo com a Imasters (2010):
É possível manipular o armazenamento de dados SimpleDB por meio da
Web e de HTTP. Ligações em cima da infraestrutura de serviço da Web da
Amazon possibilitam aproveitar o SimpleDB usando a linguagem que
quisermos, entre opções que incluem PHP, Ruby, C# e linguagem Java.
Suporte: no licenciamento do SimpleDB, vai ser pago apenas o que for
consumido, diverso do método mais tradicional de comprar uma licença de para uso
e espaço previstos. Como parte da classe de armazenamento de dados NoSQL, ou
não relacional, que está surgindo, o SimpleDB está relacionado ao BigTable ou
CouchDB do Google.
Benefícios: é fácil de usar com interface simples que fornecem benefícios de
escalabilidade e flexibilidade.
79
6.4 CASSANDRA
Forma de distribuição: serviço
Segurança: os dados são automaticamente replicados para vários nós com
tolerância a falhas. A replicação através de vários centros de dados é suportada.
Falhas nos nós podem ser substituídas sem tempo de inatividade. Consultas
criptografadas para garantir a privacidade dos dados.
Armazenamento: utiliza chave chamada KeySpace que contem apenas pares
ordenados formados por “chave: registro”. O registro, por sua vez, tem sua própria
estrutura; podendo modificá-la sem alterar os demais. Os valores de todas as colunas
são passados para o banco como vetores de bytes, o banco não interpreta os tipos,
isso torna a base menor em tamanho. Como os dados são convertidos em vetores de
bytes, eles ocupam somente o espaço necessário.
Suporte: é mantido pela Apache Foundation e tem seu código aberto para
uso sem custos.
Benefícios: exerce com excelência a função de repositório de dados para
bases extremamente grandes. Disponibilidade e escalabilidade e fácil gerenciamento
são pontos fortes em seu uso.
6.5 RELATIONAL CLOUD
Forma de distribuição: serviço.
Segurança: sistema de segurança ajustável que permite consultas SQL para
ser executado sobre os dados criptografados, incluindo as operações de ordenação,
agregados e associações.
Armazenamento: o Relational Cloud foi arquitetado para ser executado em
máquinas em um único centro de dados. Cada máquina física executa várias
instâncias de um SGBDs. Essas instâncias podem utilizar sistemas de
armazenamento diferentes, visto que sistemas especializados, em geral, são eficientes
para tarefas específicas.
Então podemos associar o Relational Cloud como um bando de dados,
divididos em várias partições lógicas, através de técnicas de fragmentação. Sendo
80
essas partições armazenadas em grupos com objetivo de garantir a disponibilidade e
tolerância a falhas.
Suporte:
desenvolvida
e
mantida
pelo
instituto
tecnológico
de
Massachusetts MIT, a fim de testar os benefícios e custos do banco de dados como
serviço na nuvem.
Benefícios: menor complexidade técnica, graças a um sistema unificado e
simplificado interface de serviço de acesso, e muitos recursos disponíveis para sua
configuração.
O uso de um algoritmo gráfico baseado em dados de separação para
alcançar linear o desempenho máximo, mesmo para cargas de trabalho transacionais
complexas
6.6 COUCHDB
Forma de distribuição: ponto a ponto (p2p) e distribuída por serviço.
Segurança: é feita pela identificação exclusiva, podendo esta identificação
ser atribuída pelo usuário ou pelo aplicativo, ou ele pode usar um identificador
universalmente exclusivo, este número aleatório é gerado pelo CouchD.
Armazenamento:
o
CouchDB
armazena
documentos
denominados
exclusivamente e fornecem uma API de JSON RESTful que permitem que aplicativos
leiam e modifiquem esses documentos. Todos os dados de um banco de dados
CouchDB são armazenados em um documento e cada documento pode ser formado
por um número indefinido de campos. Isso significa que cada documento pode ter
campos que não são definidos em outros documentos. Ou seja, os documentos não
estão ligados a um esquema rígido de banco de dados.
Segundo Moraes (2011), a “base de dados orientados a documento é
diferente. Não existe hierarquia de dados, somente uma coleção de documentos que
pode conter virtualmente qualquer espécie de dados”. Os documentos não precisam
ser necessariamente do mesmo tamanho, pois alguns documentos podem conter
detalhes de campos que outros não precisam armazenar. “Em outras palavras, não
está condicionado a um esquema de banco de dados”.
81
Suporte: é mantido pela Apache Foundation e tem seu código aberto para
uso sem custos.
Benefícios: são vários os seus benefícios, um deles é a sua habilidade de se
replicar em diferentes servidores e sistemas offline o que é bastante útil para
aplicações móveis que são projetadas para funcionarem tanto online quanto offline.
De acordo com Taurion (2009, p. 137):
A aplicação pode guardar os seus dados offline no próprio dispositivo, e
então sincronizar com o servidor quando o aparelho estiver online.
gerenciamento multiplataforma;
Após a exploração de tais sistemas, busca-se identificar o modelo de banco
de dados em nuvem, traçando as características tais quais seguem na tabela 03,
como: o modelo, o tipo de armazenamento, a linguagem de consulta, as transações, a
forma de consistência, a escalabilidade e a disponibilidade
Características
SimpleDB
BigTable
GAE
Cassandra
Modelo
Chavevalor
Coluna
Coluna
Documento Relacional
Armazenamento
Hash
Consistente
Índices
Índices
Árvore B+
Tabela
Tabela
Linguagem de
Consulta
API
simples
API
simples
API simples
API
simples
SQL
SQL
Não
Sim
simplificada
Não
Sim
Sim
Transações
Não
CouchDB
SQL
Azure
Relational
Cloud
Relacional
Consistência
Eventual
Forte
Eventual
Eventual
Forte
Forte
Escalabilidade
Alta
Alta
Alta
Média
Média
Baixa
Disponibilidade
Alta
Alta
Alta
Alta
Alta
Média
TABELA 03. COMPARAÇÃO DOS SISTEMAS – (SOUSA ET AL. 2010)
82
A pesquisa em relação a tabela 03, ocorre através de estudos de cada um dos
sistemas relacionados anteriormente, onde os autores tiraram as semelhanças e as
diferenças de cada sistema e fizeram uma comparação a respeito de suas
características.
Em relação à escalabilidade e disponibilidade, SQL Azure e Relational
Cloud apontam características diferentes. O SQL Azure possui média escalabilidade,
já que não oferece suporte a transações distribuídas ou consultas através de múltiplas
partições de dados localizados em diferentes nós, mas apresenta alta disponibilidade.
Conforme Candan (2009, p. 1.761), as comparações referentes aos sistemas
podem ser analisadas nas seguintes formas:
Novos serviços de dados em nuvem, como o GAE datastore, Amazon S3,
SimpleDB e Cassandra utilizam modelos simplificados de dados
baseados em par chave-valor ou orientados a coluna. Os dados são
armazenados em estruturas otimizadas e acessados por meio de APIs
simples. GAE datastore, S3/SimpleDB, CouchDB não possuem suporte a
transações ACID. Cassandra utiliza um conceito simplificado de
transações para linhas. Estes sistemas suportam apenas consistência
eventual, exceto o GAE datastore e todos apresentam alta escalabilidade e
alta disponibilidade, menos o CouchDB que possui média escalabilidade,
em decorrência do modelo de dados utilizado.
O GAE Datastore, Amazon S3, SimpleDB e Cassandra apresentam ótimos
resultados na manipulação de grandes volumes de dados, pois estes modelos de
dados utilizam sistemas que favorecem a fragmentação dos dados. No entanto, estes
sistemas não suportam operações como junções, possuem apenas garantias de
consistência fraca e fornecem suporte limitado a transações. Ademais, empregam um
modelo de dados mais simples, a complexidade é empurrada para as demais camadas
da aplicação, determinando dos desenvolvedores a adição de funcionalidades mais
complexas nas camadas superiores.
De acordo com Sousa et al. (2010):
O CouchDB e sistemas baseados em grafo optaram por modelos mais
ricos de dados. Com isso, eles apresentam abstrações poderosas que
tornam mais fácil modelar domínios complexos. Estes modelos de dados
mais ricos introduzem maior quantidade de ligação entre os dados, o que
prejudicar a escalabilidade. Vale ressaltar que estes sistemas ainda são
muito recentes e existem poucos estudos detalhados sobre os mesmos,
assim como ferramentas e tecnologias de apoio para sua ampla utilização.
O CouchDB apresenta um estudo comparativo de BD em serviços,
contemplando as características de armazenamento, modelo, transação, consistência,
escalabilidade e disponibilidade.
83
Candan (2009, p. 1.7694), afirma que “Os sistemas SQL Azure e Relational
Cloud utilizam o modelo de dados relacional, que fornece grande flexibilidade no
acesso aos dados, tais como agregação e consultas com junções”. Eles programam
transações ACID e garantia de consistência forte, o que facilita no desenvolvimento
de aplicações.
Segundo Medeiros (2006, p. 10), o sistema relacional Cloud:
Apresenta baixa escalabilidade e média disponibilidade, pois se trata de
um sistema em desenvolvimento e que não considera aspectos de
elasticidade e ambientes virtualizados, características essenciais da
computação em nuvem. O SQL Azure não possui suporte a fragmentação
automática de dados, essencial para melhorar a escalabilidade, mas o
Relational Cloud apresenta iniciativas neste sentido. A Tabela mostra um
resumo deste comparativo.
Para Kossmann (2010, p. 549), “É importante ressaltar que os modelos de
dados utilizados pelos SGDBs em nuvem são compatíveis, ou seja, pode-se expressar
um conjunto de dados em qualquer um deles.”
Podemos citar exemplos, como no caso de ser possível decompor todos os
dados de um banco de dados relacional, em uma coleção de par chave-valor. Dessa
forma, existem contextos onde cada um destes modelos de dados é mais apropriado.
De acordo com Kossmann (2010, p. 550), “Os principais provedores tem
adotado diferentes arquiteturas para seus serviços e o custo e o desempenho destes
serviços variam significativamente dependendo da carga de trabalho”.
84
7. CONSIDERAÇÕES FINAIS
O presente trabalho objetivou verificar, por meio de pesquisas
bibliográficas, os tipos de bancos de dados em nuvem, com vistas a identificar
aspectos de segurança, arquitetura e métodos de consultas dessa tecnologia. Com
esses estudos apresentados, podemos concluir que os bancos de dados como serviços
em nuvem, oferecem o potencial para lidar com várias limitações graves de bancos
de dados existentes relacionados à escalabilidade e flexibilidade, facilidade de uso e
provisionamento de estresse de processamento.
Neste documento, foram explorados os principais requisitos e desafios
técnicos para tornar a visão de um serviço de banco de dados, introduzindo a sua
concepção e avaliação inicial de uma nova forma de armazenar, processar e
disponibilizar dados na rede de internet ou mesmo para particulares.
Vemos estes resultados como um primeiro passo no sentido de fornecer
bases de conhecimento aos leitores leigos no assunto de banco de dados como
serviço, além de comparativo para avaliar modelos diferentes, em uma tabela de
variados SGDBs baseados em nuvem.
Uma das dificuldades encontradas durante a elaboração deste trabalho foi o
material bibliográfico escasso, sendo que muitos dos materiais encontrados não são
claros com relação a informações mais científicas dos sistemas investigados, às vezes
trazendo detalhes tecnológicos de forma superficial.
Um trabalho futuro desta pesquisa seria uma aplicação do banco em um
modelo real á uma empresa ou instituição local, a fim de provar os benefícios do uso
de banco de dados como serviço de nuvem.
Ao comparativo, verificamos que todos os SGDBs têm muito em comum,
tratando da forma de armazenar e buscar os dados, devido que quase todos derivam
da mesma tecnologia e são mantidos pelas mesmas empresas e grupos de usuários da
comunidade de internautas. Com exceção do Relational Cloud todos têm de média a
alta escalabilidade e alta disponibilidade, tornando-se menos indicado para o sistema
de nuvem já que, a disponibilidade e escalonabilidade são essenciais para o sucesso
da nuvem.
85
8. REFERÊNCIAS BIBLIOGRÁFICAS
ALMEIDA, R. Entendendo MapReduce. Disponível em: http://manifestonaweb.
Wordp ress.com/2009/06/02/entendendo-mapreduce. Acesso em: 21 de dez. 2010.
AMAZON
WEB
SERVICE.
Amazon
SimpleDB.
Disponível
http://aws.Amazon. com / SimpleDB. Acesso em: 15 de jan. de 2011.
em:
ARMBRUST, M.; FOX, A.; GRIFFITH, R.; JOSEPH, A. D.; KATZ,
R.;KONWINSKI, A.; LEE, G.; PATTERSON, D.; RABKIN, A.; STOICA, I.;
ZAHARIA, M. Above the Clouds: A Berkeley View of Cloud Computing. EECS
Department, University of California, Berkeley, fevereiro 2009.
BARBIERI, C. banco de dados nas nuvens – NOSQL. Disponível em: http:
//blogdobarbi.
blogspot.com/2010/02/bancos-de-dados-nas-nuvens-noSQL.html.
Acesso em: 22 de dez. 2010.
BIAZUS, C J. Uma visão geral do gerenciamento de banco de dados. Disponível:
http://www.scribd.com/doc/7507097/Introdu-o-a-banco-de-dados-1-Alunos.Acesso
em: 15 de Nov. de 2010.
BOLZAN. W. Modelagem e projeto de banco de dados com o DBDesigner.
Disponível
em:
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?
comp=777. Acesso em: 17 de nov. de 2010.
BREITMAN, K; VITERBO, J. Computação na nuven: Uma visão geral. In
Amãpytuna. Brasília: Funag,2010, p.17.
CANDAN, K. S., Li, W.-S., Phan, T., Zhou, M. . Frontiers in information and
software as services: Proceedings of the IEEE International Conference on Data
Engineering (ICDE ’09), Washington, DC, USA. IEEE Computer Society, 2009,
pg.1761–1768.
CAVALCANTI, Lucas Dantas. Computação em nuvem abordagem energética.
Disponível em: http://www2.cin.ufpe.br/site/index.php. Acesso em: 20 de fev. 2011.
CODE FUTURES. Database Sharding with dbShards. Disponível em: http:// www.
Code futures.com/. Acesso em: 05 de jan. de 2011.
COSTA, D M. Análise de frameworks para construção de portais para
ambientes de computação em grade e sua aplicabilidade no AppMan. Canoas:
Campus, 2009, p. 04.
COUCEIRO, L A C C. Sistemas de Gerência de banco de dados Distribuídos, Rio
de Janeiro: LTC, 1984. 77p.
86
CURINO, C., Jones, E., Zhang, Y., Wu, E., Madden, S. Relational Cloud: The case
for a database service. Technical report, MIT-CSAIL-TR-2010-014. Computer
Science and Artificial Intelligence Laboratory, MIT, USA, 2010, p.235.
CHANG, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A., Burrows, M.,
Chandra, T., Fikes, A., and Gruber, R. E. Bigtable: A distribuição
sistema de armazenamento de dados estruturados. Berkeley: Association, 2006,
p.15.
CHIRS. A. 2009. Apache CouchDB: The definitive Guide. Disponível em:
http://CouchDB. apache.org/ Acessado em 05/12/2010.
DATE, C.J.; Introdução a Sistemas de bancos de dados. 8ª. ed. Rio de Janeiro:
Campus, 2004, p.18.
DIKAIAKOS MD, D. Katsaros, G. Pallis, A. VAKALI, P. Mehra: Cloud
Computing: Computação Distribuída na Internet para TI e Investigação Científica,
Informática Internet IEEE, 12 (5), setembro 2009.
FERREIRA, Edmar. Usos práticos de Hadoop. Disponível em: http://escalabilidade
.com/2010/09/27/usos-praticos-do-hadoop/. Acesso em: 20 de fev. de 2011.
FREITAS, T R. Modelagem Temporal de Sistema de Informação. Disponível em:
http://computacao.unitri.edu.br/downloads /monografia/625111 4313 38 92.pdf.
Acesso em: 17 de nov. de 2010.
FOSTER I., Yong Zhao, Raicu I, Lu S. Cloud Computing and Grid Computing 360Degree Compared – Department of Computer Science, University of Chigado – 16
de dezembro de 2008, p.20.
GREFF, G. Sistemas de banco de dados. Disponível em: http://.com.br/guaraci
/banco _ ados/bd.pdf. Acesso em: 17 de nov. de 2010.
HACIGUMUS H., B. Iyer, e S. Mehrotra, A integridade de dados criptografados
no banco de dados modelo de provedor de serviço, WCC IFIP, Workshop sobre
Certificação e Segurança em E-Services (CSES), Montreal, Canadá, 2002.
HEUSER, C A. Projeto de banco de dados. 6ª ed. São Paulo: Bookman, 2009, p.31.
HOLANDA, A T., AVELINO, B., CAVALCANTE, R. Sistemas Distribuídos
Engenharia da Computação. Cloud Computing. Disponível: http://www.scribd.
com/doc/45939000/Cloud-Computing. Acesso em: 05 de Jan. de 2011.
IMASTERS. Desenvolvimento em Java 2.0: armazenamento em nuvem com o
Simple DB da Amazon. Disponível em: http://imasters.com.br/artigo/17718. Acesso
em: 12 de jan. de 2011.
87
JAVAROTTI FILHO, E. Modelo de banco de dados. Disponível em: http://www.
administradores.com. br/informe-se/artigos/modelo-de-redes-em-banco-de-dados/2
65 41/. Acesso em: 21 de nov. de 2010.
KORTH, H. F. e Silberschatz, A.; Sistemas de bancos de dados, tradução da 5ª. São
Paulo: Campus, 2006.p.10.
KOSSMANN, D., Kraska, T., Loesing, S. (2010). An evaluation of alternative
architectures for transaction processing in the cloud. In SIGMOD ’10: Proceedings
of the 2010 international conference on Management of data, New York, NY, USA.
ACM, 2010, p.549-590
LENNON, J. Explorando o CouchDB. Disponível em: http://www.ibm.com/develo
perworks/br/library/os-CouchDB. Acesso em:05 de jan. de 2011.
LOPES, L F d S. Computação em nuvens Disponível em: http://jus.uol.com
.br/revista/texto/11537/o-poder-judiciario-brasileiro-nas-nuvens. Acesso em: 23 de
Dez. de 2010.
MACHADO, F N R. banco de dados: Projeto e Implementação. 2.ed, São Paulo:
Érica, 2008, p.25.
MAXIMINIANO, F d S. O que é computação nas nuvens. Disponível em: http:
//softwarelivre.org/felipemax/blog/o-iniciante-o-que-e-computacao-nas-nuvens.
Acesso em: 05 de Jan. de 2011.
MECENAS, I.;OLIVEIRA, V d. banco de dados: do modelo conceitual à
implementação. 1ª. ed. Rio de Janeiro:Alta Books, 2005,p.30.
MEDEIROS, M. banco de dados para Sistemas de Informação. 1ª.ed. Santa
Catarina: Visual Books, 2006, p.10.
MELO, R N.; SILVA, S D.; TANAKA, A K. banco de dados em Aplicações
Cliente/Servidor. Rio de Janeiro: Infobook, 1997.
MENESES, B R M d M.; CRUZ, M G. Curso de Sistemas de Informação.
Bandeirantes: Computação em nuvens: benefícios e viabilidade, 2009. Disponível
em: http://docs. Google.com/viewer?a=v&q =cache: U4h J6HCOLMJ:ramses
.ffalm.br/moo dledata /38/moddata/forum/98/498/TCC_-_Clou d. Acesso em: 25 de
Nov. de 2010.
MICROSOFT. SQL Azure. Disponível em: http://www.Microsoft.com/Azure/SQL
.mspx. Acesso em: 21 de Nov. de 2010
MILLER, H.g.; VEIGA, J.. Cloud computing: will commodity services benefit users
long term?. It professional . Washington, Dc, 01 dez. 2009.
88
MUCIN,
S
P.
Apache
Cassandra.
Disponível
http://www.plantaonerd.com/blog/?p =967. Acesso em: 12 de jan. 2011.
em:
MYKLETUN, E., Narasimha, M., Tsudik, G. Secure Esquemas comprovadamente
para consulta básica: Suporte em bancos de dados de terceiros. Rio de
Janeiro:Alta Books, 2006, p.89.
OLIVEIRA, R. 10 razões para usar Azure em aplicações na nuvem.Disponível
em: http://rafaeloliveirav.spaces.live.com/blog/cns!96D2228FA42BC450!779.entry.
Acesso em: 12 de jan. de 2011.
ÖZSU, M. T; VALDURIEZ, P. Principles of Distributed Database Systems.
Tradução [da 2ª ed. americana] Vandenberg D.de Souza. Rio de Janeiro: Campus,
2001, p. 14.
PIGATTO, D F. In: Departamento de Engenharias e Ciências da Computação.
Erechim: Estudo e implementação de uma solução de softwares aplicativos
utilizando
computação
nas
nuvens,
2009.
Disponível
em:
http://www.slideshare.net/dhannyel. Acesso em: 10 de jan. de 2011.
REIS, L. Curso de Ciência da Computação do Centro Universitário do
Triângulo. Uberlândia: Um estudo sobre sgbds para ambientes não críticos, 2000.
Disponível em: http://www.computacao.unitri.edu.br /downloads/monografia /1113
114 3218785. pdf. Acesso em: 15 de nov. de 2010.
RYDLEWSKI, C. Computação Sem Fronteiras. Revista Veja, ed. 2125, São Paulo:
Abril, ago 2009.
SEA SERVER. Infraestrutura do Data Center. Disponível em: http://www
.seaserver .com. br /aempresa.php. Acesso em: 19 de fev. de 2011.
SOFTCOV. Descrito um modelo para uma nova geração de data center Daas.
Disponível: http://www.softcov.com/pt/database. Acesso em: 23 de Dez. de 2010.
SOUSA, F R. C.; MOREIRA, L O.; MACÊDO, J A F. de.; MACHADO , J C.
Gerenciamento de banco de dados em nuvem:Conceitos, Sistemas e
Desafios.Disponível em: http://www.es.ufc.br/~flavio /files/Gerenciamento_dados_
Nuvem.pdf. Acesso em: 20 de dez. de 2010.
TAURION, C. Cloud computing: Computação em Nuvem: Transformando o mundo
da tecnologia e da informação. Rio de Janeiro: Brasport, 2009, p.129.
TAKAI, O K.; ITALIANO, I C.; FERREIRA. J E. Introdução a banco de dados.
Disponível em: http://www.ime.usp.br/~jef/apostila.pdf. Acesso em: 22 de nov. de
2010.
TERRY, D.Cloud Computing. Disponível em: http://techpack.acm.org/cloud/.
Acesso em: 22 de jan. De 2011.
89
TOLEDO, C M T. Sistemas gerenciadores de banco de dados orientados a
objetos para ambiente de desenvolvimento de software. Revista Instituto de
Informática, Campinas, v.2, n. 1, p. 18-28, mar./set. 1994.
TUJAL, L C P. Amãpytuna: Modelo de referencia da cloud. Brasília: Funag, 2010,
p.47.
VAQUERO, L. M.; MERINO-RODERO, L.; CACERES, J.; LINDNER, M. A
Break in the Clouds: Towards a Cloud Definition. ACM SIGCOMM Computer
Communication Review, 39(1): 50-55, janeiro 2009.
WORDLINGO. Big Table. Disponível em: http://www.worldlingo.com
/ma/enwiki/pt/ BigTable. Acesso em: 21 de Nov. de 2010.
Download