• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 

NoSQL x SQL: Bancos de Dados em Nuvens Computacionais

on

  • 1,855 views

 

Statistics

Views

Total Views
1,855
Views on SlideShare
1,855
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    NoSQL x SQL: Bancos de Dados em Nuvens Computacionais NoSQL x SQL: Bancos de Dados em Nuvens Computacionais Document Transcript

    • NoSQL x SQL: Banco de Dados em Nuvens ComputacionaisCarlo de Siqueira PiresPós-graduação em Redes e Segurança de SistemasINF - Instituto de Informática – Universidade Federal de Goiás (UFG)Caixa Postal 131 – 74001-970 – Goiânia – GO – Brasilcarlopires@gmail.comAbstract. This paper present a brief overview of cloud computing anddatabases, focusing on differences between those ones called as NoSQL andthe traditional ones. The concepts are presented using a simple and clearlanguage in order to to ease the lecture by people with few knowledge indatabases. In the end, it is expected that the reader have a betterunderstanding of such technologies and know more the main details toconsider when to choose between these kind of products.Resumo. Este artigo apresenta um breve apanhado sobre nuvenscomputacionais e bancos de dados, concentrando-se nas diferenças entre osconhecidos como NoSQL e os tradicionais. Os conceitos são apresentadosatravés de uma linguagem clara e objetiva, visando facilitar a leitura porpessoas com pouco conhecimento em bancos de dados. Ao final, espera-seque o leitor tenha uma melhor compreensão dessas tecnologias, bem comoconheça mais os principais detalhes a se considerar na escolha de taisprodutos.1. IntroduçãoA popularização crescente da Internet, a partir da década de 1990, provocou osurgimento de uma nova classe de aplicações de rede que vai muito além da publicaçãoe leitura de conteúdo online. O uso que tais aplicações faz da rede mundial vemcrescendo num ritmo muito forte desde então. Para dar suporte a esse crescimento, astecnologias de rede também evoluíram extraordinariamente, tanto em hardware quantoem software. Duas das mais importantes destas tecnologias são a computação emnuvem (do inglês, cloud computing) e os bancos de dados NoSQL (do inglês, Not onlySQL databases).2. Computação em Nuvem (Cloud Computing)A computação em nuvem consiste num conjunto de tecnologias integradas que faz usoda virtualização para emular hardware e apresentar um ambiente compatível com asnecessidades específicas de cada solução de software que se deseje implantar. Essapersonalização do ambiente computacional possibilita um melhor uso do hardware,aumentando a capacidade dos fornecedores de aplicativos em oferecer mais softwarecom menos hardware.
    • Através da virtualização, o gerenciamento do hardware fica muito maisfacilitado, permitindo a configuração de ambientes sofisticados, envolvendo redes eservidores, com um clique de mouse.Algumas empresas se especializaram para oferecer hardware virtualizado comoserviço. Esse tipo de produto é conhecido como IAAS1 (do inglês, Infrastructure as aService). A mais notável é, sem dúvida, a Amazon2, uma empresa americana pioneira navenda desse tipo de serviço. As tecnologias utilizadas pela Amazon para fornecer IAASsão tão prevalentes que seus concorrentes utilizam os mesmos protocolos3 para fornecerprodutos compatíveis.3. Bancos de Dados SQLBancos de dados é um tópico extenso da ciência da computação que vem evoluindodesde a década de 1970. O processo de estruturar informação, armazená-la paraposterior recuperação é, por si só, um campo de estudo a parte. Nesse trabalho, apenasreferenciamos os produtos de banco de dados conhecidos como tradicionais, sem entrarem maiores detalhes.Tais produtos compartilham entre si duas características principais: o uso dalinguagem SQL4 para manipulação dos dados e o suporte das propriedades ACID5 noacesso e armazenamento dos dados.Dentre os bancos de dados tradicionais podemos listar os seguintes: MySQL,PostgreSQL, Oracle, SQLite, SQL Server e DB2. Estes produtos são populares ecomumente encontrados em conteúdo ou projetos disponíveis na Internet.3.1. Uso de banco de dados SQL em nuvens computacionaisÉ difícil encontrar fontes confiáveis que contabilizem o uso de bancos de dados emnuvens computacionais, mas é sugestivo dizer que MySQL seja, provavelmente, obanco tradicional mais usado em tais ambientes. Isso se deve ao fato de MySQL possuiruma enorme gama de opções em escalabilidade horizontal, bem como inúmeros ajustesde performance, com vários fornecedores independentes.Escalar bancos tradicionais em nuvens, ou seja, aumentar a capacidade do bancoatravés da adição de máquinas virtuais, traz consigo um custo de gerenciamentoconsiderável. Esse custo é tão impactante que força desenvolvedores de soluções arepensarem as opções de persistência, fazendo melhor uso das estruturas de dados e, atémesmo, criando soluções específicas de armazenamento por aplicação.4. Bancos de Dados NoSQLA computação em nuvem trouxe consigo a necessidade de rever as opções empersistência de dados. Os bancos de dados SQL, antes tratados como a bala de prata doarmazenamento de dados já não são capazes de responder às demandas de performance,1 http://pt.wikipedia.org/wiki/Computação_em_nuvem#Tipologia2 http://www.amazon.com/3 http://aws.amazon.com/pt/4 http://pt.wikipedia.org/wiki/SQL5 http://pt.wikipedia.org/wiki/ACID
    • escalabilidade e flexibilidade das aplicações modernas. Essa deficiência levou aosurgimento de um movimento da indústria que rompeu com o padrão SQL e criouinúmeras soluções de armazenamento na tentativa de alcançar melhores resultados empersistência.Tais soluções foram, em grande parte, motivadas pelas nuvens computacionaisporque os bancos de dados tradicionais não foram projetados para executar emmáquinas virtualizadas. Ao contrário, as otimizações desses bancos pressupõem umambiente vertical [Nascimento, Rosa, Porto e Soares 2013], que faz uso do máximo derecursos de CPU, memória e armazenamento que o hardware hospedeiro dispuser.Na nuvem, frequentemente, o hardware alocado é maximizado no requisito alvoda solução de software, liberando os demais recursos para outras máquinas virtuais comoutros fins. Por exemplo, uma solução de cache para pequenas porções de dadosfrequentemente acessadas demanda muito mais memória em RAM (acesso rápido) queem disco; para tal solução, o hardware virtualizado poderia ser alocado com maismemória RAM e memória em disco suficiente apenas para inicializar o sistema.Entretanto, seria necessário medir se o banco de dados escolhido para a aplicação teria aperformance exigida em tal configuração.Além de otimizações para a nuvem, problemas de escalabilidade, tolerância afalhas e performance insuficiente levaram ao surgimento de uma miríade de produtosconhecidos por romper com parâmetros sagrados da teoria de bancos de dados, taiscomo ACID e SQL. Esses produtos vieram compor uma nova classe de banco de dados,conhecida como NoSQL, responsável por fazer funcionar grandes players da Internet,tais como Google, Amazon, Facebook e Twitter.4.1. Conceito de NoSQLNão existe um consenso sobre o que é um banco de dados NoSQL. Provavelmente omais aceitável é o que se considera NoSQL as soluções de armazenamento emanipulação de dados projetadas sem o compromisso de suportar a linguagem SQL e aspropriedades ACID que consagraram os bancos de dados tradicionais.5. Tipos de bancos de dados NoSQLPara alcançar resultados melhores que os bancos tradicionais, os projetistas de bancosde dados NoSQL optaram pelo descompromisso com padronização na implementaçãode seus produtos, visando atender suas expectativas de armazenamento. Essa liberdade,gerou uma larga lista de produtos de bancos de dados heterogêneos, difícil decategorizar e comparar. Christof Strauch coletou uma série de taxonomias de bancosNoSQL [Strauch 2011] a partir de várias fontes. Para esse trabalho, decidimosclassificar apenas quanto a estruturação e manutenção da informação armazenada.5.1. Estruturação dos dados armazenadosAo armazenar a informação, os bancos de dados SQL estruturam a informação emtabelas e linhas. Em contrapartida, os modelos NoSQL normalmente usam outrosformatos, mais adequados em atingir os objetivos de performance ou escalabilidade.
    • • Chave-valor – do inglês, key-value. Bancos que suportam esse tipo dearmazenamento oferecem o máximo de simplicidade e velocidade na gravação erecuperação das informações. Podem ser uma boa opção se a aplicação vai lidarcom dados simples, como por exemplo, arquivos, ou imagens. Alguns exemplosde produtos são: Redis, Riak, DynamoDb, Google LevelDB, AmazonSimpleDB, Project Voldemort, Oracle NoSQL Database Key Value Pairs, alémde outros.• Documental – do inglês, document store. Os produtos que suportam esse tipo dearmazenamento já estruturam a informação em um nível acima aos dechave-valor. Possibilitando recursos de recuperação mais elaborados, como porexemplo, buscas textuais complexas. Alguns exemplos são: MongoDB,CouchDB, Cassandra, Hypertable, HBase, além de outros.• Grafos – Estruturam a informação na forma de um grafo, possibilitando arecuperação de informações complexas com uma linguagem muito simples. Porexemplo, uma rede social, com vários tipos de relacionamentos pode serfacilmente armazenada em um grafo social, possibilitando consultas do tipo:quem se interessa (facebook like) pelos produtos que X comentou na linha dotempo da empresa Y. Alguns exemplos são: Neo4J, Twitter FlockDB,VertexDB, InfinityGraphDB, InfoGrid, além de outros.Exitem vários outros tipos de estruturação de dados, mais e menos complexos.Porém, nos concentramos nos mais populares.5.2. Manutenção e recuperação da informaçãoQuanto a manutenção da informação armazenada os bancos NoSQL são bastanteflexíveis, podendo suportar várias configurações num mesmo produto.• Em memória – A redução do custo das memórias RAM provocou o surgimentode alguns bancos que armazenam a informação em disco apenas para garantirsua durabilidade, enquanto que toda a manipulação ocorre em memória. Toda amassa de dados é carregada na memória antes assim que o banco inicia. Taisprodutos são extraordinariamente rápidos e oferecem o máximo de performanceno acesso aos dados. A limitação é, naturalmente, a quantidade de memória quea máquina virtualizada tem. Alguns produtos, como o Redis, por exemplo,podem utilizar a memória de mais de uma máquina virtual e permitir algumaescalabilidade. Alguns exemplos são: Redis, Memcache, MemcacheDB,Scalaris, Aerospike, além de outros.• Em disco (HD e SSD) – Outra classe de produtos, prefere armazenar asinformações gravadas em disco, seja HD ou SSD. A maioria dos bancos NoSQLobservados para esse trabalho fazem um esforço enorme para obter o máximo deperformance na gravação e recuperação das informações em disco ou SSD. Porexemplo, o banco Cassandra, ao gravar um registro, primeiro gravasequencialmente (evitando provocar o deslocamento da cabeça do disco) oregistro em disco, depois envia os dados para a memória e ordena
    • adequadamente. Posteriormente, um outro processo reorganiza a informação e agrava definitivamente num arquivo imutável no disco. Outros produtos, como oMongoDB, por exemplo, preferem apostar que o disco é um item que não falhafrequentemente e, por causa disso, grava sempre em memória para ter maisperformance e, de tempos em tempos, grava a memória no disco. São várias astécnicas utilizadas pelos bancos NoSQL para alcançar seus objetivos em termosde gravação, de modo que é necessário fazer uma análise caso a caso paraselecionar a melhor opção a partir da aplicação alvo. Alguns exemplos:MongoDB, Riak, Amazon SimpleDB, Google LevelDB, etc.6. ConclusãoOs bancos de dados NoSQL são a resposta da indústria às deficiências de performance,escalabilidade e complexidade dos bancos SQL tradicionais. Eles romperam com ACIDna busca por seus objetivos, sejam maior performance, maior escalabilidade ou maiorsimplicidade.As nuvens computacionais colaboraram para que o movimento NoSQLacontecesse ao salientar as deficiências dos bancos tradicionais em máquinasvirtualizadas.É importante salientar que os bancos SQL ainda são a principal opção paradesenvolvedores, principalmente para aplicações críticas, onde as propriedades ACID eoperações transacionais são necessárias. Ainda que haja NoSQL ACID ou transacionais,a linguagem SQL é um padrão de fato que persiste fortemente.As soluções de bancos de dados NoSQL trazem benefícios reais quandoaplicadas adequadamente.Embora estas soluções sejam difíceis de comparar porque são muitoespecializadas, cabe aos projetistas, desenvolvedores ou implantadores calcular os próse contras da utilização das mesmas em suas aplicações.ReferênciasCosta, R. e Costa, T., (2012). SQL e NoSQL Escalabilidade em Data Stores. DCC -Faculdade de Ciências da Universidade do Porto.C. Strauch, (2011). NoSQL Databases. Stuttgart Media University. Disponível em:http://www.christof- strauch.de/nosqldbs.pdf.Nascimento Jr, A. J., Rosa, P. F., Porto, I. O. e Soares, M. dos S., (2013). Padrões ediretrizes arquiteturais para escalabilidade. FACOM-UFU.Naito, D. da S. e Rosa, E. V., (2010). Monografia de Graduação sob o título "Utilizaçãode Banco de Dados em Computação nas Nuvens". Faculdade de Tecnologia de SãoJosé dos Campos.Chang, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A., Burrows, M.,Chandra, T., Fikes, A., Gruber, R. E., (2006). Bigtable: A Distributed StorageSystem for Structured Data. Communications of the ACM.
    • DeCandia, G., Hastorun, D., Jampani, M., Kakulapati, G., Lakshman, A., Pilchin, A.,Sivasubramaninan, S., Vosshall, P. e Vogels, W., (2007). Dynamo: Amazon’s HighlyAvailable Key-value Store. Amazon.comCorbett, J. C., Dean, J., Epstein, M., Fikes, A., Frost, C., Furman, J., Ghemawat, S.,Gubarev, A., Heiser, C., Hochschild, P., Hsieh, W., Kanthak, S., Kogan, E., Li, H.,Lloyd, A., Melnik, S., Mwaura, D., Nagle, D., Quinlan, S., Rao, R., Rolig, L., Saito,Y., Szymaniak, M., Taylor, C., Wang, R. e Woodford, D., (2012). Spanner: Google’sGlobally-Distributed Database. Google, Inc.NoSQL databases [online]. Disponível em: http://nosql-database.org. Acessado emJunho de 2013.Redis database [online]. Diponível em: http://redis.io. Acessado em Junho de 2013.MongoDB database [online]. Disponível em: http://www.mongodb.org. Acessado em:Junho de 2013.Riak database [online]. Disponível em: http://basho.com/riak. Acessado em: Junho de2013.MySQL database [online]. Disponível em: http://www.mysql.com. Acessado em: Junhode 2013.Oracle database [online]. Disponível em: http://www.oracle.com/br/products/database.Acessado em Junho de 2013.PostgreSQL database [online]. Disponível em: http://www.postgresql.org. Acessado emJunho de 2013.SQLite database [online]. Disponível em: http://www.sqlite.org. Acessado em Junho de2013.IBM DB2 database [online]. Disponível em: http://www.ibm.com/software/data/db2.Acessado em Junho de 2013.Amazon DynamoDB [online]. Disponível em: http://aws.amazon.com/pt/dynamodb.Acessado em Junho de 2013.Google LevelDB database [online]. Disponível em: http://code.google.com/p/leveldb.Acessado em Junho de 2013.Amazon SimpleDB [online]. Disponível em: http://aws.amazon.com/pt/simpledb.Acessado em Junho de 2013.Project Voldemort [online]. Disponível em: http://www.project-voldemort.com.Acessado em Junho de 2013.Oracle NoSQL Database Key Value Pairs [online]. Disponível em:www.oracle.com/technetwork/database/nosqldb/overview. Acessado em Junho de2013.CouchDB database [online]. Disponível em: http://couchdb.apache.org. Acessado emJunho de 2013.