Artigo NoSQL
Upcoming SlideShare
Loading in...5
×
 

Artigo NoSQL

on

  • 8,698 views

 

Statistics

Views

Total Views
8,698
Views on SlideShare
8,691
Embed Views
7

Actions

Likes
2
Downloads
489
Comments
0

2 Embeds 7

http://andre-l.blogspot.com 6
http://www.slideshare.net 1

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

Artigo NoSQL Artigo NoSQL Document Transcript

  • FACULDADE DE TECNOLOGIA DA PARAÍBAANÁLISE E DESENVOLVIMENTO DE SISTEMAS BANCO DE DADOS AVANÇADO THALLES RAMON PINHEIRO DE SOUSA ANDRÉ LUIZ DE SANTANA SILVA ROCHA NoSQL CABEDELO-PB NOVEMBRO/2010
  • THALLES RAMON PINHEIRO DE SOUSAANDRÉ LUIZ DE SANTANA SILVA ROCHA NoSQL Trabalho apresentado à disciplina de Banco de dados avançado sob a orientação da Prof. Renata Viegas para a obtenção de parte da nota do 2º estágio do período 2010.2. CABEDELO-PB NOVEMBRO/2010
  • NoSQL: Princípios e Características Thalles Ramon P. de Sousa, André Luiz de S. Silva Rocha Departamento de Sistemas - Faculdade de Tecnologia da Paraíba (FATECPB) João Pessoa – PB - Brasil thallesrps0@gmail.com, andreluiz@live.com Resumo. Este artigo visa abordar as principais características sobre o NoSQL, banco de dados não relacional que atualmente está em grande utilização e desenvolvimento. O NoSQL consiste em um banco de dados que utiliza a escalabilidade como seu ponto forte, aumentando assim sua capacidade de armazenamento de dados e velocidade. Grandes empresas mundiais já utilizam esta tecnologia, tais como Google, Twitter, Facebook.1. Informações GeraisCom o mundo cada vez mais informatizado e o crescente fluxo deinformações, os antigos Modelos Relacionais estão dando espaço a maisnova tecnologia desenvolvida para grandes empresas que necessitam de altacapacidade de armazenamento, o NoSQL. Antes de falarmos no NoSQL, precisamos saber o porque dodesenvolvimento desta tecnologia. A idéia principal dos projetistas doNoSQL é promover uma alternativa de alto armazenamento com velocidadee disponibilidade elevada. Algumas das grandes empresas de tecnologiaatualmente, investem no desenvolvimento dos seus próprios SGBDsbaseado na idéia NoSQL. O Google, por exemplo, investe desde 2004, no BigTable, umbanco de dados proprietário, desenvolvido para suprir as necessidades dearmazenamento da empresa, totalmente baseado na filosofia de altodesempenho, escalabilidade e disponibilidade. Existem vários SGBDsatualmente, no qual vamos abordar-los mais a frente, contanto um exemploimportante e famoso é o Cassandra, projetado para ser um sistema de altadisponibilidade e escalabilidade, foi desenvolvido pelo site derelacionamento Facebook, para lidar com seu grande fluxo de informações.Em 2010, o Cassandra se consolidou de vez, sendo utilizado comoalternativa pelo Twitter, ante o MySQL utilizado anteriormente[1].
  • 2. Por que “Not Only SQL”?O Termo NoSQL, foi utilizado pela primeira vez em 1998, por CarloStrozzi, como nome de seu SGBD, baseado no Modelo Relacional, seminterface SQL. [2] Not Only SQL é um termo genérico para uma classe definida debanco de dados que rompe uma longa história de banco de dados baseadosnos Modelos Relacionais. [3] Este tipo de banco de dados começou a ser desenvolvido parasuprir as necessidades de alto armazenamento, já discutidas neste artigoanteriormente. O NoSQL, está sendo tratado como o futuro do grandearmazenamento de informações, geradas todos os dias. A importância étanta, que as maiores empresas atualmente em tecnologia, já recorrem a esterecurso para o tratamento de suas informações, desenvolvendo a cada dia,novas soluções para auxiliar e incrementar o NoSQL. A idéia retirar as estruturas impostas aos SGBDs baseados noModelo Relacional, garante que o NoSQL, em ocasiões, visto comoretrocesso por alguns especialistas, armazene, busque, acelere e organize osdados de maneira objetiva, direta e livre sem nenhum relacionamento.3. BD Relacional x BD NoSQLOs bancos de dados relacionais, desde a década de 1970, revolucionaram omundo da tecnologia, com sua prática forma de armazenamento de dados.Por outro lado, o nosso mundo é ágil, prático e necessita de inovações. Aseguir, vamos discutir pontos positivos e negativos das duas tecnologias,com suas características marcantes, e onde é mais correto aplicar cada umdos casos. A diferença mais importante a ser discutida, é a do escalonamento,é nesse ponto onde o NoSQL contém suas principais vantagens, ante osSGBDs relacionais, pois o NoSQL foi criado nesse intuito, de melhorar aescalabilidade dos servidores. Os atuais bancos de dados relacionais são muito restritos emrelação à escalabilidade, pois utilizam escalonamento vertical nosservidores, quanto mais dados, mais espaço no servidor e memórianecessita. A diferença do NoSQL, é que utiliza escalonamento horizontal etem grande facilidade de distribuição do dados, ou seja, com um aumento
  • de dados, aumenta-se o numero de servidores, que podem ser ou no de altaperformance, barateando e otimizando o armazenamento. [2] Outra vantagem da utilização do escalonamento horizontal, é quecom a divisão dos dados em vários servidores, o volume dos dados porservidor é minimizado, pois, conjuntos de dados menores são mais fáceis deserem processados, armazenados ou gerenciados. [1] Os bancos de dados relacionais oferecem como seus pontos fortes,segurança das informações, controle de ocorrência, recuperação de falhas,otimização de consultas, alguns processos, tais como de validação,verificação e garantias. Estes bancos garantem plenamente a integridade dasinformações, pois utilizam a questão das entidades e relacionamentos,baseados no Modelo Relacional. Como outro ponto positivo, os bancos de dados relacionais têm aoseu favor a questão de já estarem no mercado em grande utilização há anos,creditando em seus usuários mais confiança e estabilidade. A seguir veremos uma tabela comparativa sobre as questões maisdiscutidas neste artigo, a escalabilidade, consistência e disponibilidade. BD Relacional BD NoSQL Escalabilidade Devido à estruturação É sem dúvida a do modelo, é possível, principal vantagem do mas complexo. NoSQL. Possui mais flexibilidade na inclusão de dados porá não possuir estrutura. Consistência Ponto forte do Modelo Não garante a Relacional. A regra de consistência da consistência presente informação, caso garante um maior rigor nenhuma informação à consistência das seja atualizada, informações. retornará a todos os pedintes o mesmo valor. Disponibilidade Este modelo não Outro ponto forte do suporta eficientemente BD NoSQL. Possui grande demanda, dado um alto grau de a dificuldade e distribuição de dados, distribuição de dados. e garante um maior
  • numero de solicitações. Tabela 1: Pontos Fundamentais: BD Relacionais x BD NoSQL. [1] Ao favor dos dois tipos de bancos de dados, está a possibilidadede serem multiusuários, garantindo que os usuários possam utilizarsimultaneamente da base de dados. Um fator importante, para o processo de escolha em utilização doNoSQL ou de um SGBD relacional, é a questão da disponibilidade doservidor. Se por exemplo, for uma aplicação web, que necessita dedisponibilidade imediata, o NoSQL leva vantagem, pois, com a divisão devários servidores, podendo os usuários acessarem os vários servidores ou nocaso de queda de um deles, o sistema não será totalmente prejudicado. Casonão seja necessária uma disponibilidade tão imediata, o indicado será algumSGBD relacional. As principais características do NoSQL que serão discutidasposteriormente se caracterizam por: escalabilidade horizontal, altadisponibilidade, menor tempo de busca/resposta e paralelismo deatualização de dados. A seguir, conforme ilustrado na Tabela 1, uma breve comparaçãoentre os banco de dados relacionais e os NoSQL. Banco de Dados Relacionais Banco de Dados NoSQL O que é: O que é: Baseia-se no conceito de entidade e Uma solução alternativa para relacionamento, no qual, todos os os bancos de dados dados são guardados em tabelas. Os relacionais. Possuem uma dados são separados de forma única alta escalabilidade, tentando diminuir ao máximo a disponibilidade, desempenho redundância. Pois a informação é e menor tempo de resposta a criada pelo conjunto dos dados, consultas. onde são as relações entre as tabelas que fazem esse serviço. Características: tabelas, esquema Características: registros, definido, hierarquia, redundância schema-free, tolerância a mínima, entidade e relacionamento, falha, escalabilidade, formas normais, transações ACID clusterização, mapreduce, (Atomicidade, Consistência, sharding. Isolamento, Durabilidade). Necessidades: Sistemas locais, Necessidades: Sistemas em
  • sistemas financeiros, sistemas nuvem, análises sociais, altacorporativos, segurança da escalabilidade, performanceinformação, consistência dos dados. na consulta/escrita, replicação.SGBDs: DB2, Firebird, InterBase, SGBDs: Cassandra,Microsoft SQL Server, MySQL, Oracle, BigTable, MongoDB,PostgreSQL. CouchDB, Dynamo.Algumas Empresas: SAP, Algumas Empresas: Twitter,OpenERP, Previdência Social, Caixa, Itaú, Facebook, Digg, Amazon,Salesforce, Vale. LinkedIN, Google, Yahoo, The New York Times, Bit.ly, eBay.Tabela 2: Comparação entre Banco de Dados Relacionais e Banco de Dados NoSQL. [2]4. Características NoSQL4.1 Escalabilidade Horizontal (scale out) significa adicionar mais nós aosistema, tais como adicionar um novo servidor e um sistema de softwareque permita a distribuição do trabalho entre múltiplas máquinas. [4]4.2 Replicação – Escalar por duplicação de informaçõesConsiste na copia das informações em mais de um banco para aumentarnossa capacidade de recuperar estas informações. Podemos dividir em duas“arquiteturas” principais:  Master-Slave: Cada escrita em banco resulta em X escritas onde X é o número de slaves. Neste caso temos um banco “Master” que propaga cada write para os bancos “slaves”. Isto aumenta a nossa velocidade de leitura, mas não melhora a capacidade de escrita.  Multi-Master: Aumentamos o número de Masters em nosso sistema e assim aumentamos nossa capacidade de escrita.4.3 Schema-free: Um dos fatores que contribuem para um banco de dadosNoSQL escalar é por causa da ausência de um schema (schema free). Todosos novos bancos tem em comum que eles são key-value stores, ou sejasalvam, como o nome sugere, um conjunto de entradas formadas por umachave associada a um valor e o valor poderia ser de qualquer tipo, umbinário ou string que está sendo salvo de forma desnormalizada (schema-free).4.4 Clusterização: Basicamente compreende um banco de dadosarmazenado e gerenciado por mais de um servidor, provê uma altadisponibilidade e um alto desempenho do sistema. Assim, a organização sebeneficia diminuindo o tempo de inoperabilidade do banco de dados. Esse
  • processo vem como uma solução para reduzir gastos com estrutura dehardware. [8]4.5 Mapreduce: É um algoritmo, patenteado pela Google paragerenciamento em larga escala. [7] Existem duas fases: Map: O nó principal recebe os dados, divide e partes menores e as envia aos outros nós para serem processados. Ao final do processamento estes nós devolvem o resultado ao nó principal. Reduce: O nó principal combina as respostas obtidas pelos outros nós gerando o resultado final do processamento.4.6 Sharding: Consiste em dividir os dados horizontalmente, ou seja,quebrar as tabelas, diminuindo o seu número de linhas e separando-as emambientes diferentes. Neste ponto todos os dados de uma partição nãodevem conter referências aos dados de outras partições, sendo que os dadosem comum deverão ser replicados entre as bases. [7]5. Classificação dos Bancos de dados NoSQL5.1 Sistemas baseados em armazenamento chave-valorBaseia-se numa coleção de chaves únicas e de valores, os quais são associadoscom as chaves.Exemplo: Dynamo5.2 Sistemas orientados a documentosOs documentos são as unidades básicas de armazenamento e estes nãoutilizam qualquer tipo de estruturação pré-definida, como é o caso das tabelasdo modelo relacional.Exemplo:CouchDB -> Um documento no CouchDB é um objeto que possui umidentificador único e que consiste de certos campos. Esse documento segue oformato JSON (Java Script Object Notation), padrão que visa a fácillegibilidade e independência da linguagem. Desenvolvido em 2008, ofereceAPI estilo REST para documentos centrados em operações CRUD (create,retrieve, update, delete). Ele pode fazer retorno baseado em valores-chave eoperar com Hadoop Map-Reduce para pesquisas não-triviais. Também épossível gerar visões usando funções Java-Script. Criar uma visão pode serexaustivo, mas os retornos subseqüentes com a visão podem ser mais
  • rápidos. Suporta replicação multimaster e distribuição de dados por múltiplasinstâncias; usa a ferramenta SpiderMonkey JavaScript, tornando-o apropriadopara aplicativos Web, como Erlang, HTTP, JavaScript, PHP, Python e Ruby.5.3 Sistemas orientados a colunasMudou-se de orientação a registro para orientação a colunas (tributos).Exemplo: Cassandra, BigTable.5.4 Sistemas baseados em grafosOs dados são armazenados em nós de um grafo cujas arestas representam otipo de associação entre esses nós.Exemplo:Neo4J -> Depois de muitos anos de desenvolvimento, a NeoTechnologylançou a versão 1.0 do Neo4j, um banco de dados em forma de grafo feito emJava. A InfoQ falou com o COO da NeoTechnology Peter Neubauer paraentender melhor o novo lançamento do NEo4j e o que ele traz de novo para osdesenvolvedores. [6]O Neo4j kernel JAR, que tem cerca de 440k, está disponível sobre as licençasAGPLv3 e sobre uma licença comercial, com a última deve ser utilizadaapenas para aplicação com código fechado. As informações salvas no Neo4jsão representadas usando três pilares: Nó: Possui o mesmo conceito de uma instância de um objeto, e possui um ID único. Relacionamento (arestas) - Fornece uma ligação entre dois nós, ambos os nós possuem uma direção e um tipo de relacionamento. Propriedade (atributo) - São pares de String key/Objeto valor que podem existir tanto em um nó quanto em um relacionamento. [6]Comparado com os bancos de dados relacionais, os bancos de dados em formade grafos tendem a serem melhores quando temos um grande volume decomplexidade, estruturas de dados com baixo acoplamento que mudam esofrem frequentes consultas - em um modelo relacional queries complexaspodem gerar um grande número de joins, o que pode causar problemas deperformance. Neubauer explica esse problema com mais detalhes, dizendo:
  • O Neo4j vem solucionar o problema de queda de performance entre queriesque envolvem muitos joins em um RDBMS. Através da representação dedados utilizando grafos, o Neo4j consegue navegar entre os nós e osrelacionamentos com uma velocidade constante, independente da quantidadede dados que constituem o grafo. “Isso nos trás alguns outros efeitos comoalgoritmos de grafos muito rápidos, sistema de recomendação e um estiloOLAP de análise o que atualmente não é possível com configuração normaisde um RDBMS”. [6]6. SGBDs NoSQLCom a necessidade do NoSQL, grandes empresas começaram a desenvolverseus próprios SGBDs baseados na filosofia NoSQL. A seguir, vamos listaralguns exemplos importantes, e definir algumas características.Apache Cassandra Desenvolvido inicialmente pelo site de relacionamento Facebook, éum projeto de sistema de banco de dados distribuído, altamente escalável, quefoi desenvolvido na plataforma Java, reuni a arquitetura do Dynamo, daAmazon e o modelo de dados do BigTable, do Google. O Cassandra exercecom excelência a função de repositório de dados. Teve seu código-fonte abertoà comunidade em 2008. Agora é mantido por desenvolvedores da fundaçãoApache e colaboradores de outras empresas.BigTable Foi desenvolvido pelo Google, para distribuir dados por centenas deservidores e escalar por conjuntos de dados de até 1 petabyte. Uma grandevariedade de aplicativos da empresa usa o Bigtable, incluindo índices Web,Google Earth, Maps, Blogger, Youtube e Gmail. O BigTable é proprietário,mas o modelo de dados existe em implementações de código aberto. Ele podeser usado como input ou output para o MapReduce, que ativa o processo dedistribuição de arquivos ou banco de dados usando funções de mapeamento eredução.Dynamo Desenvolvido pela Amazon em 2007, foi criado para oferecerarmazenamento de valores-chaves de dados de alta disponibilidade,permitindo atualizações para sobreviver às falhas de servidor e rede.
  • Apache CouchDB É um banco de dados orientado a documentos e de código fonteaberto escrito na linguagem Erlang. Foi desenvolvido e mantido pelaFundação Apache e busca replicação e escalabilidade horizontal.MongoDB É um banco de dados não relacional que combina as melhoresfuncionalidades de orientação a documentos, hashes e RDBMSs. É um bancode dados orientado a documentos, escalável, livre de esquema, de altodesempenho e código aberto escrito em C++.7. Principais Empresas UtilizadorasGrandes empresas hoje utilizam o NoSQL em grande parte dos seussistemas, tais como as gigantes da tecnologia, Google, Amazon, Yahoo,eBay. Outras grandes empresas que contam com grande fluxo deinformações utilizam esta tecnologia, Facebook, Twitter, The New YorkTimes são alguns exemplos. Abaixo, vamos descrever as principaiscaracterísticas destas empresas.Google Inc.: “É uma multinacional estadunidense de computação emnuvem pública, buscador na Internet e uma corporação de tecnologias depublicidade. O Google hospeda e desenvolve uma série de serviços eprodutos baseados na Internet e gera lucro principalmente através dapublicidade pelo seu programa AdWords. A missão declarada da empresadesde o início foi "organizar a informação mundial e torná-launiversalmente acessível e útil". Em 2006, a empresa mudou-se para suaatual sede, em Mountain View, Califórnia.” [5]Amazon: “É uma empresa de comércio eletrônico dos Estados Unidos daAmérica com sede em Seattle, estado de Washington. Foi uma dasprimeiras companhias com alguma relevância a vender produtos naInternet. Amazon inclui, igualmente, a Alexa Internet, a9.com, e a InternetMovie Database (IMDb).” [5]Yahoo! Inc.: “É uma empresa norte-americana de serviços de Internet coma missão de ser "o serviço de Internet global mais essencial paraconsumidores e negócios". Opera um portal de Internet, um diretório web, eoutros serviços, incluindo o popular Yahoo! Mail. Foi fundado por David
  • Filo e Jerry Yang, formandos da Universidade de Stanford em janeiro de1994 e incorporado no dia 2 de março de 1995. A sede da empresa é emSunnyvale, Califórnia. Enquanto a popularidade do Yahoo! crescia, novosserviços iam surgindo, tornando o Yahoo! uma parada obrigatória paratodas novas tendências da Internet. Estes incluem: o Yahoo! Messenger, ummensageiro instantâneo, o Yahoo! Groups, serviço muito popular de criaçãode mailing lists por assunto de interesse, bate-papo e jogos online, váriosportais de notícias e informação, compras online e leilões.” [5]eBay: “É uma empresa de comércio eletrônico fundada nos Estados Unidos,em Setembro de 1995, por Pierre Omydiar. Atualmente é o maior site domundo para a venda e compra de bens, é o mais popular shopping dainternet, e possivelmente foi a pioneira neste tipo de trabalho. O eBaypossuía mais de 181 milhões de membros registrados em todo do mundo aofim de 2005. O eBay tem por finalidade fornecer uma plataforma global denegociações, onde qualquer pessoa pode negociar qualquer coisa. Em 2005,o eBay gerou mais de 21 bilhões de dólares em mercadoriastransacionadas.” [5]Facebook: “É uma rede social lançada em 4 de fevereiro de 2004. Foifundado por Mark Zuckerberg, um ex-estudante de Harvard. Inicialmente, aadesão ao Facebook era restrita apenas aos estudantes da UniversidadeHarvard. Ela foi expandida ao Instituto de Tecnologia de Massachusetts(MIT), à Universidade de Boston, ao Boston College e a todas as escolasIvy League dentro de dois meses. Desde 11 de setembro de 2006, apenasusuários com 13 anos de idade ou mais podem ingressar.” [5]Twitter: “É uma rede social e servidor para microblogging, criado em 2006por Jack Dorsey, que permite aos usuários enviar e receber atualizaçõespessoais de outros contatos em textos de até 140 caracteres, conhecidoscomo "tweets", por meio do website do serviço, por SMS e por softwaresespecíficos de gerenciamento. As atualizações são exibidas no perfil de umusuário em tempo real e também enviada a outros usuários seguidores quetenham assinado para recebê-las.” [5]
  • Referências [1] Ricardo W. Brito, “Banco de Dados NoSQL x SGBDs Relacionais: Análise Comparativa”• [2] Jean Carlo Nascimento aka Suissa, “Introdução ao NoSQL” http://www.nosqlbr.com.br/introducao-ao-nosql.html• [3] Wikipédia, “NoSQL” http://pt.wikipedia.org/wiki/NoSQL• [4] Edmar Ferreira, “Escolhendo entre escalabilidade horizontal e escalabilidade vertical”. http://escalabilidade.com/2010/09/21/escolhendo-entre-escalabilidade- horizontal-e-escalabilidade-vertical/• [5] Wikipédia, http://pt.wikipedia.org/wiki• [6] Michel Hunger, “Neo4j – Base de Dados NoSQL baseada em Java”• [7] Edmar Ferreira, “Introdução ao NoSQL parte II” http://escalabilidade.com/2010/04/06/introducao-ao-nosql-parte-ii/• [8] InfoWester “Cluster: Principais Conceitos”, http://www.infowester.com/cluster.php