Abordagem Comparativa nos Processos de Armazenamento e

Propaganda
Abordagem Comparativa nos Processos de Armazenamento e
Recuperação de Dados Multimídia
Igor Modesto Alves1, Ary H. M. Oliveira1, Glenda Botelho1, Ivo S. M. Oliveira2
1
2
Universidade Federal do Tocantins (UFT), Palmas– TO – Brazil
Instituto Federal de Educação, Ciência e tecnologia (IFTO), Paraíso – TO – Brazil
{igorma, aryhenrique, glendabotelho}@uft.edu.br, [email protected]
Resumo. O tráfego de dados na rede mundial de computadores tem atingindo
proporções inéditas em termos de volume na atualidade. Essa demanda se dá
principalmente pelo compartilhamento de grandes volumes de dados multimídias
por pessoas que utilizam a internet. Grandes empresas tem buscado soluções para
otimizar os processos de armazenamento e recuperação de dados multimídia. Esse
trabalho tem o objetivo de analisar comparativamente os diversos tipos de bancos
de dados nos processos de armazenamento e recuperação de dados multimídias em
termos de tempo de resposta. O cenário proposto nessa analise se dá em ambiente
de maquinas virtuais no qual cada servidor de banco de dados é processado
isoladamente.
1. Introdução
O tráfego de dados na rede mundial de computadores tem atingindo proporções inéditas em
termos de volume no contexto atual. Este crescimento deve-se principalmente ao aumento do
número de sensores que consequentemente capturam um volume maior de diferentes tipos de
dados e informações, além de ferramentas de uso pessoal e compartilhado tais como as redes
sociais. Os dados produzidos têm como principal característica o grande tamanho em bytes e
muitas vezes não estão representados em uma estrutura padrão, ou seja, são dados não
estruturados. Dentre os dados que normalmente são compartilhados pela internet estão os
streamings de vídeo, as imagens e os arquivos de áudio, ou músicas, documentos de texto,
arquivos compactados, e outros. Esses por sua vez são conceituados como dados multimídia.
A inclusão digital em massa e a concepção de ferramentas como o Facebook 6,
Twitter , YouTube8, dentre outras unidas a grande quantidade de pessoas utilizando os
recursos na internet tem resultado em um aumento no tráfego de dados pela rede de
computadores, criando uma necessidade por meios de armazenamento eficazes e eficientes.
No que diz respeito ao armazenamento, basicamente existem duas formas de persistir os
dados nos sistemas de computadores, ou através de sistemas de arquivos ou por sistemas de
banco de dados. O armazenamento em sistemas de arquivos elimina a necessidade de Essa
análise é necessária pelo fato da técnica de armazenamento não apresentar os controles de
consistência na manipulação e acesso a informação.
7
Um Sistema de Gerencia de Banco de Dados (SGBD) é uma coleção de dados interrelacionados e um conjunto de programas para acessar esses dados (Silberschartz, 2006, p. 1).
Já os Bancos de dados propriamente ditos são as coleções de dados gerenciados pelos
6
https://www.facebook.com/
https://twitter.com/
8
https://www.youtube.com/
7
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
49
SGBD's. De fato, e conforme Silberschatz (2006) o principal objetivo de um SGBD é fornecer
uma maneira de recuperar informações de banco de dados que seja tanto conveniente (maior
usabilidade) quanto eficiente (maior desempenho). Atualmente, existem várias abordagens de
armazenamentos em bancos de dados, dentre as quais destacam-se a relacional (estruturado),
orientado a objetos, hierárquico, chave-valor, rede (ou grafos), coleção de documentos e
família de colunas.
O desempenho é um fator crucial para a adoção de soluções de bancos de dados, ainda
torna-se mais importante quando a demanda de utilização de recursos na internet é intensa e
na mesma proporção em que ocorrem as requisições nos bancos de dados. Assim, a prioridade
de tempo de resposta é bem requisitada na produção de tecnologias de armazenamentos de
dados. A comparação de tecnologias de sistemas de banco de dados, estratégias e modelagem
de registros existentes de acordo com fatores predefinidos contribui para o conhecimento e
decisão pela melhor utilização das tecnologias. Sabendo as vantagens e desvantagens de cada
uma em determinado fator pode-se optar por escolher a melhor forma que se encaixa em
determinada utilidade.
As opções do mercado tecnológico para o armazenamento de dados multimídia são
bem vastas. Assim, é possível analisar as diversas opções de banco de dados com o objetivo
de verificar qual solução poderia ser melhor adotada, baseado nas características e
peculiaridades do tipo de dado a ser armazenado. No caso deste trabalho, os dados são
heterogêneos e não-estruturados, trazendo a necessidade de se analisar formas de
armazenamento mais genéricas de forma a englobar o maior número de tipos de dados (áudio,
vídeo, imagens, documentos e etc.).
Análises comparativas de bancos de dados são vastas em projetos na literatura. E.
Bernuy et al (2009), compara bancos de dados comerciais em seus diversos tipos de
armamento em cenário de conjunto de dados multimídia dos tipos áudio, vídeo, imagem e
arquivos de documentos. Nesse projeto Bernuy et al (2009), relata as abordagens de
armazenamentos relacionais em termos de desempenho para os SGBDs, PostgreSQL e SQL
Server e discute os tipos de armazenamento utilizados em cada um desses bancos.
M. Diana et al (2010) analisam bancos de dados NoSQL [No-SQL, 2014] para
armazenamento de dados na Web 2.0. Esse estudo relata as necessidades de utilização de
otimização de processos em armazenamento e recuperação de grandes volumes de dados.
Essa necessidade é justificada pelo fato de a quantidade de dados gerados, armazenados e
processados ter atingidos escalas inéditas na Web 2.0. Nessa abordagem são analisados
bancos de dados chave-valor, famílias de colunas, documentos e orientados a grafos. I. India
(2013) propõe a utilização de armazenamentos não relacionais para o controle de grande
volume de dados. A solução proposta por esse projeto tem base na utilização de bancos de
dados orientados a documentos, e destaca suas vantagens e desvantagens nos diversos
quesitos de benchmark. Alguns dos SGBDs relatados nesse artigo são: CouchDB, MongoDB,
SimpleDB e OrientDB.
Os SGBDs Não relacionais, também denominados NO-SQL (Not Only SQL) são
usados em aplicações que não acomodam bem as propriedades ACID (Atomicidade,
Consistência, Isolamento e Durabilidade. Geralmente esses tipos de SGBDs são utilizados em
aplicações da web 2.0 que dispensam a rigidez da consistência para atender a outras
propriedades, tais com a distribuição geográfica dos bancos de dados e a alta disponibilidade
do sistema [Gilbert & Lynch, 2002]. Geralmente, essas bases de dados trabalham com
grandes volumes de dados em uma arquitetura massivamente distribuída, implementando
propriedades como a consistência eventual [Vogels, 2009].
50
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
Diante do cenário descrito nesta sessão, o objetivo deste trabalho e implantar um
conjunto de sistemas de banco de dados que implementam as mais variadas abordagens de
armazenamento, procedendo com o armazenamento de um conjunto de imagens de diferentes
tamanhos (em bytes), e posterior recuperação, de forma a analisar o desempenho de cada
abordagem. Ao final, serão gerados gráficos comparativos apresentando o desempenho de
cada uma das abordagens implantadas.
3. Metodologia
A abordagem proposta neste artigo analisa o desempenho de um conjunto de bancos de dados
nos processos de inserção e recuperação de dados multimídia, no contexto de armazenamento
de grandes volumes de dados. Para executar a análise foi necessário criar um cenário com
uma série de condições para possibilitar uma a analise viável e coerente. Desta forma,
inicialmente, foram selecionadas diferentes de combinações de amostras, parâmetros e
operações para subsidiar a execução e análise dos experimentos.
As abordagens de armazenamento e recuperação são representadas pelos diferentes
tipos de bancos de dados implantados para a análise neste trabalho, os quais se dividem em
SGBD's relacionais e não-relacionais. Os SGBDs relacionais selecionados foram o IBM DB2,
Firebird, Postgres SQL e Microsoft SQL Server. Já os NO-SQL são divididos segundo o
modelo de dados utilizado para a representação dos registros. Foram utilizados os SGBDs de
Armazenamento de Documentos, MongoDB e CouchDB, os de Famílias de Colunas
Hypertable e Cassadra, e os de armazenamento de XML EXist e BaseX. Todas as
características desses SGBDs, com os drivers utilizados, links de acesso e versão são
apresentados na tabela 1.
Para a execução dos ensaios foram selecionadas mídias com tamanhos e extensões
variadas, contendo imagens com extensões JPEG (Joint Photographic Experts Group), PNG
(Portable Network Graphics) e TIFF (Tagged Image File Format) com tamanhos
aproximados de 100 kilobytes, 1, 10 e 100 megabytes. Os dados selecionados possuem
variados tipos de finalidade, conforme mencionado alguns são arquivos de imagens, porém,
foi utilizada uma mídia de vídeo MP4 de 1 gigabyte.
Os Bancos de Dados Relacionais disponibilizam opções de armazenamento de dados
em um formato binário denominado tipo BLOB (Binary Large Object). Alguns bancos de
dados relacionais disponibilizam tipos de dados distintos para tratamento de dados
multimídia, por exemplo, o banco de dados PostgreSQL trabalha com o tipo OID, já o banco
de dados Microsoft SQL Server, utiliza um tipo de armazenamento por referencia externa
controlado pelo tipo FILESTREAM. As mídias citadas no parágrafo anterior foram inseridas
nos SGBDs relacionais utilizando esses três tipos de dados.
O Python foi a linguagem de programação escolhida para o desenvolvimento do
sistema que executa as operações de inserção e busca dos dados para a realização dos testes
necessários para analisar as abordagens de armazenamento multimídia. Foi necessária a
utilização de bibliotecas e drivers específicos para acessar e manipular cada banco de dados
experimentado, bem como, o framework web2py para acesso e controle em um cenário de
sistema web. As bibliotecas dos bancos de dados disponibilizaram os métodos para o
gerenciamento dos processos de bancos de dados, tais como conexão, inserção e recuperação
de dados, todos eles implementados e utilizados nos testes.
As técnicas de inserção e recuperação necessitam de métricas especificas para
execução dos processos do experimento, uma vez que os dados utilizados no experimento têm
tamanhos variados (na faixa de kilobytes, megabytes e gigabytes). Para que o experimento
tenha adequação tanto mídias de tamanho reduzido quanto aquelas com tamanho maior foi
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
51
necessário armazenar dados em fragmentos de tamanho reduzido, no caso deste trabalho 4
megabytes. Essa adaptação é necessária, pois há limitações de processamento em uma dada
imagem de uma só vez. Essas limitações são tanto no hardware do computador quanto nas
diversas arquiteturas de bancos de dados.
3.1. Arquitetura Implantada para a Execução do Experimento
O ambiente de testes foi construído para manter um servidor de aplicação aguardando
requisições dos clientes a partir de estações de trabalho, bem como um um servidor de banco
de dados que fornece o serviço de armazenamento dos diferentes SGBD’s utilizados nos
experimentos. Os SGBD’s foram montados sob um ambiente de virtualização sob o Monitor
de Máquina Virtual (Virtual Machine Monitor - VMM) Xen-hypervisor. Todas as VMs foram
definidas com as configurações tendo 2 núcleos de VCPUs, com memória 3.548 megabytes e
disco rígido virtual de 101.7 gigabytes, com o disco virtual no padrão VHD (Virtual Hard
Disk), reconhecido pelo Xenserver.
3.2. Procedimento Experimental
Os testes foram realizados com apoio da aplicação web desenvolvida para gerenciar as
operações de inserção e busca nos SGBDs. Para cada bateria de testes foram especificados o
SGBD utilizado, com o nome do banco de dados, o tipo de dado que representa o domínio da
informação (OID, FILESTREAM, BLOB), o tipo de operação (inserção/busca) e definição da
quantidade de ensaios que cada uma das operações será submetida. A lista dos bancos de
dados relacionais e não relacionais, juntamente com as versões utilizadas nos experimentos
são apresentados na tabela 2.
Como a aplicação foi desenvolvida na linguagem python, foram utilizados os módulos
(drivers) como meio de importação de bibliotecas adicionais ao código. Um módulo
representa um arquivo ou conjunto de arquivos contendo definições de declarações python.
Cada um dos SGBD possui um módulo específico para execução de operações em bancos de
dados. A tabela 2 apresenta a lista de módulos python utilizados para executar as operações de
banco de dados nos experimentos.
3.3. Execução do Experimento
O script da figura 2 ilustra o escopo do algoritmo de automatização do experimento. Esse
algoritmo foi adaptado para uma ilustração mais intuitiva de como o experimento são
executados por completo e como os tempos médios são capturados e calculados. A variável
list_datas na Figura 2 inicializa os requisitos de amostras de experimento, esse atributo possui
uma lista de nomes que representam as mídias coletadas. Deve-se observar que cada tabela
possui uma coluna com um tipo de dado específico.
Tabela 1: Módulos python para execução das operações nos bancos de dados.
Tipo de
Bancos de
Dados
Relacionais
SGBDs
(Referência)
Módulo
Python
Ver
são
IBM DB2 Express
http://www.ibm.com/us/en/
ibm_db2
10.1
Firebird
http://www.firebirdsql.org/
Kinterbasdb
2.5.2
PostgreSQL
http://www.postgresql.org/
psycopg2
9.1.6
Microsoft SQL
Server
http://www.microsoft.com/ptbr/server-cloud/products/sql-server/
Pyodbc
2008
http://couchdb.apache.org/
couchdb
1.2.1
Orientado a CouchDB
52
Link
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
Documento
Colunas de
Famílias
MongoDB
Hypertable
http://www.mongodb.org/
http://hypertable.org/
Pymongo
2.2.3
hypertable
0.9.7.
1
Cassandra
https://cassandra.apache.org/
pycassa
1.2.2
eXist
http://exist-db.org/
eulexistdb
2.0
BaseX
http://basex.org/
BaseXClient 7.6
XML
Para cada dado da lista de dados (list_data) serão executadas uma sequência de comandos.
Primeiramente o dado é lido parcialmente (executa-se a leitura dos 4Mbytes iniciais do dado
multimídia) para geração do valor md5. Em seguida, outro laço repetição é executado, para
executar as operações de inserção, consulta e deleção do dado. Nos experimentos, cada
operação foi repetida 11 vezes, sendo que o maior tempo gerado por uma operação foi
ignorado, e os outros 10 coletados foram usados para calcular o tempo médio.
Figura 7: Cálculo da média do tempo de execução de cada operação.
4. Resultados e Discussão
Os resultados das execuções dos testes foram organizados em duas classes, a dos testes
realizados com SGBDs relacionais, e dos testes com SGBDs NO-SQL. Foram gerados
gráficos de comportamento baseado em tempo de resposta para cada uma dessas classes, e as
analyses foram realizadas separadamente por operações, primeiramente em inserções, e em
seguida, através da recuperação dos dados multimedia.
4.1. Comparação em Bancos de Dados Relacionais
A figura 3 ilustra o tempo médio de execução, em milissegundos, do processo de
armazenamento em base de dados relacionais em milissegundos utilizando as amostras com
tamanhos variados de 100Kbytes à 1Gbyte aproximadamente. Já a figura 4 utiliza os mesmos
dados de amostra e apresenta o comportamento de execução para a operação de recuperação
dos mesmos dados multimídia nos bancos de dados relacionais.
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
53
Figura 8: Inserção de dados em Bancos de Dados relacionais.
O pior desempenho foi do armazenamento de tipo BLOB do PostgreSQL. O PostgreSQL
também armazena dados com tipo OID, que comparando com o tipo BLOB do mesmo banco
obteve quase a metade do tempo de execução em todos os tamanhos de dados testados. Dessa
forma é notável que o PostgreSQL precisou criar uma forma de armazenamento especifica
para tratar dados multimídia. Só que comparando o armazenamento OID com os tipos de
armazenamentos dos demais bancos de dados relacionais, observa-se que o desempenho foi
razoável.
De forma geral o IBM DB2 apresentou o melhor resultado na operação de inserção. Mas
apesar disso, esteve entre os piores desempenhos na operação de recuperação. Analisando a
figura 4 observa-se que a recuperação de um dado de 100 megabytes demandou por um maior
tempo de execução, ou seja, 23.099 milissegundos. Assim como na inserção, o
armazenamento do tipo BLOB do PostgreSQL obteve o pior desempenho na operação de
recuperação dos dados, registrando as maiores demandas de tempos para a recuperação de
dados de 1 Mbyte, 10 Mbytes e 1 Gbyte.
Os tipos diferenciados de armazenamento (OID e FILESTREAM) de forma geral
recuperaram dados em um espaço de tempo menor, tendo um melhor desempenho em relação
aos demais. Isso justifica a necessidade de utilizar esses tipos de armazenamento para o
processamento de dados multimídia. Visando o desempenho na operação de recuperação de
dados, na abordagem de bancos de dados relacionais, armazenar dados em forma de objeto,
ou em sistemas de arquivos são boas opções para o gerenciamento de grandes volumes de
dados não interpretados.
54
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
Figura 9: Recuperação de dados em Bancos de Dados relacionais.
4.2. Comparação em Bancos de Dados NoSQL
Os Bancos de Dados NoSQL são soluções de banco de dados que possuem características de
não implementarem o modelo relacional, distribuídos e horizontalmente escaláveis
(arquitetura distribuída – nothing sharing). Os bancos de dados NoSQL utilizam diferentes
abordagens para modelar e armazenar a informação utilizando estruturas hierárquicas nos
SGBDs XML, com o eXist e BaseX, estruturas de famílias de colunas, com o Hypertable e
Cassandra, e armazenamento de documentos, tendo como exemplos o MongoDB e CouchDB.
Cada um desses conjuntos de bancos de dados foram avaliados segundo a metodologia
proposta, e após a execução e análise, mostrados nas figuras 5 (inserção) e 6 (recuperação),
foi observado que o MongoDB obteve melhor desempenho na inserção de dados multimídia
de todos os tamanhos (100 Kbytes a 1 Gbytes) comparando com todos os bancos de dados
NoSQL testados neste trabalho. O CouchDB, apesar de ser orientado a documentos não
obteve um desempenho próximo ao obtido com o MongoDB. Isso individualiza o bom
desempenho em armazenamento de dados ao MongoDB e não somente a estratégia de
armazenamento e processamento de registros.
O pior desempenho observado nos SGBDs NoSQL na operação de inserção foi a do BaseX.
Foi observado nos testes que os Bancos de dados XML não obtiveram bom desempenho na
operação de inserção. Isso acontece porque houve a necessidade de converter os dados em
Base64, e isso gerou um custo de codificação de dado que foi adicionado ao tempo de
inserção dos dados, já que os documentos XML não interpretam dados binários diretamente.
Já os bancos de dados orientados a colunas obtiveram ótimos tempos na inserção. Tanto o
Hypertable quanto o Cassandra geraram resultados próximos ao melhor resultado (do
MongoDB). O bom desempenho é justificável pelo fato dos SGBDs orientados a colunas
serem projetados para armazenamento de grande volume de dados, esse fundamento se
adequa a armazenamento de dados multimídia.
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
55
Figura 10: Inserção de dados em Bancos de Dados NoSQL.
Apesar de alguns bancos de dados NoSQL processarem a inserção de dados muito
rápido, a abordagem de inserção de dados não sobrepõe a capacidade de recuperação desses
dados. Isso ocorre porque é melhor ter um banco de dados que recupere rapidamente os dados
e insira-os com desempenho razoável do que processar inserções mais rápidas e obter
desempenho mediano na recuperação de dados. Essa noção é bem compreensível se for
analisado que a solicitação de inserção em bancos de dados é menos requisitada do que a
operação de recuperação. Por exemplo, o dado de 1 Gbytes é inserido uma única vez no banco
de dados, já que não há necessidade de armazenar réplicas do mesmo dado. Mas a solicitação
de consulta desse dado pode ser requisitada diversas vezes, pois os processos de consulta de
forma geral são executados com maior frequência em uma solução que utiliza banco de dados.
A análise comparativa de recuperação de dados é prioritária na abordagem de bancos de
dados. O banco de dados NoSQL que obteve melhor desempenho na recuperação de dados
multimídia, em âmbito geral, foi o Hypertable (figura 6). O Hypetable processou a
recuperação de dados em menor tempo nos dados de tamanhos 1 Mbyte, 100 Mbytes e 1
Gbyte, respectivamente, com valores de 9.483 e 4.339 milissegundos. O MongoDB foi
melhor na recuperação de dados de tamanho 100 Kbytes e 10 Mbytes, mas em comparação
com o Hypertable esses valores são equivalentes.
Bancos de dados orientados a colunas tem proposito de armazenar grande volume de dados de
forma rápida. Segundo R. Cattel (2011) os grupos de colunas são atualizados em caches de
memória e posteriormente são liberados no disco rígido representados periodicamente de
forma compacta. Dessa forma, a recuperação de dados é processado muito rápido, pois os
dados são acessados diretamente na cache.
56
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
Figura 11: Recuperação de dados em Bancos de Dados NoSQL.
4.3. Análise Comparativa de todos os Bancos de Dados do experimento
Nas operações de inserção é curioso observar que os piores desempenho de armazenamento
de dados nos bancos de dados NoSQL testados gerou tempos de execução menores do que os
melhores desempenhos das inserções em bancos de dados relacionais. Observando as figuras
3 e 5, é possível notar que, os maiores valores de bancos de dados NoSQL a partir da
sequência, que indica os tamanhos de dados, são respectivamente: 62, 183, 1.260, 15.713 e
146.985. Os menores tempos gerados por bancos de dado relacionais são: 31, 184, 1.323,
15.282 e 153.059. Comparando sequencialmente é notável que os melhores tempos são dos
bancos de dados NoSQL.
Armazenamentos do tipo BLOB em banco de dados relacionais não obtiveram bons
desempenhos e alguns SGBDs necessitaram aplicar funcionalidades especificas para
tratamento dos dados multimídia. Assim como o PostgreSQL fornece o tipo OID, o Microsoft
SQL Server opta pelo FILESTREAM. Ambas as metodologias são diferenciadas e conseguem
recuperar dados com melhor desempenho do que os processamentos de BLOB em
armazenamentos relacionais.
Metodologias NoSQL são tendências na atualidade, e mostraram ser mais eficazes, em
termos de desempenho, na inserção e recuperação de dados multimídia. Bancos de dados
orientados a colunas, representados por Hypertable e Cassandra, são mais rápidos para
recuperar dados binários. O banco de dados MongoDB também demonstrou ótimo
desempenho para consulta de dados, mas o mesmo desempenho não foi aplicável ao
CouchDB que é do mesmo tipo.
5. Conclusão
Neste trabalho foram apresentadas e discutidas diversas abordagens para o armazenamento e
consulta de dados multimídia. Através dos resultados foi possível avaliar as diversas formas
de armazenamento, levando em consideração as diversas técnicas de banco de dados para
gerenciar a criação, atualização e exclusão dos dados. Foram analisadas estratégias que são
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
57
apoiadas por técnicas de banco de dados com o objetivo de manter as informações
armazenadas de forma consistente, seguindo as propriedades ACID.
Com os resultados dos testes foi constatado que as abordagens de armazenamento
orientadas a colunas apresentaram-se como as mais promissoras neste cenário de
gerenciamento de dados multimídia, principalmente em termos de tempo de resposta. Esta
característica reforça o fato dos SGBDs NoSQL serem considerados como uma grande
tendência na atualidade, pois, todos testados neste trabalho mostraram-se ser bem eficientes
em termos de desempenho, tanto nas operações de inserção quanto nas de recuperação de
dados multimídia (dados complexos e não estruturados). Já os SGBDs Relacionais em termos
operacionais não obtiveram bons desempenhos utilizando armazenamento BLOB,
principalmente na recuperação de dados multimídias, mostrando-se ser uma boa solução para
dados simples e estruturados, porém, não sendo eficaz para dados complexos e nãoestruturados.
Referências
Bernuy, E.; Crispin, L. R.; Ribeiro, L. (2009). Análise de banco de dados com suporte a
multimídia. Universidades Anhembi Morumbi.
Cattell, Rick (2011). "Scalable Sql And Nosql Data Stores." Acm Sigmod Record, 39, pp.
412-27.
De Diana, Mauricio; Gerosa, Marco Aurélio (2010). Nosql na web 2.0: Um estudo
comparativo de bancos não-relacionais para armazenamento de dados na web 2.0.
Deitel, Harvey M. (2003). “Xml Como Programar”. Bookman.
Gilbert, S. and Lynch, N. (2002). Brewer's conjecture and the feasibility of consistent,
available, partition-tolerant web services. ACM SIGACT, 33, 2, pp. 51-59.
India, I. (2013). A Review On Document Oriented And Column Oriented Databases.
No-Sql (2014). “Not Only SQL”. Acesso 20/09/2014. Disponivel em: http://nosqldatabase.org/.
Silberschatz, Abraham, Henry F. Korth, and S. Sudarshan. (2006) Sistema de banco de dados.
Elsevier.
Tosatto, Daniele (2012). Citrix Xenserver 5.6 Administration Guide. Packt Pub Limited.
Vogels, W. (2009) “Eventually Consistent”. Communications of the ACM, January, 1, 52, pp.
40-44.
58
XVI Encoinfo – Encontro de Computação e Informática do Tocantins
Download