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
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.
Citation preview
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.