Avaliação NOSQL para indexação do Twitter

98
UNIVERSIDADE DE CAXIAS DO SUL CENTRO DE COMPUTAÇÃO E TECNOLOGIA DA INFORMAÇÃO BACHARELADO EM SISTEMAS DA INFORMAÇÃO AVALIAÇÃO NOSQL PARA INDEXAÇÃO DE DADOS CALIEL LIMA DA COSTA CAXIAS DO SUL 2012

description

A Gestão do Conhecimento, através de suas técnicas e ferramentas, busca ajudar as empresas a aprender e inovar para atingir melhores resultados e serem mais eficientes no mercado. No entanto, essas mesmas empresas possuem cada vez mais informações internas e externas disponíveis e, muitas vezes, essas diversas informações (dados relacionais, e-mails, vídeos, imagens, etc.) precisam ser analisadas em um intervalo curto de tempo. Esse cenário é denominado Big Data. Os bancos de dados relacionais podem não estar preparados para suprir as necessidades desse cenário. Conforme o volume de dados aumenta, a capacidade de processamento do servidor também deve aumentar para continuar atendendo aplicações e usuários, necessitando de investimentos crescentes em infraestrutura. Para atender a essas necessidades surgiu um novo paradigma de banco de dados chamado NoSQL. O modelo de dados deixa de ser relacional e passa a ser representado como objetos, documentos ou grafos, e a arquitetura do sistema é voltada para múltiplos servidores, propiciando fácil escalabilidade e alta disponibilidade. O trabalho apresenta todo este contexto e caracteriza os principais sistemas de bancos de dados existentes no mercado. Ele tem como objetivo avaliar a utilização de um banco de dados NoSQL para a indexação de mensagens do Twitter selecionadas através de uma Taxonomia.

Transcript of Avaliação NOSQL para indexação do Twitter

  • 1. UNIVERSIDADE DE CAXIAS DO SULCENTRO DE COMPUTAO E TECNOLOGIA DA INFORMAO BACHARELADO EM SISTEMAS DA INFORMAO AVALIAO NOSQL PARA INDEXAO DE DADOS CALIEL LIMA DA COSTA CAXIAS DO SUL 2012
  • 2. CALIEL LIMA DA COSTAAVALIAO NOSQL PARA INDEXAO DE DADOS TRABALHO DE CONCLUSO DE CURSO DE SISTEMAS DE INFORMAO, COMO REQUISITO PARCIAL PARA OBTENO DO TTULO DE BACHAREL. ORIENTADORA: PROF. DR. HELENA GRAZIOTTIN RIBEIRO CAXIAS DO SUL 2012
  • 3. It is a very sad thing that nowadays there is so little useless information Oscar Wilde (1854-1900)A ideia de que algo to organicamente diverso e dinamicamente produtivoquanto o conhecimento humano possa ser gerenciado, no sentido comum dapalavra, traz em seu bojo um erro fatal. A forma mais segura de inibir odesenvolvimento de fenmenos espontneos tentar gerenci-los. Gestopressupe impor algum tipo de ordem sobre o conhecimento exatamente oque no se deve fazer. O que podemos, e devemos, fazer gerenciar ascircunstncias em que o conhecimento pode prosperar. Em outras palavras,a ideia seria gerenciar culturas de conhecimento. Karl Albrecht, 2004
  • 4. RESUMO A Gesto do Conhecimento, atravs de suas tcnicas e ferramentas, busca ajudar asempresas a aprender e inovar para atingir melhores resultados e serem mais eficientes nomercado. No entanto, essas mesmas empresas possuem cada vez mais informaes internas eexternas disponveis e, muitas vezes, essas diversas informaes (dados relacionais, e-mails,vdeos, imagens, etc.) precisam ser analisadas em um intervalo curto de tempo. Esse cenrio denominado Big Data. Os bancos de dados relacionais podem no estar preparados para suprir asnecessidades desse cenrio. Conforme o volume de dados aumenta, a capacidade deprocessamento do servidor tambm deve aumentar para continuar atendendo aplicaes eusurios, necessitando de investimentos crescentes em infraestrutura. Para atender a essasnecessidades surgiu um novo paradigma de banco de dados chamado NoSQL. O modelo dedados deixa de ser relacional e passa a ser representado como objetos, documentos ou grafos,e a arquitetura do sistema voltada para mltiplos servidores, propiciando fcil escalabilidadee alta disponibilidade. O trabalho apresenta todo este contexto e caracteriza os principais sistemas de bancosde dados existentes no mercado. Ele tem como objetivo avaliar a utilizao de um banco dedados NoSQL para a indexao de mensagens do Twitter selecionadas atravs de umaTaxonomia. Palavras-Chave: Gesto do Conhecimento, Taxonomia, Redes Sociais, Twitter,SGBD, Banco de dados, NoSQL, Modelo Relacional, Big Data, Amazon, DynamoDB, AWS.
  • 5. ABSTRACT Knowledge Management, through its tools and techniques, seeks to help companiesinto learn and innovate to achieve better results be more efficient on the market. Yet, thesesame companies have increasingly internal and external information available and often thesevarious information (relational databases, emails, videos, images, etc.) Need to be analyzed ina short interval. This scenario is called Big Data. The relational database may not be prepared to meet the needs of this scenario. As thevolume of data increases, the processing capacity of the server must also increase to continueto meet users and applications, requiring increased investment in infrastructure. To meet theseneeds emerged a new paradigm of database called NoSQL. The data model ceases to berelational and shall be represented as objects, documents or graphs, and the systemarchitecture is focused on multiple servers, providing easy scalability and high availability. The aims to evaluate the use of a NoSQL database for indexing Twitter messagesselected through a taxonomy. Keywords: Knowledge Management, Taxonomy, Social Network, Twitter, SGBD,Data Base, NoSQL, Relational Model, Amazon, DynamoDB, AWS. Titulo em Ingls: NoSQL evaluation to index data.
  • 6. LISTA DE FIGURASFigura 1: Classificao Brasileira de Ocupaes ..................................................................... 21Figura 2: Escalonamento .......................................................................................................... 29Figura 6: Particionamento e Replicao de dados .................................................................... 47Figura 7: Versionamento de registros ....................................................................................... 48Figura 8: Leitura e gravao no BD ......................................................................................... 51Figura 3: Taxonomia de Redes Sociais .................................................................................... 54Figura 4: Taxonomia de Gesto do Conhecimento .................................................................. 54Figura 5: Taxonomia Tcnica ................................................................................................... 55Figura 9: REST API do Twitter................................................................................................ 56Figura 10: Streaming API do Twitter ....................................................................................... 57Figura 11: Modelo Conceitual .................................................................................................. 59Figura 12: Primeira verso das tabelas ..................................................................................... 59Figura 13: Segunda verso das tabelas ..................................................................................... 60Figura 14: Terceira verso das tabelas ..................................................................................... 60Figura 15: Ciclo de vida SCRUM ............................................................................................ 63Figura 16: Acunote ................................................................................................................... 64Figura 17: Interface do site de consulta .................................................................................... 68Figura 18: Camadas do projeto ................................................................................................. 69
  • 7. LISTA DE GRFICOSGrfico 1: Distribuio da importao ..................................................................................... 72Grfico 2: Unidades de gravao em Message e Message_by_Created .................................. 80Grfico 3: Unidades de gravao em Message_By_Tag e Message_by_TagCreated ............. 80Grfico 4: Tempo mximo de resposta da gravao na tabela Message .................................. 81Grfico 5: Tempo mnimo de reposta da gravao na tabela Message .................................... 81
  • 8. LISTA DE TABELASTabela 1: Resumo dos bancos de dados ................................................................................... 43Tabela 2: Site oficial dos produtos ........................................................................................... 44Tabela 3: Tcnicas de implementao ...................................................................................... 45Tabela 4: Gravao de registros ............................................................................................... 62Tabela 5: Anlise de Mensagens .............................................................................................. 73
  • 9. LISTA DE ABREVIATURAS E SIGLASACID Atomicidade, Consistncia, Isolamento, DurabilidadeANSI American National Standards InstituteAPI Application Programming InterfaceBASE Disponibilidade bsica, Estado leve e Consistncia eventualBD Banco de DadosBI Bussiness InteligenceBSON Binary JSONCAP Consistncia, Disponibilidade e Tolerncia partioCBO Classificao Brasileira de OcupaesDBA Database administratorDBMS Database Management SystemDBRef Database ReferenceDER Diagrama Entidade-RelacionamentoDSK Software development kitFK Foreign KeyGC Gesto do ConhecimentoGFS Google File SystemHDFS Hadoop Distributed File SystemHK Hash KeyHQL Hypertable Query LangueISO International Standards OrganizationJSON JavaScript Object NotationtMVCC Multiversion Concurrency Control
  • 10. NoSQL No Apenas SQLOLAP Sistemas de Processamento AnalticoOLTP Sistemas de Processamento TransacionaisPK Primary KeyRDBMS Relational Database Management SystemsREST Representation State TransferRK Range KeySGBD Sistemas de Gerncia de Banco de DadosSNS Social Network SiteSQL Linguagem de Consulta EstruturadaSSD Solid State DisksTDD Test Driven DevelopmentUTC Universal Time CoordinatedXP Extreme Programming
  • 11. SUMRIO1 INTRODUO .............................................................................................. 141.1 Objetivo ........................................................................................................... 151.2 Organizao do Documento .......................................................................... 152 REDES SOCIAIS E GESTO DO CONHECIMENTO............................ 162.1 Redes Sociais ................................................................................................... 162.2 Twitter ............................................................................................................. 172.3 Gesto do Conhecimento ............................................................................... 182.4 Taxonomia e Folksonomia ............................................................................. 193 BANCO DE DADOS ...................................................................................... 223.1 Modelo Relacional .......................................................................................... 233.2 NoSQL ............................................................................................................. 243.2.1 Big Data ........................................................................................................... 253.2.2 O Movimento NoSQL ....................................................................................... 273.2.3 Tcnicas de Implementao ............................................................................. 293.3 Categorias de NoSQL ..................................................................................... 303.3.1 Chave-valor (key-value) ................................................................................... 303.3.2 Orientado a Colunas ........................................................................................ 343.3.3 Orientado a Documentos.................................................................................. 383.3.4 Orientado a Grafos .......................................................................................... 413.3.5 Comparativo entre os Bancos .......................................................................... 424 BANCO DE DADOS DYNAMO................................................................... 454.1 Desenho da Soluo ........................................................................................ 454.2 Particionamento e Replicao ....................................................................... 46
  • 12. 4.3 Versionamento dos Dados.............................................................................. 474.4 O produto Amazon DynamoDB .................................................................... 494.4.1 Operaes de Banco de Dados ........................................................................ 504.4.2 Consultas .......................................................................................................... 525 DESENVOLVIMENTO ................................................................................ 535.1 Taxonomia ....................................................................................................... 535.2 Integrao com o Twitter............................................................................... 565.3 Modelo de Dados ............................................................................................ 585.4 Metodologia de Desenvolvimento.................................................................. 635.5 Projeto de Desenvolvimento .......................................................................... 655.5.1 Marvin .............................................................................................................. 655.5.2 Telescreen ......................................................................................................... 665.5.3 Camadas ........................................................................................................... 696 CONCLUSO ................................................................................................ 716.1 Anlise das Informaes Encontradas no Twitter ...................................... 716.2 Performance do Amazon DynamoDB .......................................................... 796.3 Desenvolvimento com Amazon DynamoDB................................................. 826.4 Trabalhos Futuros .......................................................................................... 83REFERNCIAS BIBLIOGRFICAS ....................................................................... 85
  • 13. 141 INTRODUO Todos os dias so produzidos 2,5 quintilhes de bytes de informaes (IBM, [21--]),sendo assim 90% dos dados no mundo foram criados nos ltimos dois anos e, segundo arevista The Economist (THE ECONOMIST, 2010), somente 5% da informao criada estruturada, constituda de nmeros e palavras organizadas que podem ser lidas peloscomputadores. Essa situao est mudando com aumento das marcas (tags do ingls) em textos,vdeos e imagens. Em 1998 foi utilizado o termo NoSQL para um banco de dados relacional que omitiuo uso da linguagem SQL. Posteriormente em 2009 foi utilizado novamente em umaconferncia em So Francisco por defensores de um modelo no relacional (STRAUCH,2011). Atualmente, o termo NoSQL, que significa Not only SQL ou No apenas SQL emportugus (LSCIO, DE OLIVEIRA e PONTES, 2011), utilizado para solucionar asquestes de escalabilidade no armazenamento e processamento de grandes volumes de dados(DE DIANA e GEROSA, 2010). Aps a adoo com sucesso pelo Google, Amazon, Facebook e Twitter de umainfraestrutura NoSQL, outras empresas tambm vem migrando para a plataforma. No inciodo ano de 2012, um site de streaming de vdeo com mais de 100 milhes de visualizaes depginas dirias e picos de mais de 300 mil consultas por segundo, anunciou a utilizao deNoSQL como a principal tecnologia de banco de dados (BD) nesse contexto. Em uma pesquisa realizada com 325 gerentes de TI aproximadamente 100 delesassumiram que esto realizando anlises avanadas para inteligncia de negcios, anlisepreditiva, prospeco de dados e tarefas de anlise estatstica (VIJAYAN, 2011). Em outrapesquisa realizada pela Couchbase com 1300 desenvolvedores, arquitetos de software eadministradores de TI, 50% deles iniciaram projetos com NoSQL em 2011 e 70% dasempresas com mais de 250 desenvolvedores planejam iniciar um projeto em 2012 (ABEL,2012). O mercado NoSQL est em evoluo e as plataformas no esto consolidadas, mas asua utilizao tem reduzido o custo de armazenamento e processamento, podendo ser uma
  • 14. 15grande oportunidade para as corporaes obterem conhecimentos estratgicos para a tomadade deciso.1.1 Objetivo O objetivo avaliar a utilizao de um banco de dados NoSQL para a indexao demensagens do Twitter selecionadas atravs de uma Taxonomia.1.2 Organizao do Documento Este trabalho est estruturado em captulos conforme segue: a) Redes Sociais e Gesto do Conhecimento: Apresenta-se a definio de redes sociais, o contexto do Twitter e o conceito de Gesto do Conhecimento. b) Banco de Dados: Neste captulo os bancos de dados em especial o modelo relacional conceituado, apresentao sobre as origens do NoSQL e os principais bancos disponveis no mercado segundo suas categorias.
  • 15. 162 BANCO DE DADOS DYNAMO O Dynamo foi apresentado em 2007 baseado nos seguintes requisitos e pressupostos : a) Modelo de consulta: operaes de leitura e escrita de dados identificados por uma chave, no permitindo operaes em mltiplos registros e nem esquema relacional. b) Propriedade ACID: experincias na Amazon mostraram que para prover as caractersticas ACID necessrio ter uma baixa disponibilidade, no entanto a disponibilidade um dos requisitos principais do SGBD. Sendo assim, o objetivo era diminuir a consistncia se isso trouxesse maior disponibilidade. c) Eficincia: o sistema deve funcionar em uma infraestrutura formada por hardware de baixo custo. d) Uso Interno: somente utilizado na infraestrutura interna da Amazon, onde o ambiente considerado seguro no necessitando de autenticao e autorizao. e) Escalabilidade Incremental: o sistema deve ser capaz de aumentar o processamento horizontalmente no menor tempo possvel na operao e nos sistemas adjacentes. f) Simtrico: cada nodo da infraestrutura tem as mesmas responsabilidades, no existindo nodos com funes ou responsabilidades distintas. g) Descentralizao: alm de simtrico, a descentralizao peer-to-peer deve ser utilizada ao invs de controle centralizado. h) Heterogenia: o sistema deve ser capaz de explorar melhor a heterogenia da infraestrutura, ou seja, o processamento do nodo deve ser proporcional s suas capacidades.2.1 Desenho da Soluo Para que o Dynamo possa ser particionado, replicado, versionado e escalvel, foramutilizadas algumas tcnicas que so listadas na Tabela 3: Tcnicas de implementao. Tabela 3: Tcnicas de implementaoProblema Tcnica VantagensParticionamento Consistent Hashing Escalabilidade incremental
  • 16. 17Alta disponibilidade na Vector clocks com reconciliao O tamanho da verso estgravao na leitura dissociado da taxa de utilizaoRecuperao de falhas Antientropia utilizando rvores Sincronizao de rplicas empermanentes Merkle background Mantm a simetria e evita um Protocolo Gossip-basedScios e deteco de falhas registro centralizado de membership informaes Fonte: Tabela baseada em resumo disponvel em DeCandia, et al. .2.2 Particionamento e Replicao Para realizar o particionamento dos dados utilizada a tcnica de consistent hashingonde a funo hash tratada como um espao circular fechado ou anel. A cada nodo atribudo um valor aleatrio que representa a sua posio no anel. Para cada chave de valor calculado o valor do hash que corresponde a uma posio no anel. Com base nesta posio, oanel percorrido no sentido horrio at encontrar a primeira posio maior que a calculada,sendo assim cada n responsvel pela regio no anel entre o seu predecessor e ele mesmo (oprocesso pode ser visto na Figura 3). A verso padro de consistent hashing apresenta dois problemas: a) A distribuio aleatria de ns gera uma distribuio no uniforme de dados e processamento. b) O algoritmo feito para um ambiente homogneo de ns. Para resolver esses problemas foi utilizada uma variao do algoritmo que utiliza oconceito de ns virtuais. Cada n fsico pode gerar mltiplos ns virtuais (de acordo com acapacidade do servidor), que so mapeados no anel.
  • 17. 18 Figura 3: Particionamento e Replicao de dados O processo seguinte a replicao dos dados em mltiplos servidores, partefundamental para atingir alta disponibilidade e durabilidade. Aps identificar o n dearmazenamento (conforme visto na etapa de particionamento) o dado armazenadolocalmente e o a operao confirmada ao programa chamador. Assincronamente esteservidor realiza a atualizao do dado em ns que esto ao seu alcance, no exemplo da Figura3 estes ns so o C e D. Para evitar falhas de hardware, a replicao no pode ocorrer em ns virtuaispertencentes ao mesmo servidor fsico.2.3 Versionamento dos Dados O Dynamo um sistema de consistncia eventual, ou seja, a operao dada comoterminada aps atualizar o dado no n coordenador. As atualizaes das rplicas so feitas deforma assncrona. Neste cenrio pode acontecer de uma nova requisio de leitura retornar ovalor anterior a ltima atualizao. Para prevenir problemas de divergncia de cada alterao num registro, gera-se umanova verso imutvel do dado, permitindo que mltiplas verses do dado existam ao mesmotempo. Na maioria das vezes, as novas verses se sobrepem automaticamente a verses
  • 18. 19anteriores, porm, quando existem mltiplas verses paralelas do registro, o sistema noconsegue resolver o conflito, sendo necessrio realizar a unio entre os dois registros. Para o controle do versionamento de cada registro utilizada a tcnica de vectorclocks. Cada verso do registro recebe uma lista de tuplas (vector clocks), atravs dacomparao de dois clocks possvel determinar a ordem entre os registros ou se houve umaramificao entre eles. A Figura 4 apresenta um exemplo onde pode ser analisada a ramificao de umregistro. Nela um determinado registro alterado pelo o usurio Sx gerando a verso D1, emseguida o mesmo usurio altera o registro criando a verso D2. A ramificao ocorre quandoos usurios Sy e Sz realizam a alterao no mesmo momento, criando duas verses distintasD3 e D4, respectivamente. No passo final, quando o usurio Sx vai realizar uma novaalterao, precisa realizar a reconciliao entre as verses criando a verso D5. Os valores apresentados entre parmetros representam o vector clock, apresentandoqual foi o caminho que a verso percorreu. Figura 4: Versionamento de registros
  • 19. 202.4 O produto Amazon DynamoDB O Amazon DynamoDB foi lanado como produto em 18 de janeiro de 2012 e oresultado de 15 anos de aprendizado nas reas de banco de dados no relacionais em largaescala e servios em nuvem. O Amazon DynamoDB foi baseado no Dynamo que tambmserviu de base para outros bancos de dados. O Dynamo foi originalmente desenhado para serutilizado nas operaes chaves de e-commerce da Amazon, como o carrinho de compras e oservio de seo. Com base nisso, o Amazon DynamoDB um banco de dados NoSQL quer fornecerapidez e performance, alm de ser totalmente gerenciado pelo administrator. Eleautomaticamente distribui os dados e o trfego das tabelas a um nmero de servidores queseja capaz de lidar com as requisies dos clientes. Os dados so armazenados em discosSolid State Disks (SSD) e so automaticamente replicados atravs de mltiplas regies paraprover alta disponibilidade e durabilidade . O DynamoDB possui as seguintes caractersticas: a) Provisionamento de transferncia: Durante a criao ou edio da tabela, a capacidade de requisio desejada pode ser especificada. O SGBD se encarrega de alocar os recursos necessrios para garantir a capacidade especificada. O provisionamento feito atravs da quantidade de unidades de 1KB que se deseja gravar ou ler. b) Escalabilidade de armazenamento: No existe um limite de quantidade de dados armazenados. O servio automaticamente aloca mais espao quando necessrio. c) Distribuio Total: O escalonamento horizontal e automatizado replica a mesma tabela em vrios servidores. d) Construdo prova de falhas: O processo automtico e assncrono de replicao de dados atravs de mltiplos servidores espalhados em diferentes regies garante, alm de alta disponibilidade, tambm a proteo dos dados contra falhas individuais ou coletivas de hardware. e) Consistncia forte e contadores atmicos: Diferente de outros BD no relacionais, o DynamoDB facilita o desenvolvimento para garantir a consistncia forte durante a leitura, retornando sempre o ltimo valor do registro. Alm disso, a API fornece chamadas para incremento e decremento de contadores de forma atmica.
  • 20. 21 f) Flexibilidade: O BD no possui um esquema fixo de dados, o que significa que cada registro de uma tabela pode ter um nmero diferente de atributos e de tipos de dados.2.4.1 Operaes de Banco de Dados A API fornece as operaes de criao, atualizao e excluso de tabelas. Aatualizao da tabela permite o aumento ou diminuio do provisionamento de transferncia.Cada tabela formada por uma chave nica (campo Hash Key) e pode ou no ter umavariao (campo Range Key). O contedo de um atributo pode ser: nmero, literal, conjuntode nmeros ou conjunto de literais. O tamanho em bytes de cada registro definido pelosomatrio do tamanho dos nomes dos campos mais o tamanho binrio dos dados. Tambm so fornecidos mtodos para adicionar, atualizar e excluir registros dastabelas. Durante a atualizao de itens possvel modificar valores e adicionar ou removercolunas. Para otimizar as buscas, pode ser utilizada uma operao de retorno de um oumltiplos items atravs de sua chave primria, inclusive em mltiplas tabelas.2.4.1.1 Leitura e consistncia O SGBD mantm mltiplas cpias de cada item para garantir durabilidade, para queisso acontea aps uma operao de alterao de dados necessrio que o dado seja gravadoem mltiplos servidores, o que demora algum tempo. Essa demora faz com que o dado fiquetemporariamente inconsistente, ou seja, caso uma leitura seja feita imediatamente o valorantigo pode ser retornado. Essa a forma padro de leitura. Mas em alguns casos, necessrio utilizar uma leitura consistente, para isso o DynamoDB retorna o mais recente quereflita todas as operaes de escrita. Essa forma de leitura mais suscetvel lentido da rede.
  • 21. 222.4.1.2 Controle de Concorrncia Em um ambiente multiusurio, em alguns casos, necessrio garantir que aatualizao de um usurio no afete a gravao de outro. Para isso, o DynamoDB suporta aescrita condicional, que nada mais do que a verificao de valor gravado antes de realizar agravao de um novo valor. Para contadores de valor, possvel utilizar operaes atmicasque incrementam ou decrementam valores sem sofrerem interferncias de outras operaes degravao. A Figura 5 apresenta uma simulao de como os dados so solicitados e gravados,Nela o registro lido simultaneamente pelos usurios Client 1 e Client 2, enquanto oClient 1 realiza a alterao do valor para 8, o Client 2 realiza a alterao para 10 e ambosso atualizados no BD, gerando duas verses do registro. Figura 5: Leitura e gravao no BD
  • 22. 232.4.2 Consultas Para consultas, existem dois mecanismos: Query e Scan. A Query permite a consultana tabela utilizando o campo Hash e, opcionalmente, um filtro de Range. Esse mecanismo omais eficiente para buscar itens na tabela. A operao de Scan a forma menos eficiente, pois realiza uma varredura em todos osdados da tabela. Nessa operao possvel realizar pesquisa por valores que no so chave,porm isso implica em uma busca comparativa registro-a-registro. Para uma melhor performance, o Scan deve somente ser utilizado quando a Query nofor possvel. Para diminuir o tempo de resposta do Scan e Query, o retorno das requisiesso pginas com tamanho mximo de 1MB e a quantidade de registros delimitada atravs deparmetros. c) Desenvolvimento: definio da taxonomia, funcionamento do Amazon DynamoDB, integrao com o Twitter, modelagem de dados, metodologia de desenvolvimento e o desenvolvimento do sistema d) Concluso: anlise da existncia de informaes relevantes no Twitter, da utilizao do DynamoDB e do modelo NoSQL e, por fim, algumas sugestes de trabalhos futuros.
  • 23. 243 REDES SOCIAIS E GESTO DO CONHECIMENTO Este captulo apresenta o referencial terico com a reviso de literatura enfocando ascaractersticas das Redes Sociais, o surgimento do Twitter e Gesto do Conhecimento (GC)nas empresas.3.1 Redes Sociais O dicionrio Oxford (OXFORD DICTIONARIES ONLINE, [21--]) define rede socialcomo uma rede de interaes sociais e relaes pessoais que permite os usurios de secomunicarem com os outros. J o site G1 (2008) define como relao estabelecida entreindivduos com interesses em comum em um mesmo ambiente e o site Dictionary.com(DICTIONARY.COM, [21--]) complementa com um site web ou servio online que facilitaa comunicao. Segundo Rodrigo (2010), as redes sociais so utilizadas para ocompartilhamento de interesses e objetos em comum. Para Powell (2010), o termo refere-se auma comunidade onde pessoas esto conectadas de alguma forma. Com o crescimento da Web 2.0 (NATIONS, [21--]), os sites de redes sociaiscomearam a se popularizar. Para Boyd e Ellison (2007), um site de rede social (SocialNetwork Site ou SNS em ingls) permite que os usurios tenham um perfil (pblico ou semipblico) e mantenham uma lista de usurios com quem compartilham contedo. Aps aentrada em uma rede social, o usurio necessita informar outros usurios com os quaismantm relaes. Essas relaes normalmente so bidirecionais, mas alguns sites possuemrelaes unidirecionais. Como atravs da web qualquer um pode escrever um artigo e public-lo em temporeal, surge o termo mdia social. Segundo Comm (2009), esse termo uma forma depublicao em que as histrias so trocadas e os profissionais de marketing colocam suasmensagens diante das pessoas que criam uma rede de contatos. Aps analisar uma centena de sites, Jain (2010) listou os 40 SNSs mais populares nainternet, nos primeiros quatro lugares esto:
  • 24. 25 a) Facebook: criada por Mark Zuckerberg com o objetivo de ser uma rede social para os alunos de Harvard. Tornou-se de uso pblico em 2006 e passou da marca de 500 milhes de usurios. b) MySpace: iniciado em 2003 e ainda mantm uma larga base de usurios. c) Twitter: comeou como um microblog, mas se transformou numa plataforma de mensagens fornecendo notcias e tendncias. d) LinkedIn: rede social para uso profissional, ajudando na busca de empregos e conexo com parceiros de negcios. O termo microblog um novo estilo mdia social no qual os membros possuem limitesestritos para o contedo, incentivando a criatividade das postagens. Mesmo existindo umasrie de sites na internet, entre eles Spoink e Yammer, o Twitter estabeleceu um padro paraessa categoria.3.2 Twitter O Twitter foi criado em julho 2006 pelos programadores Evan Williams, Jack Dorseye Biz Stone. Segundo o prprio site, o Twitter uma rede de informaes em tempo real queconecta o usurio s ltimas histrias, ideias, opinies e notcias sobre o que ele achainteressante (TWITTER, [21--]). Aps a abertura da conta no Twitter, os usurios podem postar mensagens curtas deat 140 caracteres chamadas de Tweets, que podem ser lidas por qualquer outro usurio doservio (HUBERMAN, ROMERO e WU, 2008). Cada usurio declara seus interessesseguindo outros usurios, e notificado quando os seus seguidos postam novas mensagens.Kwak, et al. (2010) explica que os relacionamentos no necessitam ser recprocos, o fato deseguir um usurio no implica em que esse usurio siga de volta. As mensagens podem serreenviadas para fora da lista de seguidores do remetente atravs do mecanismo de retweet. Segundo Comm (2009), um dos motivos da popularidade da ferramenta foi permitirque os usurios enviassem mensagens atravs de mensagens SMS diretamente de aparelhoscelulares sem conexo com a internet. Segundo Carlson (2011), em maro de 2011, o sitepossua 175 milhes de usurios registrados, deste total somente 29 milhes eram usuriosativos (com ao menos um relacionamento). Em outubro de 2011, o diretor executivo Dick
  • 25. 26Costolo, comentou em um evento em So Francisco que so enviados diariamente 250milhes de Tweets, um crescimento de 175% comparado com setembro de 2010 (TSOTSIS,2011).3.3 Gesto do Conhecimento O conhecimento, segundo Tuomi (apud Silva, 2004), est no topo da hierarquiaformada por dados, informao e conhecimento. Os dados so fatos sem interpretao, asinformaes so dados estruturados de forma compreensvel e o conhecimento a informaoutilizada em um contexto. Nonaka e Takeuchi (1997) complementam que a informao ummeio para construir o conhecimento. Dessa forma, Gesto do Conhecimento (GC) umassunto amplo e, segundo Terra (2005), pode ser resumida como: A Gesto do Conhecimento centra-se em trs aspectos principais: foco nos ativos intangveis (principalmente o fator humano), tornar a gesto do conhecimento algo explcito, incentivar e criar mecanismos que facilitem aos empregados o compartilhamento de seus conhecimentos. Segundo Monteiro (2008), o conhecimento est dividido em duas categorias: a) Conhecimento Explcito: independente do contexto e est ligado aos procedimentos, marcas e patentes e, segundo Choo (2006), como expresso atravs de smbolos mais facilmente difundido. b) Conhecimento Tcito: o conhecimento prtico relacionado a um contexto e est ligado experincia das pessoas, para Choo (2006), este conhecimento usado pelos membros da organizao para realizar seu trabalho e dar sentido ao seu mundo. Como o conhecimento explcito mais facilmente documentado e reproduzido, amaior vantagem competitiva das empresas est em seu capital humano. Para Terra (1999), oconhecimento tcito no pode ser copiado e leva tempo para ser formado, sendo assim, a GCest ligada a como as empresas utilizam e combinam os conhecimentos de cada funcionrio.Para Santiago Jr. (2004), cada vez que um conhecimento reutilizvel ele aumenta de valor,tornando-se mais valioso e poderoso que os ativos fsicos ou financeiros. A GC nas empresas serve para criar e transferir o conhecimento em benefcio daempresa. Segundo Moura (apud BENEDETTI, 2008):
  • 26. 27 Gesto do Conhecimento um conjunto de estratgias que visa colocar o conhecimento em ao, atravs de sistemas e processos que possibilitem as pessoas contriburem para o conhecimento coletivo da empresa e dele retirarem o que necessitam ara o seu desenvolvimento e, ao mesmo tempo, para o aperfeioamento das operaes organizacionais. Segundo Benedetti (2008), o fluxo da gesto dividido em seis fases: a) Mapeamento: consiste do levantamento das informaes teis. b) Aquisio, captura e criao: apropriao ou combinao das informaes mapeadas. c) Empacotamento: a incorporao da informao em meio fsico (papel ou eletrnico). d) Armazenamento: processo de identificar e recuperar dados associados com o armazenamento da informao. e) Comunicao: a etapa de compartilhar a informao atravs de grupos de trabalho. f) Inovao: surge a modificao do ambiente gerando novos produtos, e modificando o processo de produo. Segundo Nonaka e Takeuchi (1997), a criao e expanso do conhecimento so feitasatravs da converso do conhecimento tcito em conhecimento explcito, em consequnciadas iteraes sociais entre as pessoas. Existem diversas prticas de GC, entre elas: Anlise deRedes Sociais, Taxonomia, Mapeamento de Processos, Comunidade de Prtica, Ferramentasde Colaborao e Bases de Conhecimento.3.4 Taxonomia e Folksonomia O principal exemplo de Taxonomia a Classificao dos Seres Vivos de 1735, de Karlvon Linn, que organizou os seres vivos de forma hierrquica de acordo com caractersticasem comum. Segundo Terra, et al. (1998), taxonomia um sistema para classificar e facilitaro acesso informao. No ambiente corporativo utilizada para organizar informaes noestruturadas. Para Benedetti (2008), o uso permite que as pessoas utilizem os mesmos termos paraum fato ou situao, diminuindo ambiguidades nas informaes da organizao. Timon, et al.(2009) complementa afirmando que uma classificao hierrquica favorece o agrupamento ecategorizao do conhecimento explcito da organizao. Outra vantagem, segundo Vogel(2009), a rapidez para localizao das informaes desejadas.
  • 27. 28 Para a construo de uma Taxonomia, deve existir colaborao entre especialistas earquitetos da informao, respeitando os seguintes critrios (TERRA, et al., 1998): a) Comunicabilidade: os termos devem estar claros e no contexto dos usurios. b) Utilidade: possuir somente os termos necessrios. c) Estimulao: apresentar termos que induzem o usurio a continuar utilizando o sistema. d) Compatibilidade: ela deve conter somente termos do contexto dos usurios. Um exemplo de taxonomia a Classificao Brasileira de Ocupaes (CBO),apresentada de forma reduzida na Figura 1. O termo Folksonomia foi criado por Thomas Vander Wal em 2004, com a juno dapalavra folk (pessoas em ingls) e da palavra taxonomia. Nesta forma de organizao cadausurio organiza o conhecimento da sua maneira, no sendo necessrio um especialista e umvocabulrio controlado. Para Kato e Gledson (2009), a Folksonomia apresenta algumasvantagens, entre elas: a) Flexibilidade: um vocabulrio rgido no consegue ser gil para lidar com bases de informao que crescem muito rpido. b) Identificao de padres: em conjunto com a minerao de dados, permite que os padres de organizao da informao possam ser compartilhados entre os usurios. c) Colaborao: existe um filtro social colaborativo, se muitas pessoas classificam a informao com o mesmo termo, a informao pode ser encontrada mais facilmente. Ainda para Kato e Gledson (2009), a Folksonomia apresenta alguns pontos negativos,todos em virtude da falta de vocabulrio estruturado, entre eles esto: uso de termos emsingular e plural, utilizao de sinnimos, erros de grafia e utilizao de palavras comsignificados diferentes de acordo com o contexto. Por causa do dinamismo dos termos, asbuscas so contextualizadas e personalizadas, princpios da Web 3.0 (ALVES, 2007).
  • 28. 29Figura 1: Classificao Brasileira de Ocupaes
  • 29. 304 BANCO DE DADOS Segundo Date (DATE, 2004, p. 10), um banco de dados uma coleo de dadospersistentes, onde persistentes significa que no so transitrios, ficando armazenadosenquanto uma instruo no os remova. Os primeiros programas eram responsveis por fazer a interface com o usurio,processamento e armazenamento fsico dos dados (HEUSER, 1998). Para facilitar odesenvolvimento e a manuteno de aplicaes, surgiram no incio da dcada de 1970 osSistemas de Gerncia de Banco de Dados (SGBD1). No final desta dcada e incio daseguinte, comearam a parecer no mercado os SGDB relacionais2. Mesmo com a entrada dossistemas orientados a objeto nas dcadas de 1980 e 1990, o modelo relacional continua sendoo mais utilizado (DATE, 2004, p. 24-25). Para Elmasri e Navathe (2006), os bancos de dados relacionais possuem as seguintescaractersticas bsicas: a) Natureza autodescritiva do sistema de BD: alm dos dados armazenados, o sistema possui a definio da estrutura de dados e suas restries. b) Isolamento entre os Programas e Dados e Abstrao de Dados: a estrutura dos dados est armazenada e separada do programa que o acessa. O SGBD fornece uma representao conceitual de dados e no a forma como esto armazenados e o processo necessrio para recuper-los. c) Suporte para as Mltiplas Vises dos Dados: cada usurio pode visualizar os dados armazenados de maneira diferente. d) Compartilhamento de Dados e o Processamento de Transao Multiusurio: visto que mltiplos usurios podem acessar o mesmo dado simultaneamente, o SGBD possui o conceito de transao, que garante o acesso logicamente correto ao dado sem a interferncia de outras transaes. 1 Em ingls, Database Management System (DBMS). 2 Em ingls, Relational Database Management Systems (RDBMS).
  • 30. 31 As transaes, segundo Orend (2010), possuem as propriedades de: Atomicidade,Consistncia, Isolamento e Durabilidade. Essas caractersticas formam o acrnimo ACID: a) Atomicidade: para uma transao significa que todas as operaes so executadas ou ela abortada sem alterao nos dados. b) Consistncia: significa que o banco est consistente antes e depois de uma transao ser executada, ou seja, uma transao no pode violar uma restrio de integridade. c) Isolamento: uma transao no pode ler informaes de outra transao no concluda, problema relacionado concorrncia entre transaes. d) Durabilidade: uma transao deve ser escrita no sistema de arquivos antes de ser concluda, garantindo que no haja perda de dados por falhas de hardware. Elmasri e Navathe (ELMASRI e NAVATHE, 2006) tambm abordam algumasvantagens na utilizao dos SGBD, entre elas: a) Controle de Redundncia: como o mesmo dado armazenado somente uma vez, o espao de armazenamento menor e no so necessrias mltiplas atualizaes para garantir a consistncia do dado. b) Restrio de Acessos No Autorizados: devido ao fato de que nem todo usurio pode realizar as mesmas operaes sobre todos os dados, o sistema possui um controle de autorizao garantindo as restries automaticamente. c) Estruturas para o Processamento Eficiente de Consultas: o sistema possui estruturas adicionais, armazenamento temporrio (buffer) e ndices, para aumentar a velocidade de pesquisa do dado. d) Restries de Integridade: as restries dos dados (tipo de campo, limites de valores, referncia entre estruturas) so automaticamente verificadas e garantidas pelo SGBD.4.1 Modelo Relacional Para Carneiro (2004), as entidades (ou tabelas como so chamadas) so os objetossobre os quais se deseja armazenar informaes. Essas entidades possuem propriedades erelacionamentos com outras entidades que tambm podem conter propriedades. Devido aesses relacionamentos, existe uma correspondncia entre as tabelas e o conceito matemticode relao, por isso o nome do modelo (SILBERCHATZ, KORTH e SUDARSHAN, 1999).
  • 31. 32 A modelagem dos dados uma descrio dos tipos de informaes que estoarmazenadas em um banco de dados (HEUSER, 1998, p. 16) e para Carneiro (2004, p. 7-8),: Uma definio abstrata dos objetos representados por estes dados, dos relacionamentos desses objetos entre si e de um conjunto de operadores e regras que os usurios finais utilizam para interagir com o banco de dados. A modelagem pode ser feita em diferentes nveis de abstrao. Para os Bancos deDados (BD), podem ser considerados dois nveis de abstrao: o modelo conceitual e omodelo lgico. O modelo conceitual independente do tipo de BD, a representao maisutilizada nos BD relacionais o diagrama entidade-relacionamento (DER). No modelo lgico,os dados como tabelas e suas colunas so descritos de forma textual. Em 1974, a IBM criou uma linguagem para acessar o seu BD relacional chamada deLinguagem de Consulta Estruturada (Structed Query Language ou SQL em ingls). Em 1986,foram estabelecidos os padres da linguagem pela American National Standards Institute(ANSI) e pela International Standards Organization (ISO), este primeiro padro ficouconhecido como SQL1. Em 1992 foi revisado e chamado de SQL/92 ou SQL2. A verso maisrecente de 1999 e conhecida como SQL:1999 ou SQL3, possuindo suporte aos BDorientados a objetos. Segundo Carneiro (2004), uma linguagem simples e fcil, pois permite escrever asconsultas quase em linguagem natural (ingls), facilitando a utilizao por no conhecedoresde lgica de programao. Heuser (HEUSER, 1998) complementa que nas consultas SQL no especificada nenhuma forma de como acessar os dados, o caminho definido pelo prprioSGBD durante a execuo da instruo.4.2 NoSQL Neste captulo ser apresentado um novo paradigma para a persistncia de dados,principalmente voltado ao armazenamento de grandes volumes de dados que ultrapassam osterabytes. Este novo modelo vem auxiliando grandes portais como o Facebook, Twitter eDigg a migrar de seus BD MySQL para uma plataforma muito mais robusta (LAI, 2010).
  • 32. 33 Ainda no existe um padro de tecnologia estabelecido. Segundo Fowler e Sadalage(2012), este fato gerou o termo Poliglot Persistence, que permite que as empresas utilizem amelhor tecnologia para cada um dos cenrios existentes, no utilizando somente os RDBMS.4.2.1 Big Data Um estudo de 2010 aponta que as empresas americanas com mais de mil funcionriosarmazenavam em mdia 200 terabytes3 de dados, chegando a um petabyte4 em alguns setores(XAVIER, 2012). Outra pesquisa de 2008 apontou que as famlias americanas receberam 34gigabytes5 de informao por pessoa a cada dia (THE ECONOMIST, 2010). O International Data Corporation (IDC, 2008) calculou o tamanho do universo digitalem 2007 como sendo de 281 exabytes6 e estimou 1,800 exabytes em 2011. A empresa Ciscoestima que em 2013 o trfego anual da internet ser de 667 exabytes (THE ECONOMIST,2010). Dessa realidade surge o termo Big Data que foi criado para denominar o crescimentoexponencial dos dados que as empresas precisam ou podem tratar para extrair informaotil (SOARES, 2012). A Computerworld descreve Big Data como a minerao de enormes volumes dedados estruturados e no estruturados de informaes teis, usando ferramentas no-tradicionais (COLLETT, 2011). Para o Gartner, o termo est envolvido com os fatores:Volume, Variedade e Velocidade (PETTEY e GOASDUFF, 2011): a) Volume: a quantidade de dados corporativos cresce devido ao aumento na quantidade de transaes e no tipo de dados armazenados. b) Variedade: para auxiliar as decises, os dados teis so originrios de dados tabulados, hierrquicos, documentos, e-mails, vdeo, imagens, transaes financeiras, etc. 3 Um terabyte equivale a1 X 1012 bytes 4 Um petabyte equivale a 1 X 1015 bytes 5 Um gigabyte equivale a1 X 109 bytes 6 Um exabyte equivale a 1 X 1018 bytes
  • 33. 34 c) Velocidade: envolve a velocidade que os dados so produzidos e a necessidade de process-los de acordo com a demanda. Collett (2011) complementa, afirmando que no so necessrios os trs fatores parauma soluo ser considerada Big Data, dependendo do caso alguns terabytes de dados quenecessitam ser processados instantaneamente j a caracterizam. Segundo Taurion (2011), oconceito de Big Data juntar grandes volumes de informaes estruturadas e no estruturadaspara que as empresas tomem decises baseadas em fatos. Para Jacobs (2009), o que tem tornado os dados realmente grandes a repetio deinformaes simples atravs do tempo e/ou espao como, por exemplo, operadoras de celulararmazenando a posio dos seus celulares a cada 15 segundos. Segundo Sevilla (2011), BigData necessrio quando o volume de dados cresceu tanto que a rea de Tecnologia daInformao (TI) no consegue retornar informaes bsicas em menos de um minuto. Alm do processamento usual dos dados, novas formas de visualizao tambm estosendo utilizadas, entre elas: nuvem de tags7, clustergramas8 e history flow9 (TAURION,2011). Para Xavier (2012), os desafios para utilizar Big Data esto em otimizar os recursostanto no hardware quanto no software. Para o hardware, a utilizao de computadores baratospara o processamento paralelo ao invs de um nico servidor dedicado tem se mostradomelhor na relao custo/benefcio (JACOBS, 2009). Para o software, novas maneiras dearmazenar os dados com menos restries e regras do modelo relacional comearam a serutilizadas (BRITO, 2010). Algumas dessas solues receberam o nome de NoSQL eassemelham-se aos sistemas de gerenciamento de arquivo. 7 Mais informaes em http://en.wikipedia.org/wiki/Tag_cloud 8 Mais informaes em http://www.schonlau.net/publication/02stata_clustergram.pdf 9 Mais informaes em http://www.research.ibm.com/visual/projects/history_flow/
  • 34. 354.2.2 O Movimento NoSQL O termo foi utilizado em 1998 para um BD relacional que omitiu o uso da linguagemSQL. Somente em 2009 foi utilizado novamente em uma conferncia em So Francisco pordefensores de um modelo no relacional. O chamado movimento NoSQL comeou nestemesmo ano e vem crescendo rapidamente (STRAUCH, 2011). A traduo mais aceita para a sigla No Apenas SQL (Not Only SQL em ingls).Para Brito (BRITO, 2010), os bancos de dados NoSQL no pretendem substituir o modelorelacional, somente apresentar uma possibilidade para casos em que no seja exigida umaestrutura rgida de dados. Segundo Fowler (2012), o termo NoSQL se refere a um particular conjunto de BD quepossuem algumas caractersticas em comum: a) No utilizam o modelo relacional nem a linguagem SQL; b) So de cdigo aberto; c) Desenhados para utilizao em grandes clusters; d) Baseados nas necessidades web do sculo 21; e) No existe um esquema, permitindo que campos possam ser adicionados a qualquer registro. As caractersticas desses bancos podem ser definidas como (LSCIO, DE OLIVEIRAe PONTES, 2011): a) Escalabilidade horizontal: ao invs de utilizar uma escalabilidade vertical que necessita aumentar o processamento e armazenamento do servidor, a escalabilidade horizontal aumenta a quantidade de servidores, dividindo o problema em pequenas partes. b) Ausncia de esquema ou esquema flexvel: a ausncia de esquema rgido facilita a escalabilidade e aumenta a disponibilidade, porm no existe a garantia de integridade dos dados.
  • 35. 36 c) Suporte nativo a replicao: outra maneira de aumentar a escalabilidade utilizando a replicao de dados. d) API10 simples para acesso de dados: o principal objetivo no a forma como os dados so armazenados, e sim como obt-los de maneira eficiente. e) Consistncia eventual: essa caracterstica diz que, como os dados esto distribudos, somente se pode garantir dois dos trs pontos do teorema CAP. Segundo De Diana e Gerosa (2010), o teorema CAP significa: consistncia,disponibilidade e tolerncia partio (Consistency, Availability e Partition tolerance emingls). A consistncia implica que a leitura de um registro aps a sua atualizao deveretornar o novo valor, disponibilidade a garantia de que o servio em funcionamentoresponda a todas as requisies que receber, e tolerncia partio implica que o sistemacontinue em funcionamento mesmo que ocorra um problema de rede particionando o servioem duas partes. Outro ponto em discordncia ao modelo relacional a abordagem BASE, que significadisponibilidade bsica, estado leve e consistncia eventual (Basically Available, Soft state eEventual consistency em ingls), ao invs da necessidade de garantir as propriedades ACIDcomo critrio de correo dos dados em SGBDs multiusurio. Ippolito (apud STRAUCH,2011, p. 32) resume a propriedade em: uma aplicao funciona basicamente todo o tempo(disponibilidade bsica), no necessita ser consistente todo o tempo (estado leve), mas ter umestado consistente eventual (consistncia eventual). Brito (2010) apresenta o escalonamento como uma das principais vantagens daarquitetura NoSQL sobre a arquitetura dos SGBDs relacionais em virtude de ter sido criadocom esse objetivo. O escalonamento pode ser vertical (scale up em ingls) realizado atravsdo aumento da capacidade do servidor, ou pode ser horizontal (scale out em ingls) realizadoatravs do aumento na quantidade de servidores, um exemplo pode ser visualizado na Figura2. Os bancos NoSQL adotam, preferencialmente, o escalonamento horizontal particionando osdados (sharding em ingls) entre os diversos servidores. O escalonamento no feito 10 API significa em ingls Application Programming Interface
  • 36. 37automaticamente pelo gerenciador do BD NoSQL, somente mais facilitado com relao aomodelo relacional (TOTH, 2011). Scale up Scale out Figura 2: Escalonamento4.2.3 Tcnicas de Implementao Segundo Lscio, De Oliveira e Pontes (2011), para a implementao dasfuncionalidades, os bancos de dados NoSQL utilizam algumas tcnicas, entre elas: a) Map/Reduce: permite o tratamento de grande volume de dados e dividida em duas partes. Na primeira (Map), as solicitaes so divididas em solicitaes menores e distribudas entre os ns de servidores. J a segunda (Reduce), as solicitaes so processadas nos ns filhos e devolvidas para os ns pais. b) Consistent hashing: forma de armazenamento e recuperao de dados distribudos, sua utilizao evita a migrao dos dados entre servidores.
  • 37. 38 c) Multiversion concurrency control (MVCC): suporte de transaes paralelas sem a utilizao de locks, permitindo a escrita paralela de valores. d) Vector Clocks: ordenam os eventos de um sistema e so necessrios para identificar a situao atual de um dado, em virtude de que o mesmo pode estar sendo atualizado concorrentemente.4.3 Categorias de NoSQL Existem mais de 120 bancos de dados NoSQL (NOSQL, [21--]) que podem seragrupados em quatro categorias: chave-valor, orientado a documentos, orientado a colunas eorientado a grafos.4.3.1 Chave-valor (key-value) Essa categoria tambm conhecida como tabela de hash distribuda, um modeloconsiderado simples e de fcil implementao, pois os dados so armazenados e localizadosatravs de chaves (hash), utilizando o conceito de mapa ou dicionrio de dados (DE DIANA eGEROSA, 2010). O armazenamento de chave-valor existe h bastante tempo (STRAUCH, 2011), masum dos principais bancos de dados desse modelo o DynamoDB que foi utilizado como basepara o Cassandra (LSCIO, DE OLIVEIRA e PONTES, 2011). Outras opes so os bancos:Project Voldemort, Memcache, Redis, RIAK, Scalaris e Tokyo Cabinet.4.3.1.1 DynamoDB O DynamoDB um dos bancos de dados fornecido pela Amazon em uma estruturaprpria de milhares de servidores espalhados pelo mundo. Mesmo os servidores possuindo capacidades diferentes, cada um dos ns possui amesma responsabilidade, a estrutura garante a diviso do trabalho de acordo com a
  • 38. 39capacidade de processamento do servidor. Quando um novo servidor adicionado ao anel,vrios ns virtuais so criados com capacidades fixas. A quantidade de ns virtuais est ligadaa capacidade de processamento do servidor (STRAUCH, 2011). As informaes sobre a adio, remoo ou falha em nodos transmitida atravs doprotocolo Gossip. Esse protocolo, segundo Tiwari (2011), baseado na forma como asfofocas e rumores se espalham nas redes sociais onde so necessrias interaes peridicasentre pares de processos. Segundo Strauch (2011), o DynamoDB foi criado para ser um sistema de consistnciaeventual, ou seja, quando uma operao de atualizao executada, o retorno da operaoacontece antes de todos os ns serem atualizados, ocasionando que leituras posteriorespossam retornar verses diferentes dos dados. Quando um n recebe uma requisio de atualizao de dados, uma nova verso dodado gerada com um vector clock diferente. Esse n grava as informaes localmente epassa a informao para o prximo n que tambm realiza a atualizao. A quantidade de nsque recebe a atualizao configurada pelo administrador do sistema (consistent hashing).Para o sistema, as informaes so vistas como um conjunto de dados. Sendo assim, casoacontea alguma inconsistncia entre os dados, o desenvolvedor do sistema pode interagirpara informar qual dado deve ser persistido. Caso nada seja informado o sistema utiliza aabordagem de last write wins, ou seja, permanece o ltimo dado enviado. Por este motivo, oDynamoDB caracterizado como um sistema MVCC. A seo 5 apresenta o detalhamento sobre o banco de dados Dynamo, uma vez quetrata-se do BD avaliado neste trabalho.4.3.1.2 Project Voldemort Nasceu como soluo Java para o LinkedIn (STRAUCH, 2011), mas atualmentepossui licena de cdigo aberto (CATTELL, 2010). Para Strauch (2011), diferentemente do modelo relacional, no qual os programadorespodem utilizar stored procedures para aumentar o desempenho, misturando a camada lgicacom a camada de persistncia, na utilizao de um modelo chave-valor essa separao feitaobrigatoriamente. A documentao do sistema sugere o particionamento dos dados, bem
  • 39. 40como a utilizao de caches para aumentar a performance devido s operaes de E/S nodisco. Segundo Cattell (2010), o particionamento de dados automtico atravs do conceitode Consistent hashing onde os dados so replicados num nmero definido (peloadministrador) de servidores e as atualizaes so assncronas. Por isso, o sistema no garantea consistncia dos dados. Quando novos servidores so adicionados ou removidos, o sistemaautomaticamente se adapta. Alm disso, o gerenciador tambm detecta e recuperaautomaticamente falhas nos nodos. Strauch (2011) explica que o Project Voldemort utiliza, assim como o DynamoDB, omecanismo de concorrncia atravs do uso de vector clocks. Caso ocorram conflitos durante aatualizao dos dados, o sistema tenta resolver o problema, se no for possvel, o usurio deveresolver o problema na prxima requisio do dado.4.3.1.3 Memcache, Manbrain e Membase Possui uma distribuio de cdigo-livre, utilizando indexao em memria. Asfuncionalidades de persistncia, replicao, alta disponibilidade, crescimento dinmico, entreoutras foram acrescentadas por Schooner Tecnologies and MemBase (CATTELL, 2010). O Memcache compatvel com outros sistemas como o Membrain e o Membase. OMembrain licenciado por servidor pela Schooner Technologies e seu diferencial apossibilidade de ajuste fino (tunning) utilizando memria flash. Membase distribudo pelaempresa Membase e seu diferencial est na capacidade de adicionar ou remover servidoresenquanto o sistema est em funcionamento, redirecionando as requisies para outrosservidores durante o processo. Segundo Tiwari (2011), o principal motivo de utilizao do Memcache diminuir oacesso ao BD, por isso utilizado pelo Facebook, Twitter, Wikipedia e YouTube.
  • 40. 414.3.1.4 Redis O projeto comeou a ser desenvolvido na linguagem C por apenas uma pessoa eatualmente est sobre licena BSD (CATTELL, 2010). Os dados so armazenados namemria RAM do servidor e so copiados para o disco de backup quando h a necessidade dedesligamento do sistema. Ao acrescentar novos ns, o desligamento do sistema obrigatrio. Segundo Tiwari (2011), todos os dados so armazenados no Redis na forma de strings,inclusive listas, conjuntos e mapas. Para isso, ele utiliza um sistema prprio de gerenciamentode memria, que ao gravar os dados em disco armazena na memria o endereo fsico dodado junto ao hash. Para Strauch (2011), a maior desvantagem do Redis que o tamanho dos dados limitado ao tamanho da memria disponvel no servidor.4.3.1.5 RIAK Foi escrito na linguagem Erlang e tornou-se um cdigo-aberto em 2009 pela empresaBasho que o descreve como um banco orientado a chave-valor e orientado a documento(CATTELL, 2010). A biblioteca cliente est disponvel, entre outras linguagens, em Earlang eJava e segue o padro web de requisies HTTP RESTful11. RIAK suporta replicao e sharding dos objetos armazenados no formato JSON12,porm no so suportados ndices diferentes da chave-primria. 11 REST significa em ingls REpresentation State Transfer 12 JSON significa em ingls JavaScript Object Notation
  • 41. 424.3.1.6 Scalaris Assim como o RIAK, Scalaris tambm foi escrito na linguagem Erlang, seu cdigoaberto foi desenvolvido pelo Zuse Institute de Berlim (CATTELL, 2010). Os dados so armazenados em memria, mas a replicao sncrona e a recuperao defalhas garantem a durabilidade das atualizaes. Para Strauch (2011), o Scalaris possui ummodelo de consistncia rgida e permite consultas complexas atravs da sua biblioteca.4.3.1.7 Tokyo Cabinet A parte servidor chamada de Tokyo Cabinet e a biblioteca cliente nomeada TokyoTyrant, ambos escritos na linguagem C, fizeram parte de um projeto do Sourcefourge.net, masatualmente licenciado e mantido pelo FAL Labs. (CATTELL, 2010). O servidor possui seis variaes: ndices hash em memria ou em disco, rvores-B emmemria ou em disco, tabelas de tamanho fixo ou varivel. Strauch (2011), apresenta ogerenciamento dos dados no servidor como similar ao processo de paginao e swapping. Segundo Cattell (2010), no possui documentao muito clara, mas possui suporte atransaes ACID, replicao assncrona entre dois nodos principais ou entreprincipal/escravo, a recuperao manual e no possui sharding automtico.4.3.2 Orientado a Colunas Segundo Lscio, De Oliveira e Pontes (2011), nesse modelo os dados so indexadospela tripla formada por linha, coluna e timestamp. A linha e a coluna so identificadas porchaves e o timestamp um diferenciador entre as mltiplas verses dos dados. Tambm existeo conceito de famlia de colunas (column family) que utilizado para agrupar colunas demesmo tipo. Para De Diana e Gerosa (2010), os bancos de dados relacionais so mais adequadosaos sistemas de processamento transacionais (Online Transactional Processing ou OLTP em
  • 42. 43ingls), enquanto os bancos orientados a coluna se enquadram melhor para os sistemas deprocessamento analtico (Online Analytical Processing ou OLAP em ingls). Segundo Cattell (2010), que denomina esses sistemas como Extensible Record Stores,a escalabilidade desses sistemas resultado da diviso simultnea das linhas e colunas entrediversos servidores. Os principais bancos nessa categoria so: BigTable, Hypertable, HBase e Cassandra.4.3.2.1 BigTable O BigTable da Google, criado em 2004, foi uma das primeiras implementaes de umsistema no relacional com o objetivo de promover maior escalabilidade e disponibilidade(BRITO, 2010). Ele foi construdo sobre a plataforma Google File System (GFS) e utilizadoem mais de 60 produtos da empresa entre eles: Google Analytics, Orkut e Google Earth(PADHY, PATRA e SATAPATHY, 2011). Para Orend (2010), o BigTable comparvel ao armazenamento de chave-valor, coma diferena de que ao invs de mapear uma chave com um valor mapeado uma triplaformada pela linha, coluna e timestamp. Segundo Strauch (2011), as linhas possuem uma chave de at 64KB, so ordenadasalfabeticamente, so particionadas e armazenadas nos chamados tablets. As colunas soagrupadas em famlias de colunas e no existe um limite de quantidade de colunas por tabelas.O timestamp representado por um inteiro de 64 bits e utilizado para diferenciar as versesde uma clula de valor. Alm disso, o timestamp pode ser gerado pelo servidor ou informadopela API e tambm utilizado para ordenar as alteraes dos valores, mantendo o valor maisatual como sendo o primeiro a ser lido. O GFS utilizado para a persistncia dos arquivos e dos logs. Os dados soarmazenados utilizando o formato SSTable, que um mapa persistente e imutvel de chavesno qual as aplicaes podem iterar sobre todas as chaves/e valores, entre um determinadointervalo de chaves. Segundo Orend (2010), o sharding realizado atribuindo o tablet a um nico servidor.Um servidor principal armazena as informaes de mapeamento entre o tablet e o servidor naqual foi armazenado. Devido ao tablet ser armazenado em somente um servidor, o processo
  • 43. 44de replicao no feito diretamente pelo BigTable e sim pelo prprio GFS. Por no existirreplicao, a consistncia do dado garantida. O nico ponto possvel de falha da estrutura o servio Chubby, que constitudo decinco servidores (sendo um master e quatro clientes). O servio responsvel, entre outrastarefas, por distribuir os tablets entre os demais servidores do cluster. Sendo assim caso oservio fique inacessvel, o BigTable no consegue atualizar seus mapeamentos e tambmficar indisponvel depois de um tempo. O BigTable no suporta unies, sendo assim os relacionamentos devem ser tratados nacamada de aplicao. A API fornecida na linguagem C++.4.3.2.2 HyperTable Para Cattell (CATTELL, 2010), o HyperTable muito similar ao BigTable e HBase,foi escrito em C++ e possui cdigo aberto pela Zvents. Alm de possuir uma quantidadeilimitada de colunas nas famlias de colunas, os dados so particionados e replicados emmemria para depois serem escritos no sistema de arquivos distribudos da Apache: o Hadoop(Hadoop Distributed File System ou HDFS em ingls). Segundo Orend (2010), possui uma linguagem prpria de acesso aos dados chamadade Hypertable Query Langue (HQL) e a API pode ser acessada atravs de Thrift ou C++.4.3.2.3 HBase um projeto da Apache escrito em Java e que foi patenteado logo aps o BigTable.Sua principal diferena est em utilizar a tcnica de Map/Reduce, sob o sistema de arquivoHadoop, ao invs do Google File System (OREND, 2010). No HBase, os dados so escritos em memria e posteriormente gravados em arquivosperiodicamente compactados. O controle de concorrncia otimista, gerando erro caso existaconflito. O particionamento e a distribuio so transparentes, no necessitando deinformaes adicionais (CATTELL, 2010). Alm da API via JAVA, tambm pode seracessado atravs de REST e Thrift.
  • 44. 45 Segundo Orend (2010), a principal utilizao do HBase no sistema de mensagens emtempo real construdo para o Facebook em 2010.4.3.2.4 Cassandra O Cassandra escrito em Java, licenciado pela Apache e tornou-se cdigo livre em2008. Foi desenvolvido por um engenheiro do Facebook e um engenheiro do projeto Dynamo(CATTELL, 2010), sendo inspirado no BigTable e no prprio Dynamo. Segundo Cattell (2010), o Cassandra, assim como os Hypertable e HBase, realiza asalteraes em memria para posteriormente atualizar o disco que compactadoperiodicamente. O processo de deteco e recuperao de falhas totalmente automatizado,assim como a deteco de novos ns no cluster que utiliza o protocolo Gossip. Um dos pontosfracos do sistema o sistema de concorrncia, que no possui locks e as rplicas soatualizadas assincronamente. Strauch (2011) caracteriza uma instncia do Cassandra como uma nica tabela querepresenta um mapa multidimensional distribudo indexado por uma chave, onde asdimenses podem ser: a) Linha: que so identificadas por uma chave literal de tamanho definido. b) Coluna: possui um nome e armazena um nmero de valores por linha identificados por um timestamp. Cada linha pode possuir uma quantidade diferente de colunas. c) Supercoluna: tambm identificada por um nome e possui uma quantidade variante de colunas de acordo com a linha. d) Famlia de Colunas: formada por colunas e supercolunas que podem ser adicionadas dinamicamente. O acesso aos dados de uma linha atmico, no importando a quantidade de colunasque devem ser lidas ou gravadas. Quando uma requisio feita, o sistema identifica qualservidor possui a informao. Para a incluso e alterao de dados, a replicao feita numaquantidade de servidores definida pelo administrador do sistema. Para otimizar aperformance, o sistema armazena ndices de colunas e famlia de colunas para obter os dadosdiretamente do disco sem necessitar de uma varredura completa de todas as colunas. A API do Cassandra est disponvel em Java, Ruby Python, C#, Thrift entre outras.
  • 45. 464.3.3 Orientado a Documentos Um documento um objeto com um identificador nico e um conjunto de campos,onde os documentos no possuem um esquema rgido, permitindo que cada documento tenhaseu prprio conjunto de campos (LSCIO, DE OLIVEIRA e PONTES, 2011). Os principais bancos no mercado so: CouchDB, SimpleDB e MongoDB.4.3.3.1 SimpleDB Segundo Cattell (2010), o SimpleDB parte da nuvem proprietria pertencente aAmazon e contratada na forma de servio. O seu nome origina-se de possuir um modelosimples com poucas operaes sobre os documentos O sistema utiliza consistncia eventual, realizando replicao assncrona dosdocumentos, mas, diferentemente de outros bancos, suporta mltiplos agrupamentos(domnios) dentro da mesma base de dados. Cada domnio pode possuir um conjuntodiferente de ndices que so atualizados automaticamente quando um documento atualizado.O SimpleDB no realiza o sharding automaticamente, mas cada domnio pode estararmazenado em um n diferente da Amazon.4.3.3.2 CouchDB Foi desenvolvido na linguagem Erlang e pertence a Apache desde 2008, possuiinterface em diversas linguagens, entre elas: Java, C, PHP e Python. Segundo Strauch (2011),o CouchDB um descendente do Lotus Notes, j que foi iniciado pelo mesmo desenvolvedorDamien Katz. A estrutura bsica de armazenamento um documento constitudo de campos evalores; so permitidas referncias entre documentos atravs de URL ou URI, pormnenhuma verificao de consistncia realizada.
  • 46. 47 Segundo Cattell (2010), o CouchDB possui muitas semelhanas com o SimpleDB,entre elas o fato de no realizar sharding, ou seja, ao atualizar um documento, precisa serreplicado em todos os servidores para garantir a consistncia eventual. O sistema possuisuporte a ndices secundrios que precisam ser criados manualmente e as consultas podem serparalelizadas entre diversos ns utilizando o mecanismo de Map/Reduce. O controle de concorrncia realizado atravs da tcnica de MVCC, utilizandoidentificadores de sequncia para cada verso dos documentos. Caso o documento tenha sidoalterado por outro usurio desde a sua leitura, a aplicao notificada e pode combinar oudescartar as suas alteraes. Aps a confirmao da alterao (commit), os dados so gravadosem disco para manter a durabilidade dos documentos. Segundo Strauch (2011), o processo de replicao incremental e capaz dedeterminar conflitos de verses entre os servidores. A arquitetura foi desenhada para que cadaservidor tenha a mesma responsabilidade, no existindo um mestre e um escravo. Para doisservidores comearem a se replicar basta que um localize o outro na rede. possvel realizaruma replicao parcial dos dados desde que sejam configurados manualmente filtros em cadaservidor. Como o sistema constantemente est gravando as alteraes em disco, periodicamenteo arquivo deve ser compactado para restaurar espao para o sistema de arquivos. Esseprocesso consiste de copiar todo o contedo vlido para um novo arquivo. Durante a cpia oarquivo original continua sendo utilizado para pesquisa e alterao. No caso de algumproblema acontecer durante a cpia, o arquivo original continua ntegro.4.3.3.3 MongoDB Escrito na linguagem C++, fornecido pela empresa 10gen e possui licena GPL.Cattell (2010) define o MongoDB como sendo similar ao CouchDB, mas com a grandediferena de ter suporte nativo a sharding. Alm disso, o uso de ndices de consulta automtico como em um RBDMS. Outra diferena est no controle de concorrncia, enquantoo CouchDB utiliza MVCC, o MongoDB fornece operaes atmicas nos campos. Asoperaes atmicas realizam as alteraes na memria local. Quando as alteraes so
  • 47. 48enviadas para o servidor, ele verifica se mesmos documentos no foram alterados por outrosusurios Os dados so armazenados num formato chamado BSON13, semelhante ao JSON.Alm disso, utilizado uma especificao chamada GridFS que permite armazenar longosdados binrios, como, por exemplo, vdeos. O MongoDB suporta replicao com failover 14erecuperao automtica. Segundo Tiwari (2011), este banco uma boa escolha para realizar a migrao entre omodelo relacional e o NoSQL, uma vez que suporta consultas no estilo SQL, tem um controlerudimentar de referncia e a modelagem de dados semelhante, utilizando o conceito detabela e coluna. Segundo Strauch (2011), o banco no possui chaves estrangeiras. Sendo assim orelacionamento feito manualmente onde um campo de referncia utilizado para informar ocaminho completo at o documento de destino. Outra maneira o chamado DatabaseReference (DBRef), que permite a referncia com documentos de coleo externa aodocumento atual. Porm, a forma mais eficiente de definir relaes entre documentos atravs do aninhamento de documentos onde um documento colocado dentro do outro. Desde a verso 1.5.2, as operaes de atualizao e excluso de documentos norealizam bloqueio, sendo assim alteraes em lote podem gerar inconsistncia entre os dados.Para amenizar o problema, o programador pode atribuir um flag, indicando que a operaodeve ser realizada de forma atmica. Para otimizar o processo de consultas, o usurio pode definir ndices que soautomaticamente calculados. Por causa do custo de processamento durante a atualizao dosdados, os ndices so indicados para colees que possuem mais leitura do que gravao.Caso a coleo tenha mais gravao que leitura, a criao de ndices pode prejudicar aperformance. Uma das grandes empresas que utilizam o MongoDB est a Foursquare. Os motivospela adoo da ferramenta esto, normalmente, ligados ao modelo flexvel de dado e a 13 BSON baseado no termo JSON e significa em ingls Binary JSON 14 Failover o processo no qual uma mquina assume os servios de outra, quando esta ltima apresentafalha.
  • 48. 49velocidade de leitura e gravao dos dados (TIWARI, 2011). O banco possui bibliotecasclientes em vrias linguagens, entre elas: C, C#, Java, JavaScript, Pearl, PHP, Python e Ruby.4.3.4 Orientado a Grafos O modelo de grafos possui trs elementos bsicos: os vrtices dos grafos (ns), asarestas (relacionamentos) e os atributos (propriedades dos ns e dos relacionamentos)(LSCIO, DE OLIVEIRA e PONTES, 2011). O BD um multigrafo rotulado e direcionado,onde cada n est relacionando com vrios outros ns atravs das arestas. Para De Diana e Gerosa (2010), este padro est ligado diretamente ao modelo degrafos, onde os dados so representados como grafos dirigidos ou estruturas que generalizama noo de grafos. O padro suporta restries atravs de integridade referencial. Segundo Angles e Gutierrez (apud DE DIANA e GEROSA, 2010), o modeloorientado a grafos mais interessante quando: Informaes sobre a interconectividade ou a topologia dos dados mais importante, ou to importante quanto, os dados propriamente ditos. Um dos principais bancos dessa categoria o Neo4j, OrientDB e DEX.4.3.4.1 Neo4j Segundo Vicknair, et al. (2010), o banco foi escrito em Java pela empresa NeoTechnology e est em produo desde 2005. Alm disso, possui licena open source para usono comercial. O Neo4j foi construdo utilizando um mecanismo de busca textual de altaperformance desenvolvido pela Apache chamado de Lucene. Matsushita e Nguessan (2012) explicam que os dados so armazenados em cadavrtice utilizando uma tabela de chave-valor, permitindo assim que cada vrtice possuainformao diferente dos demais. Como todo o banco visto com uma grande estrutura degrafos, o processo de aprendizagem e visualizao de dados especficos pode ser maiscomplicado do que no modelo relacional.
  • 49. 50 Uma das vantagens do Neo4J, perante as outras ferramentas NoSQL, a garantia daspropriedades ACID. Outra vantagem est na economia de processamento e baixo tempo deresposta das informaes relacionadas, isto devido ao processo de busca em profundidade apartir de um vrtice especfico.4.3.4.2 OrientDB um banco open source, escrito em Java e mistura funcionalidades dos modelosorientados a documento e orientados a grafos. Suporta transaes ACID e pode trabalhar tantocom schema rgido quanto flexvel. Um dos motivos pelo qual tem isso bastante utilizado osuporte a SQL, que permite a migrao de programadores acostumados com o modelorelacional (OrientDB, [21--]).4.3.4.3 DEX um sistema desenvolvido em Java e C++ pela Sparsity Technologies que odenomina como um Labeled Directed Attributed Multigraph. Labeled (rotulado em ingls),pois os vrtices e arestas do grafo pertencem a um tipo, Directed (direcionado em ingls),uma vez que as arestas podem ser direcionadas ou no, Attributed (atribuda em ingls), poispermite que os vrtices e arestas possuam atributos (SPARSITY TECHNOLOGIES, [21--]). DEX suporta transaes, garantindo somente consistncia e isolamento.4.3.5 Comparativo entre os Bancos Na Tabela 1 apresentado um resumo com as principais caractersticas dos bancosdiscutidos nas sees anteriores.
  • 50. 51 Tabela 1: Resumo dos bancos de dadosOrientao Banco de Dados Controle de Concorrncia Armazenamento Replicao Transao LinguagemChave-Valor DynamoDB MVCC Plug-in Assncrona NoChave-Valor Membrain Lock Flash + disco Sncrona LocalChave-Valor Memcache Lock Sncrona LocalChave-Valor Redis Lock RAM Assncrona No CChave-Valor RIAK MVCC Plug-in Assncrona No ErlangChave-Valor Scalaris Lock RAM Sncrona Local ErlangChave-Valor Tokyo Lock RAM ou disco Assncrona Local CChave-Valor Voldermort MVCC RAM ou disco Assncrona No JavaColunas BigTable Lock + timestamp GFS Assncrona e Sncrona LocalColunas Cassandra MVCC Disco Assncrona Local JavaColunas HBase Lock Haddop Assncrona Local JavaColunas HyperTable Lock Aquivos Sncrona Local C++Documentos CouchDB MVCC Disco Assncrona No EarlangDocumentos MongoDB Lock Disco Assncrona No JavaDocumentos SimpleDB Nenhum S3 Assncrona NoGrafo DEX Lock ACID Parcial Java, C++Grafo Neo4j Lock Disco ACID JavaGrafo OrientDB Lock e MVCC Disco ACID Parcial Java, C++ Fonte: Tabela baseada em resumo disponvel em Cattell (2010).
  • 51. 52 Tabela 2: Site oficial dos produtosOrientao Banco de Dados SiteChave-Valor DynamoDB http://aws.amazon.com/pt/dynamodb/Chave-Valor Membrain http://www.schoonerinfotech.com/products/membrain/index.phpChave-Valor Memcache http://memcached.org/Chave-Valor Redis http://try.redis-db.com/Chave-Valor RIAK http://wiki.basho.com/Chave-Valor Scalaris http://code.google.com/p/scalaris/Chave-Valor Tokyo http://fallabs.com/tokyocabinet/Chave-Valor Voldermort http://www.project-voldemort.comColunas BigTable http://labs.google.com/papers/bigtable.htmlColunas Cassandra http://incubator.apache.org/cassandra/Colunas HBase http://hbase.apache.org/Colunas HyperTable http://hypertable.org/Documentos CouchDB http://couchdb.apache.orgDocumentos MongoDB http://www.mongodb.org/Documentos SimpleDB http://aws.amazon.com/pt/simpledb/Grafo DEX http://www.sparsity-technologies.com/dex.phpGrafo Neo4j http://www.neo4j.org/Grafo OrientDB http://www.orientdb.org/index.htm Na Tabela 2 so apresentados os endereos das pginas oficiais dos produtos.
  • 52. 535 BANCO DE DADOS DYNAMO O Dynamo foi apresentado em 2007 baseado nos seguintes requisitos e pressupostos(DECANDIA, et al., 2007): i) Modelo de consulta: operaes de leitura e escrita de dados identificados por uma chave, no permitindo operaes em mltiplos registros e nem esquema relacional. j) Propriedade ACID: experincias na Amazon mostraram que para prover as caractersticas ACID necessrio ter uma baixa disponibilidade, no entanto a disponibilidade um dos requisitos principais do SGBD. Sendo assim, o objetivo era diminuir a consistncia se isso trouxesse maior disponibilidade. k) Eficincia: o sistema deve funcionar em uma infraestrutura formada por hardware de baixo custo. l) Uso Interno: somente utilizado na infraestrutura interna da Amazon, onde o ambiente considerado seguro no necessitando de autenticao e autorizao. m) Escalabilidade Incremental: o sistema deve ser capaz de aumentar o processamento horizontalmente no menor tempo possvel na operao e nos sistemas adjacentes. n) Simtrico: cada nodo da infraestrutura tem as mesmas responsabilidades, no existindo nodos com funes ou responsabilidades distintas. o) Descentralizao: alm de simtrico, a descentralizao peer-to-peer deve ser utilizada ao invs de controle centralizado. p) Heterogenia: o sistema deve ser capaz de explorar melhor a heterogenia da infraestrutura, ou seja, o processamento do nodo deve ser proporcional s suas capacidades.5.1 Desenho da Soluo Para que o Dynamo possa ser particionado, replicado, versionado e escalvel, foramutilizadas algumas tcnicas que so listadas na Tabela 3: Tcnicas de implementao. Tabela 3: Tcnicas de implementaoProblema Tcnica Vantagens
  • 53. 54Particionamento Consistent Hashing Escalabilidade incrementalAlta disponibilidade na Vector clocks com reconciliao O tamanho da verso estgravao na leitura dissociado da taxa de utilizaoRecuperao de falhas Antientropia utilizando rvores Sincronizao de rplicas empermanentes Merkle background Mantm a simetria e evita um Protocolo Gossip-basedScios e deteco de falhas registro centralizado de membership informaes Fonte: Tabela baseada em resumo disponvel em DeCandia, et al. (2007).5.2 Particionamento e Replicao Para realizar o particionamento dos dados utilizada a tcnica de consistent hashingonde a funo hash tratada como um espao circular fechado ou anel. A cada nodo atribudo um valor aleatrio que representa a sua posio no anel. Para cada chave de valor calculado o valor do hash que corresponde a uma posio no anel. Com base nesta posio, oanel percorrido no sentido horrio at encontrar a primeira posio maior que a calculada,sendo assim cada n responsvel pela regio no anel entre o seu predecessor e ele mesmo (oprocesso pode ser visto na Figura 3). A verso padro de consistent hashing apresenta dois problemas: c) A distribuio aleatria de ns gera uma distribuio no uniforme de dados e processamento. d) O algoritmo feito para um ambiente homogneo de ns. Para resolver esses problemas foi utilizada uma variao do algoritmo que utiliza oconceito de ns virtuais. Cada n fsico pode gerar mltiplos ns virtuais (de acordo com acapacidade do servidor), que so mapeados no anel.