Você está na página 1de 12

COMPARAÇÃO DO DESEMPENHO DE BANCOS DE DADOS NO SQL

RESUMO: Os bancos de dados No SQL surgem para suprir limitações de bancos de dados
relacionais. Com o aumento na sua popularidade há uma expansão no número de sistemas
disponíveis, o que dificulta a tomada de decisão quanto à opção que melhor supre as
necessidades organizacionais. O objetivo do trabalho é realizar um estudo comparativo de
bancos de dados no SQL. A fundamentação teórica foi elaborada por meio de pesquisa.
Assim, o trabalho contribuiu para uma análise de diferentes bancos e seu desempenho, com
resultados que demonstraram qualitativamente e quantitativamente as características e
apontaram as principais vantagens. Ao final foi possível destacar o desempenho dos bancos
Couchbase e Aerospike para a carga de trabalho.
Palavras-chave: No SQL, banco de dados, análise desempenho.

COMPARISON OF NO SQL DATABASE PERFORMANCE

ABSTRACT: No SQL databases emerge to overcome limitations of relational databases.


With the increase in its popularity, there is an expansion in the number of available
systems, which makes it difficult to make decisions about the option that best meets the
organizational needs. The objective of the work is to carry out a comparative study of no
SQL databases. The theoretical foundation was developed through research. Thus, the
work contributed to an analysis of different banks and their performance, with results
that demonstrated qualitatively and quantitatively the characteristics and pointed out the
main advantages. At the end, it was possible to highlight the performance of the
Couchbase and Aerospike banks for the workload.
Keywords: No SQL, database, performance analysis.

INTRODUÇÃO usuários cada vez mais as soluções


tecnológicas correspondem a uma “caixa
O aumento na disponibilidade do acesso à preta” que devem efetivamente suportar
Internet, bem como a velocidade deste seus processos de negócio. Para se
acesso, veio a popularizar ferramentas manterem competitivas e concorrer com os
tecnológicas baseadas em cloud grandes players do mercado em que
computing, o que delineia um novo atuam, as pequenas e médias empresas
panorama na oferta de soluções devem oferecer soluções igualmente
tecnológicas em geral. Com a abstração robustas e confiáveis, com uma fração do
trazida pelo cloud computing e por modelos orçamento de seus concorrentes, além de
como SaaS (Software as a Service) e IaaS preocupar-se com a escalabilidade da
(Infrastructure as a Service), para os solução para quando ocorrer o crescimento
da demanda. Neste contexto surgem os aos bancos de dados no SQL:
bancos de dados no SQL, sistemas de Throughput de operações, latência de
armazenamento que se propõem a realizar gravação e latência de leitura. A aplicação
muito mais do que apenas armazenar dos benchmarks selecionados foi
informações, mas também complementam executada em um ambiente disponibilizado
as soluções tecnológicas oferecendo pelo LARCC1 (Laboratory of Advanced
velocidade e suporte a grandes volumes de Researches for Cloud Computing) (data), e
dados. Com o aumento da demanda por o mesmo foi composto de uma única
este tipo de software, porém, surgiram máquina servidora. Foi avaliado o
muitos concorrentes que aparentam desempenho das diferentes tecnologias
homogeneidade em uma avaliação sob cargas de trabalho compostas de
superficial e atendem as necessidades leituras e escritas. Mais cenários de
empresariais em maior ou menor grau. A avaliação serão elaborados conforme as
grande quantidade de opções e a falta de possibilidades dos benchmarks
estudos comparativos entre estas opções, selecionados para avaliação.
bem como a pressão mercadológica por
uma decisão rápida, leva as empresas à DESENVOLVIMENTO
uma decisão sem embasamento, o que
ameaça toda a operação de NO SQL
implementação e implantação. O trabalho
apresenta o referencial teórico que embasa Fowler (2015) afirma que podem ser
um comparativo das funcionalidades dos definidos como bancos de dados no SQL
bancos de dados no SQL apresentados. aqueles bancos que não requerem um
rigoroso esquema para os registros, que
MÉTODO possam ser utilizados de forma distribuída
em hardware comum, e que não utilizem o
Após definir as tecnologias que se modelo matemático dos bancos de dados
destacaram nas propriedades entendidas relacionais. Segundo Kabakus e Kara
como mais relevante pelo meio acadêmico, (2016), bancos de dados relacionais
realizar uma avaliação comparativa de (RDBMS) se baseiam no modelo ACID
desempenho com a geração de cargas de (Atomicity, Consistency, Isolation,
trabalho (workload) através da aplicação Durability) para garantir a consistência e
de benchmarks, os quais serão estudados manter a integridade dos dados, enquanto
e escolhidos de acordo com o suporte aos os bancos no SQL partem do princípio
softwares selecionados. Alguns dos BASE (Basically Available, Soft-state,
indicadores de desempenho que serão Eventually consistent) para atingir melhor
avaliados em relação ao hardware são: desempenho, disponibilidade e
alocação de memória RAM, alocação de escalabilidade. Porém, segundo Fowler
espaço em disco, uso de CPU e taxa de (2015, p. 18), vários bancos no SQL têm
fragmentação da memória; em relação adicionado suporte ao modelo ACID nos
últimos anos. Os bancos de dados no SQL Figura 12 - Fluxo DBMS Tradicional x
podem possuir armazenamento primário IMDB
tanto na memória RAM quanto o modelo
tradicional em discos. Ambos os modelos Mas mesmo com o armazenamento em
de armazenamento possuem suas memória possuindo suas vantagens,
vantagens e desvantagens, e podem ser principalmente em velocidade, eles não
utilizados em complemento um ao outro. podem ser considerados a solução
Os bancos de dados em memória ou in- definitiva, pois, ainda precisam ser
memory databases (IMDB), como seu complementados por um sistema de
próprio nome sugere, são bancos de dados armazenamento em disco para gravar os
que utilizam a memória principal do dados de modo permanente. Quanto à sua
computador ou memória RAM como classificação, os bancos de dados no SQL
dispositivo principal de armazenamento de podem ser categorizados em quatro
dados (LAKE e CROWTHER, 2013, p. classes conforme suas otimizações: chave-
183). O desempenho destes sistemas de valor (key-value), documento (document),
armazenamento é significantemente melhor família de colunas (column family ou
do que sistemas tradicionais devido ao uso columnar) e banco triplo (graph database
da memória volátil para o mapeamento de ou triple). É possível classificar como do
registros (ABRAMOVA, BERNARDINO e tipo chave-valor aqueles bancos de dados
FURTADO, 2014). O principal motivo para cuja informação armazenada possui a sua
o uso de um sistema de armazenamento respectiva chave. A Amazon utiliza seu
de dados em memória tem relação com o sistema key-value Dynamo (DECANDIA,
fato de que a gravação e leitura de dados HASTORUN, et al., 2007) para gerenciar
de discos rígidos (dispositivo principal de funcionalidades tais como: listas de mais
armazenamento dos bancos de dados vendidos, carrinhos de compras,
tradicionais) é milhares de vezes mais lenta preferências do consumidor,
do que a mesma operação utilizando a gerenciamento de produtos, entre outras
memória do computador (LAKE e aplicações. A maioria dos bancos de dados
CROWTHER, 2013, p. 183). Os bancos de que possuem armazenamento em memória
dados em memória, neste caso, vêm são do modelo chave-valor principalmente
facilitar a redução do acesso ao disco a fim pela simplicidade. Já os bancos orientados
de melhorar o desempenho de sistemas a documentos (documents) resultaram, por
que os utilizem. exemplo, no MongoDB (MONGODB, 2009)
e CouchDB (COUCHDB, 2005), onde as
informações são armazenadas em uma
estrutura de árvore, em formatos como
XML ou JSON. O governo de Chicago
utiliza uma plataforma para gerenciar
operações inteligentes construída sobre
MongoDB denominada WindyGrid
(CRAWFORD e GOLDSMITH, 2014). Esta de cada um dos tipos de bancos de dados
ferramenta foi projetada para trabalhar com no SQL citados, os quais foram
o grande volume dados gerados pela determinados a partir dos trabalhos
cidade. Através de um mapa de Chicago, é relacionados, mesclando tecnologias já
possível visualizar informações como estudadas por outros autores, agregando
chamadas para os serviços 911 e 311, assim possibilidades comparativas.
trânsito, informações de construções,
tweets públicos e outros dados críticos Bancos de dados chave-valor: Os
(THORNTON, 2013). Os bancos de dados bancos de dados no SQL da variedade
de família de colunas (column family ou chave-valor são os representantes com as
columnar) são similares à estrutura estruturas mais simples dentre os
tradicional de tabelas dos bancos de dados existentes (POKORNY, 2013) e possibilita
relacionais, porém, otimizados organizando a visualização da base de dados como uma
as informações armazenadas em colunas tabela hash. No entanto, cabe ressaltar que
os bancos classificados nesse modelo eles possuem um amplo espectro de casos
foram influenciados pelo BigTable da de uso, sendo largamente adotados, tanto
Google (CHANG, DEAN, et al., 2008), tais como armazenamento primário, quanto
como Cassandra (APACHE SOFTWARE para auxiliar outros sistemas de
FUNDATION, 2008) e HBase (APACHE armazenamento (CARLSON, 2013). Neste
SOFTWARE FOUNDATION, 2008). O modelo o armazenamento dos dados é a
Cassandra é utilizado pelo eBay para combinação de um conjunto de chaves, e
diversas funcionalidades, tais como: estas estão ligadas a um valor, string ou
armazenar as notificações de usuários, binário. Na Figura 2, é possível visualizar
gerir os itens das páginas, indicação de um exemplo da organização dos dados
favoritos entre outras aplicações (LUBOW pessoais em um banco chave-valor.
e BRADBERRY, 2013). Por fim, os bancos
de dados de grafos ou triplos (graph > SET “nome” “João da Silva”
database ou triple) armazenam as OK
informações compostas por três elementos: > GET “nome”
sujeito, propriedade ou relacionamento e “João da Silva”
valor (FOWLER, 2015) (KABAKUS e
KARA, 2016). Deste modelo é possível Figura 2 - Exemplo de comandos de um
citar como exemplo o Neo4j (NEO4J, 2007) banco de dados chave-valor
e o JanusGraph (JANUSGRAPH, 2017). Este modelo pode ser considerado de fácil
Cada uma destas categorias traz sistemas integração, possibilitando assim que os
que atendem à diferentes limitações dos dados sejam rapidamente acessados
bancos relacionais tradicionais e se através da sua chave, contribuindo, além
complementam entre si. Nas próximas disso, para aumentar a disponibilidade de
seções serão apresentadas as descrições acesso às informações (FOWLER e
e características de algumas tecnologias, SADALAGE, 2013, p. 213). A manipulação
dos dados de modo geral é muito simples, o desenvolveu para melhorar o
geralmente sendo baseada em comandos desempenho do site Livejournal.com
como o get() e o set( ), que tem por função através de uma solução melhor de cache
obter e entrar valores. Uma desvantagem (GALBRAITH, 2009). A sua implementação
deste modelo é que o mesmo não permite é na linguagem Perl e posteriormente
a recuperação de objetos através de reescrito em C. O Memcached utiliza uma
consultas mais complexas, como pesquisas arquitetura multi-thread e o controle de
com join, por exemplo. concorrência interno é feito através de uma
hash-table estática de locks (ZHANG, TAN,
Redis Redis: (REmote DIctionary Server) et al., 2015). A classificação do
(REDIS, 2009) é um sistema de Memcached como banco de dados é
armazenamento de dados estruturados em discutível, uma vez que o mesmo não
memória que pode ser utilizado como implementa persistência, failover
banco de dados, cache e message broker (GALBRAITH, 2009) nem escalabilidade
(CAO, SAHIN, et al., 2016). Ele opera em horizontal, pois a distribuição dos dados
um modelo cliente-servidor através de entre múltiplas instâncias do sistema deve
conexões TCP utilizando um protocolo ser feita pelo cliente (ZHANG, TAN, et al.,
próprio chamado RESP (REdis 2015). O funcionamento do Memcached
Serialization Protocol). O modelo de dados segue o modelo cliente-servidor, e a
do Redis é composto por cinco estruturas comunicação ocorre através de conexões
de dados diferentes para os valores (string, TCP ou UDP utilizando um protocolo
list, set, sorted set e hash), a persistência próprio que suporta textos puros em ASCII
dos dados da memória em disco através de ou dados binários (SOLIMAN, 2013).
dois métodos (snapshopts chamados RDB
e appendonly file ou AOF, análogo ao Voldemort: O Voldemort (PROJECT
método de journaling dos bancos VOLDEMORT) foi desenvolvido pelo
tradicionais) (ZHANG, TAN, et al., 2015). A LinkedIn em linguagem Java com o objetivo
possibilidade de escalabilidade horizontal de gerenciar funcionalidades dependentes
através do Redis Cluster foi adicionada de associações entre dados da rede social,
apenas em 2015, na versão 3.0 do sistema. tais como a recomendação de
Segundo os autores de (SANFILIPPO, relacionamentos através da análise dos
2010), um sistema deve ser eficiente em relacionamentos atuais (SUMBALY,
um único nó quando for escalado. KREPS, et al., 2012). O Voldemort é
Memcached: O Memcached inspirado no Dynamo, da Amazon
(MEMCACHED) caracteriza-se como um (DECANDIA, HASTORUN, et al., 2007),
sistema genérico de cache em memória. oferece comandos simples (put, get e
Ele foi construído pensando na melhoria de delete) (SUMBALY, KREPS, et al., 2012) e
desempenho de aplicações web através da uma arquitetura completamente distribuída,
redução na demanda de requisições ao onde cada nó é independente e não existe
banco de dados em disco. Brad Fitzpatrick um servidor principal de coordenação
(DEKA, 2014). O sistema é completamente licença open source e comercial
modularizado, e tanto a serialização dos desenvolvida em Java. Possui seu foco em
dados quanto a persistência são oferecidas computação distribuída e escalabilidade
através de módulos plugáveis. Segundo horizontal, se destacando dos concorrentes
(SUMBALY, KREPS, et al., 2012), a grande por oferecer as garantias ACID
vantagem do Voldemort em relação ao (Atomicidade, Consistência, Isolamento e
Dynamo, é um mecanismo próprio de Durabilidade) dos bancos de dados
armazenamento desenhado para o pré- relacionais tradicionais. O cluster funciona
carregamento de grandes volumes de em uma arquitetura shared nothing, onde
dados, em que o Voldemort passa a não existe um ponto único de falha. Além
funcionar em modo somente leitura. de oferecer clientes para as linguagens
comuns como Java, C, C++ e C#, o
Aerospike: O Aerospike (AEROSPIKE, Hazelcast oferece uma API REST, está
2012) tem uma arquitetura modelada com preparado para trabalhar com o protocolo
foco em velocidade na análise de dados, de comunicação do Memcache e pode ser
escalabilidade e confiabilidade para utilizado através do Hibernate
aplicações web. Esse banco de dados se (HAZELCAST, 2009).
apresenta como uma solução para a
combinação de diferentes tipos de dados e Riak KV: O Riak KV (BASHO, 2009) possui
também acessos por milhares de usuários. como principal objetivo oferecer
Pensando nisso, as suas operações são disponibilidade máxima, com escalabilidade
focadas em chave-valor e otimizadas para horizontal em forma de cluster, sendo
o uso da memória RAM em conjunto com considerado um banco de dados de
memórias flash (NVM). Um dos pontos de simples operação e fácil escalabilidade. Em
destaque do Aerospike é a grande sua versão comercial há suporte a multi-
quantidade de bibliotecas de integração cluster replication, ou seja, é possível
desenvolvidas pela própria empresa, a fim realizar a replicação de dados através de
de melhorar o desempenho na sua diferentes clusters, geograficamente
utilização. Quanto ao cluster, todos os nós distantes, a fim de reduzir a latência de
são iguais, em uma arquitetura conhecida acesso uniformemente para clientes
como shared nothing. A respeito do server através do globo. Nota-se claramente a
é possível utilizar índices secundários e influência do Dynamo (DECANDIA,
definir funções para otimizar a utilização HASTORUN, et al., 2007) no Riak KV,
dos dados. E por fim, a camada de desde suas funcionalidades para execução
armazenamento incorpora a utilização da distribuída até nas configurações do fator
memória RAM e de sistemas de de replicação e arquitetura shared nothing.
armazenamento permanente.
Bancos de dados de famílias de
Hazelcast: O Hazelcast (HAZELCAST, colunas: Os bancos de dados
2009) é uma ferramenta distribuída sob representantes do modelo família de
colunas ou columnar são aqueles que (CHANG, DEAN, et al., 2008). O BigTable
mantém as informações armazenadas em foi projetado para trabalhar em um cenário
colunas do banco de dados com cargas de trabalho maciças em baixa
separadamente, guardando junto com os latência consistente e alta taxa de
valores de atributos pertencendo à mesma transferência, por isso é uma execelente
coluna, de modo denso e comprimido. opção para softwares operacionais e
Embora o modelo de colunas compartilhe o analíticos, incluindo para IoT, análise de
conceito de armazenamento dos sistemas usuários e análise de dados financeiros.
relacionais, a diferença é o modo em que (GOOGLE). Na arquitetura do BigTable
os dados não ficam armazenados em existe uma camada denominada memtable,
tabelas, mas sim em arquiteturas que estão que fica responsável por armazenar as
distribuídas massivamente. No entradas de log, que são escritas e
armazenamento em colunas, cada chave mantidas na memória principal. A
está associada a um ou mais atributos arquitetura é complementada com as
(colunas). Neste tipo de banco de dados as SSTables que atuam como um instantâneo
informações ficam guardadas de tal modo do estado de um tablet, e caso ocorra uma
que as informações possam ser agregadas falha, a recuperação é realizada pela
rapidamente com menor atividade de E/S reprodução das entradas de log mais
(NAYAK, PORIYA e POOJARY, 2013). recentes desde o último instantâneo. Já as
Os bancos colunares encorajam o uso da leituras são executadas através uma visão
desnormalização, isso é possível combinada dos dados das SSTables com a
realizando a cópia para vários registros. memtable (CHANG, DEAN, et al., 2008).
Com isso é possível obter um ganho na
velocidade de leitura, pois não são HBase: O HBase (APACHE SOFTWARE
utilizados relacionamentos que demandam FOUNDATION, 2008) é um banco de
um trabalho de reconstituição dos dados dados que possui como principais
(FOWLER, 2015). Porém uma características o fato de ser open-source,
desvantagem é que com isso a perda de distribuído, versionado, se enquadra na
velocidade na inserção (NAYAK, PORIYA e estrutura no SQL e foi desenvolvido com
POOJARY, 2013). base o BigTable (GOOGLE, 2005), porém
otimizado sob o Hadoop (APACHE, 2011) e
BigTable: O BigTable (GOOGLE, 2005) é o Hadoop Distributed File System (HDFS)
um sistema de armazenamento distribuído, (APACHE, 2011). O seu fornecedor
desenvolvido para gerenciar dados recomenda este banco de dados para
estruturados e com a possibilidade de aqueles que necessitam de acesso
escalabilidade muito grande de dados entre aleatório as informações, em tempo real e
milhares de servidores de commodities. com demanda de velocidade na leitura e
Diversos projetos do Google armazenam gravação de seus dados. O foco deste
dados no BigTable, incluindo a indexação projeto é manter tabelas com grandes
da Web, Google Earth e Google Finance volumes de dados, bilhões de linhas e
milhões de colunas, isso sob clusters de
hardware de commodities (APACHE Accumulo Apache: Accumulo (APACHE
SOFTWARE FOUNDATION, 2008). Como ACCUMULO, 2008) é baseado no modelo
o HBase estende o modelo BigTable proposto pelo Google BigTable (GOOGLE)
(GOOGLE, 2005), ele considera um único e é carregado pelo Apache Hadoop,
índice, isto é semelhante a uma chave Apache Zookeeper e Apache Thrift. O
primária nos modelos de banco de dados Accumulo destaca em sua página recursos
relacionais. Deste é possível fornecer como a função de controle de acesso
ganchos do lado do servidor para baseado em células e um mecanismo de
implementar soluções flexíveis de índice programação do lado do servidor, que
secundário. Além disso, ele oferece promete possibilitar a modificação dos
predicados push-down, que se trata de paresde chave / valor em vários pontos no
filtros de que permitem reduzir os dados processo de gerenciamento de dados
trafegados na rede (GEORGE, 2011). (APACHE ACCUMULO, 2008). O
Accumulo é escrito em Java e roda sob o
Cassandra: O Apache Cassandra Hadoop Distributed File System (HDFS)
(APACHE SOFTWARE FUNDATION, (APACHE, 2011). Este banco de dados
2008) é um projeto de sistema de banco de suporta o armazenamento e a recuperação
dados distribuído que se enquadra no de dados estruturados, incluindo consultas
modelo no SQL, além disso é classificado para intervalos, e fornece suporte para o
como escalável, e reúne a arquitetura do uso de tabelas Accumulo como entrada e
DynamoDB (DECANDIA, HASTORUN, et saída para MapReduce (DEAN e
al., 2007) e modelo de dados baseado no GHEMAWAT, 2008).
BigTable (GOOGLE). O Cassandra foi
desenvolvido pelo Facebook, o que abriu Bancos de dados orientados a
seu código-fonte para a comunidade em documentos: Os bancos de documentos
2008. Agora é mantido por são semelhantes aos bancos de chave-
desenvolvedores da fundação Apache e valor, porém neste caso o valor é
colaboradores de muitas empresas. (HAN, estruturado e possui hierarquia.
HAIHONG, et al., 2011) Este banco de Diferentemente dos bancos tradicionais,
dados foi desenvolvido em linguagem Java, estes não possuem um esquema ou
e suporta multiplataformas. Na questão da estrutura pré-definida (FOWLER, 2015). É
durabilidade dos dados ele trabalha com bastante comum a utilização dos formatos
CommitLog, onde ficam salvas todas as JSON e XML para representar os
mutações locais a um nó de Cassandra. documentos nestes tipos de bancos de
Quaisquer dados escritos para Cassandra dados (POKORNY, 2013) e o suporte ao
serão primeiro escritos em um log de processamento e análise de dados é
confirmação antes de serem gravados em bastante variado dentre os representantes
um memtable. (APACHE SOFTWARE da categoria. Uma característica
FUNDATION, 2008) interessante é o método append-only, que
é utilizado em alguns bancos de construção de “visões” definidas por
documentos para armazenar os dados e funções JavaScript e indexadas pelo
oferece operações de escrita em tempo CouchDB de forma a melhorar o
constante. desempenho de consultas.

MongoDB O MongoDB (MONGODB, Couchbase: O Couchbase (COUCHBASE,


2009) é o representante mais conhecido 2010), originalmente chamado de
dentre todos os bancos no SQL, não Membase, é o produto da empresa
apenas de sua categoria (YUHANNA, homônima, formada através de uma fusão
LEGANZA e AUSTIN, 2016). Os entre membros dos projetos memcached e
documentos são armazenados em um CouchDB. Ele oferece a velocidade e as
formato binário conhecido como BSON garantias de consistência normalmente
(Binary JSON), mas os clientes gerenciam encontradas em bancos chave-valor, sendo
a conversão para o protocolo JSON de considerado um dos bancos de
forma transparente (FOWLER, 2015). documentos mais rápidos (FOWLER,
Seguindo à risca o paradigma no SQL, o 2015).
MongoDB não oferece nenhum suporte
nativo a relacionamentos entre documentos MarkLogic: O MarkLogic (MARKLOGIC,
ou consultas com os populares JOIN dos 2001) é o mais antigo dentre os bancos
bancos relacionais, defendendo a de- NoSQL avaliados, com mais de 15 anos de
normalização dos dados (onde os dados existência, podendo ser classificado tanto
são armazenados na forma em que são como banco de documentos quanto como
necessários na consulta) de forma a banco triplo, além de um motor de busca. É
maximizar o desempenho das consultas considerado um dos líderes dentre os
(COPELAND, 2013). bancos de documentos, assim como
MongoDB e Couchbase (YUHANNA,
CouchDB: O CouchDB (COUCHDB, 2005) LEGANZA e AUSTIN, 2016). A maturidade
possui foco na facilidade de uso, do MarkLogic é facilmente percebida pela
oferecendo a flexibilidade dos bancos de extensa lista de funcionalidades
documentos e comunicação através de empresariais oferecidas, além de ser o
uma API HTTP RESTful. Algumas das único banco no SQL com certificação de
características mais marcantes do segurança de software expedida pelo
CouchDB são o suporte completo a departamento de defesa dos Estados
transações ACID, o foco em disponibilidade Unidos (FOWLER, 2015).
e a possibilidade de sincronização de
réplicas para uso off-line, porém nota-se o Bancos de dados de grafos ou triplos:
pouco foco na utilização da memória RAM Os bancos triplos possuem foco na criação
para melhorias no desempenho do sistema. de relacionamentos entre os dados. Porém,
As consultas podem ser feitas em diferentemente dos bancos relacionais
documentos individuais ou através da tradicionais, os dados não são tabulares, e
sim armazenados em registros triplos OrientDB: O OrientDB (ORIENTDB, 2010)
compostos por sujeito, predicado e objeto. destaca-se por ser o primeiro banco no
Outra nomenclatura adotada para estes SQL com abordagem multi-modelo,
bancos e seus dados é a sigla RDF ou funcionando como banco triplo, banco de
Resource Description Framework, onde os documentos em JSON e banco chave-
dados são compostos por recurso, valor, com suporte ao TinkerPop. Ainda
propriedade e indicação ou valor. Com que o OrientDB não seja considerado um
estes bancos é possível construir redes líder de mercado, é considerado um
complexas de relacionamentos e revelar competidor de peso por seu baixo custo,
novos dados através da inferência. Bancos facilidade de uso, bom desempenho, amplo
triplos com suporte a consultas complexas, espectro de casos de uso e baixa curva de
tais como análise de caminhos e distâncias aprendizado por oferecer funcionalidades
entre dois nós, são conhecidos como como transações ACID e suporte à
bancos de grafos (FOWLER, 2015). O linguagem SQL (YUHANNA, LEGANZA e
projeto Apache TinkerPop (APACHE AUSTIN, 2016).
TINKERPOP, 2008) tem buscado
padronizar a camada de comunicação JanusGraph: O JanusGraph foi criado em
entre aplicações e bancos de grafos, 2017 com base no último código-fonte
através da oferta de um framework que disponível do Titan (TITAN, 2012), que
inclui uma linguagem de navegação em havia sido abandonado em 2015 após a
grafos chamada Gremlin. venda da empresa Aurelius, responsável
pelo sistema, para a DataStax. O
Neo4j: O Neo4j (NEO TECHNOLOGY, JanusGraph caracteriza-se como um banco
2007) é o banco de grafos mais popular de grafos otimizado para escalabilidade
atualmente, possuindo código-fonte aberto horizontal, alta concorrência e grandes
e oferecendo suporte a transações ACID e volumes de dados, com integração a várias
ao framework TinkerPop. A memória outras tecnologias através de módulos
principal é utilizada principalmente para plugáveis. Como toda a camada de
cache, e o banco trabalha completamente armazenamento é oferecida através de
em memória se o tamanho do cache for módulos integrados, muitas de suas
maior que o tamanho dos dados. Os casos características de distribuição e replicação
de uso mais comuns do Neo4j incluem de dados para melhoras no desempenho e
sistemas de recomendações em tempo tolerância a falhas, alta disponibilidade e
real, busca baseada em grafos, redes suporte às garantias ACID dependem da
sociais, detecção de fraudes, escolha da tecnologia responsável por esta
gerenciamento de rede e identidade, dentre camada. No momento em que esta
outros (YUHANNA, LEGANZA e AUSTIN, pesquisa foi realizada, o JanusGraph
2016). oferecia módulos para integração (storage
backends) com os bancos Cassandra,
HBase, BerkeleyDB e um módulo de
processamento de dados em memória. A dados inteiramente na memória principal e
comunicação e o modelo de dados do gravando um log destes dados em disco
JanusGraph são baseados no TinkerPop, para recuperação em caso de falha. Os
não possuindo outra linguagem ou forma principais direcionadores do Bitsy são a
de interação. Uma das características eliminação de buscas e leituras do disco
marcantes do JanusGraph é o suporte ao rígido, utilizando um arquivo de log append-
acoplamento de várias tecnologias, tanto only para persistência; a eliminação da
para armazenamento quanto para comunicação via rede, funcionando como
processamento de dados, oferecendo um banco embutido na própria aplicação; e
funcionalidades como consultas baseadas a eliminação de consultas SQL, utilizando a
em georreferenciamento e pesquisas API Blueprints para trabalhar com grafos
completas em texto (full-text search). (ZHANG, TAN, et al., 2015). O
desenvolvimento do Bitsy ficou parado
Graph Engine: O Graph Engine durante três anos (de 2013 a 2016), mas
(MICROSOFT, 2017), originalmente uma versão 2.0 com suporte a
chamado de Trinity, possui foco na escalabilidade horizontal em cluster está
utilização da memória RAM combinada de planejada.
máquinas conectadas em cluster. Sua
camada de armazenamento possui a CONCLUSÃO
estrutura de um banco chave-valor, onde
cada par chave-valor (aqui chamada de O trabalho possibilitou o contato com a
célula) representa um nó (node) ou uma pesquisa científica. Permitiu ampliar o
aresta (edge) do grafo (SHAO, WANG e LI, entendimento de fundamentos de bancos
2013). As arestas podem conter rótulos ou de dados, além de apresentar e possibilitar
predicados, compondo assim um banco o contato com uma quantidade
RDF. Destaca-se por ser um dos únicos considerável de tecnologias desta
bancos de grafos que não possui suporte emergente área de bancos de dados no
ao TinkerPop. O armazenamento dos SQL. Além dos resultados já alcançados
dados é feito em um formato binário (quais foram), pretende-se ainda realizar
serializado, o que reduz o uso de memória trabalhos futuros, tais como refinamento da
e facilita a localização de dados, mas pesquisa. Além de executar novos testes
também dificulta o processo de análise de aplicando diferentes conjuntos de
dados porque inclui a necessidade de configurações, buscando otimizar o
serialização e deserialização de dados desempenho dos bancos de dados, para
(ZHANG, TAN, et al., 2015). 2.5.4.5 Bitsy O avaliar o comportamento dos bancos em
Bitsy (RAMACHANDRAN, 2013) é um cenários distintos. Ainda fica a opção de
banco de grafos no SQL sem suporte à incluir outros bancos, ainda não
distribuição ou escalabilidade horizontal. contemplados. Existe também a
Ele deve ser utilizado embutido diretamente oportunidade de encontrar um benchmark
na aplicação Java, armazenando seus que atenda aos bancos de grafos, pois
estes possuem um mercado em ascensão pessoas. Curitiba: IESDE, 2012. ISBN
destinado a aplicações complexas, as 9788538722779.
quais saem do nicho comercial e abrangem
mercados governamentais e acadêmicos, NAYAK, PORIYA, POOJARY, Type of
tais como pesquisas meteorológicas e de NOSQL Databases and its Comparison
georeferenciamento. Esse conjunto de with Relational Databases. International
propostas também abrange novos nichos Journal of Applied Information Systems
de pesquisa e estruturação de (IJAIS), Nova Iorque, v. 5, p. 17-19, Mar
conhecimentos para a comunidade 2013. ISSN 2249-0868.
científica, primariamente através da
publicação de novos artigos. NELSON, J. Mastering Redis.
Birmingham: Packt Publishing, 2016. ISBN
REFERÊNCIAS 978-1- 78398-818-1. Disponivel em:
Acesso em: 19 mar. 2021.
FOWLER, A. NoSQL For Dummies. New
Jersey: John Wiley & Sons, 2015. ISBN NEO TECHNOLOGY. Neo4j, the world's
978-1-118-90578-4. Disponivel em: leading graph database - Neo4j Graph
Acesso em: 12 mar. 2021. Database. Neo4j, 2007. Disponivel em:
Acesso em: 04 mar. 2021.
KABAKUS, A. T.; KARA, R. A
performance evaluation of in-memory O’NEIL, P. et al. The star schema
databases. Journal of King Saud benchmark and augmented fact table
University - Computer and Information indexing. Technology Conference on
Sciences, 2016. Disponivel em: Acesso Performance Evaluation and
em: 11 mar. 2021. Benchmarking. [S.l.]: Springer. 2009. p.
237-252.
LAKE, P.; CROWTHER, P. Concise
Guide to Databases: A Practical ORACLE MYSQL. MySQL 5.7: 3x Faster.
Introduction. London: Springer, 2013. MySQL. Disponivel em: Acesso em: 31 fev
ISBN 978-1-4471-5601-7. 2021.

MICROSOFT. Graph Engine. Graph ORIENTDB. OrientDB - Distributed

Engine, 2017. Disponivel em: Acesso em: Graph/Document Multi-Model Database.

07 mar. 2017. OrientDB, 2010. Disponivel em: Acesso


em: 05 mar. 2021.

MONGODB. MongoDB for GIANT ideas.


MongoDB, 2009. Disponivel em: Acesso
em: 20 Fev 2017. MORAES, F. C. C.
Desafios estratégicos em gestão de

Você também pode gostar