Você está na página 1de 10

1

BANCO DE DADOS ESCALVEIS COM NoSQL




AFRNIO CASTANHEIRA FRICHE NETO
1

IREMAR NUNES DE LIMA
2



Resumo: Este artigo apresenta as caractersticas de um banco de dados NoSQL, enfatizando as
qualidades e solues propostas por esta nova categoria de armazenamento de dados. Alm disso,
analisa-se as principais diferenas entre banco de dados relacionais e os banco de dados NoSQL.
Por fim, o artigo avalia o nicho que esta nova tecnologia de armazenamento de dados pode ocupar
no desenvolvimento de sistemas.

Palavras-chave: Banco de Dados, Escalabilidade, NoSQL.

1. INTRODUO

Com a popularizao da internet no inicio dos anos 90, surgiu uma demanda crescente por novas
tecnologias que permitissem a expanso e evoluo de sistemas criados nessa plataforma. Uma das
caractersticas mais desejadas nesses sistemas a escalabilidade. Segundo Tiwari (2011)
escalabilidade a capacidade de um sistema de responder requisies, muitas vezes crescentes, de
forma uniforme.


1
Graduando do curso de Sistemas de Informao no Centro Universitrio Newton Paiva (afraniofriche@gmail.com).
2
Professor do Centro Universitrio Newton Paiva (iremar.prof@uol.com.br).
2

A escalabilidade pode ser obtida atravs da melhoria de vrios pontos dos componentes de um
sistema web, sendo altamente influenciada pelos bancos de dados. Atualmente os Sistemas
Gerenciadores de Bancos de Dados Relacionais (SGDBR) so as estruturas de armazenamento de
dados mais populares entre as aplicaes web existentes. Porm, segundo STEPPAT (2009) manter
escalabilidade com essas ferramentas um desafio que, em geral, apresenta altos custos de
hardware e alta complexidade.

Uma das solues para suprir a necessidade de escalabilidade para armazenamento e fornecimento
de dados para sistemas web so os bancos de dados NoSQL (NotOnly SQL). Essa classe de
gerenciadores de banco de dados vem sendo escolhidas por diversas plataformas web, graas a sua
j citada alta escalabilidade aliada com seu baixo custo de hardware. Segundo Tiwari (2011),
escalabilidade horizontal de sistemas a capacidade de um sistema de identificar o aumento de
cargas(uso de um sistema) e utilizar novos ns(unidades de trabalho) para atenderem a essas cargas.
Este artigo ir discutir esta e outras caractersticas de banco de dados NoSQL.

2. CARACTERISTICAS DE BANCO DE DADOS NOSQL

Segundo Vaish (2013), atualmente o termo NoSQL usado para definir Bancos de Dados que no
seguem os princpios dos SGDBR. Portanto interessante notar que os bancos de dados NoSQL
no possuem uma forma distinta de armazenamento de dados, e podem ser classificados em trs
grandes grupos de armazenamento
3
. Alm disso, podemos considerar que Bancos de Dados NoSQL

3
Para este artigo consideramos somente os Bancos de Dados NoSQL que guardam dados na sua forma pura, portanto os
Bancos de Dados NoSQL Orientados a Grficos (armazenamento de objetos complexos) no esto no escopo deste
documento.

3

possuem caractersticas em comum, como por exemplo alta escalabilidade e a falta de um esquema
de dados bem definido.

2.1 TIPOS DE ARMAZENAMENTOS DE BANCO DE DADOS NOSQL

Segundo Strauch (2011), atualmente podemos classificar as formas de armazenamento de dados dos
bancos de dados NoSQL da seguinte maneira:

a. Armazenamento Chave/Valor

O armazenamento Chave/Valor um dos tipos mais simples de armazenamento de Banco de Dados
NoSQL. Conforme afirma Tiwari (2011), essas estruturas de armazenamento so famosas por
possurem um algoritmo muito eficiente. Basicamente essas estruturas funcionam com um par de
valores, ou seja, uma chave identificadora e um valor. Em muitos Banco de Dados NoSQL esse
valor pode ser, na verdade multivalorado. Ainda segundo Tiwari (2011), alguns bancos de
Chave/Valor mantm os dados em memria enquanto outros persistem estes dados em um disco.
Bancos de Dados com armazenamento Chave/Valor favorecem a alta escalabidade em detrimento
da perca de consistncia (STRAUCH, 2011).

Exemplo de dados armazenados com um Banco de Dados Chave/Valor:
01A4 / Ipod Nano
01A5 / McBook Air

Exemplo de Banco de Dados NoSQL que usam o armazenamento Chave/Valor:
Membase, Kyoto Cabinet, Redis, Cassandra, Voldemort


4

b. Armazenamento Orientando a Colunas

Segundo Tiwari (2011) este tipo de armazenamento permite que somente dados reais sejam
guardados, evitando o consumo de espaos com valores nulos. Este tipo de armazenamento
funciona da seguinte maneira: todos os dados so armazenados em colunas (ao invs das linhas dos
SGBDR) e possuem um identificador conhecido como Row Key (Linha Chave). Esses dados so
armazenados de forma ordenada e sequencial em uma mesma coluna.

Exemplo de dados armazenados com um Banco de Dados Orientado a Colunas
1 2 3
Mariana Afrnio Pedro
Ribeiro Friche Pereira
23 25

Exemplo de Banco de Dados NoSQL que usam o armazenamento Orientado a Colunas:
Google BigTable, HBase, HyperTable, CloudData

c. Armazenamento Orientado a Documentos

Banco de dados orientados a documentos so considerados por muitos o prximo passo da evoluo
do armazenamento chave/valor (STRAUCH, 2011). A palavra documento em banco de dados
orientados a documentos mostra as estruturas de Chave/Valor organizados em arquivos, tipicamente
JSON (Javascript Object Notation), e no a documentos e planilhas (TIWARI, 2011). Ou seja,
documentos so estruturas de dados em formato XML (Extensible Markup Language) ou JSON e
podem ser localizados pelo seu identificador nico ou por qualquer registro dentro do arquivo.
Alm disso, a estrutura de documentos permite a existncia de documentos filhos.

Exemplo de dados armazenados com um Banco de Dados Orientado a Documentos(JSON):
5

{
primeiro_nome: "Afrnio"
endereco: "rua x, 225"
artigos: [
{titulo: "Encapsulando dados com java", paginas:"15"}
{titulo: "Banco de dados Escalveis com NoSQL", paginas:"13"}
]
}

Exemplo de dados armazenados com um Banco de Dados Orientado a Documentos(XML):
<Livros>
<Livro ISBN="123456">
<Title>
Use a Cabea! Java
</Title>
<Autor>
Kathy Sierra & Bert Bates
</Autor>
</Livro>
</Livros>

Exemplo de Banco de Dados NoSQL que usam o armazenamento Orientado a Documentos:
MongoDB e CounchDB

2.2 PRINCIPAIS CARACTERSTICASDOS BANCOS DE DADOS NOSQL

Segundo Waish (2013), as caractersticas em comum que banco de dados NoSQL possuem so:

a. Ausncia de esquema bem definido

Em todos os tipos de Banco de Dados NoSQL citados anteriormente a definio de um esquema
para o armazenamento de dados de inteira responsabilidade do desenvolvedor/organizao,
transformando o armazenamento de dados em uma tarefa simples. Porm, segundo Tiwari (2001),
essa liberdade traz ganhos em desempenho, mas deve ser bem administrada para que o banco se
mantenha minimamente organizado.

6

Segundo Steppat (2009), a falta de um esquema definido facilita a distribuio de dados entre vrios
servidores onde cada servidor possui apenas uma frao da totalidade desses dados.

b. Consultas Simples

Segundo Vaish (2013), Banco de Dados NoSQL no possuem suporte a relaes e a chave
estrangeiras, no existe querys complexas e no existem ligaes (JOINS). Por esses fatores todos
as consultas em Banco de Dados NoSQL so simples de serem feitas.

c. Escalabilidade

Bancos de dados NoSQL provm grande escalabilidade por razes bvias. Grande parte da
complexidade que transaes de SGDBS necessitam, no existem em Banco de Dados NoSQL.
Uma vez que estas no esto em conformidade com as propriedades ACID (Atomicidade,
Consistncia, Isolamento e Durabilidade)(WAISH, 2013) que os banco de dados relacionais
possuem. Estas propriedades sero descritas rapidamente na seo 3 do artigo.

Segundo Lscio (2011), a escalabilidade provida pelo NoSQL horizontal, ou seja: para aumentar a
escalabilidade de bancos NoSQL deve-se investir em novas mquinas ou mesmo em nodos (no caso
da computao em nuvem). Ainda de acordo com Lscio (2011), a facilidade com que o NoSQL
permite a escalabilidade horizontal torna esta tecnologia adequada para solucionar os problemas de
gerenciamento de volumes de dados que crescem exponencialmente.


7

3. BANCO DE DADOS NOSQL VERSUS BANCO DE DADOS RELACIONAIS

Dentre os motivos para a utilizao de bancos de dados NoSQL est o aumento de escalabilidade e
reduo de latncia na transao de dados em sistemas WEB, contudo para que esta classe de banco
de dados possa atingir este objetivo, alguns alicerces dos SGBDRs no so utilizados.

3.1 ACID VERSUS BASE

Sistemas de bancos de dados relacionais so conhecidos por empregarem as propriedades ACID.
Segundo Vaish (2013), estas propriedades podem ser descritas resumidamente da seguinte forma:

Atomicidade: Toda a transao completada com sucesso, ou ento tudo ela fez at o ponto de
erro no deve ser gravado no BD.
Consistncia: Uma transao no pode deixar o banco de dados em um estado inconsistente.
Isolamento: Uma transao no pode interferir na outra.
Durabilidade: Uma transao completada com sucesso deve ser gravada no BD, mesmo que
ocorra um erro no banco de dados antes da mesma ser gravada em disco.

O problema que manter as propriedades ACID e relacionamentos entre os dados no necessrio
para alguns casos e pode adicionar uma sobrecarga desnecessria, o que no desejvel se estiver
executando um site com alto trfego de usurios, por exemplo (BARTHOLOMEW, 2010 ).

Desta maneira, os bancos de Dados NoSQL, em geral, apresentam uma proposta diferente para as
propriedades ACID dos SGBDRs. So denominadas propriedades BASE:

Disponibilidade Bsica (Basic Availability): Para toda requisio uma resposta garantida, de
sucesso ou de erro.
Estado "mcio" (Soft state): O estado de um sistema pode mudar com o tempo, algumas vezes
sem nenhuma ao direta do usurio.
Consistncia Eventual (Eventual consistence): O banco de dados pode ficar inconsistente em
um momento, porem eventualmente ele se tornar consistente posteriormente.
8


As propriedades BASE so opostas s ACID. Enquanto as propriedades ACID so pessimistas e
foram a consistncia no final de cada transao, as propriedades BASE so otimistas e aceitam
inconsistncias do banco de dados de forma temporria. Embora, na realidade, estas propriedades
paream improvveis de serem aceitas, elas so bastante flexveis e permitem nveis de
escalabilidade que no podem ser obtidas quando se respeita as propriedades ACID tradicionais dos
SGBDRs (PRITCHETT, 2008).

3.2 Acesso aos dados

Enquanto SGDBRs utilizam SQL para inserir, recuperar e remover dados, banco de dados NoSQL
no possuem um padro definido para executar essas operaes.

Conforme descrito por Bartholomew (2010), a linguagem SQL uma linguagem em comum: se for
necessrio migrar de um SGBDR para o outro, geralmente so necessrias pequenas modificaes
na aplicao e ela funcionar. Isto dependendo do nmero e complexidade das queries SQL
existentes. Porm, para banco de dados NoSQL no existe um padro de consulta ou de API
(Application Programming Interface) uma vez que cada banco de dados desta categoria diferente
e possui uma arquitetura prpria.

3.3 Escalabilidade Vertical versus Escalabilidade Horizontal

De acordo com Tiwari (2011), escalabilidade vertical o termo usado para aumentar a
disponibilidade de resposta e latncia de um servio de TI atravs do investimento em processador,
memria, disco rgido, dentre outros no servidor que oferece este servio. Este tipo de
escalabilidade geralmente utilizado por SGBDR, e mesmo quando estes utilizam a escalabilidade
horizontal, geralmente ela implementada em servidores potentes.

9

Ainda, de acordo como Strauch (2011), quando se trata de banco de dados NoSQL, a escalabilidade
horizontal geralmente aliada com servios em nuvem (cloud computing) a soluo encontrada
para manter a principal promessa desta categoria de banco de dados.

4. CONCLUSO

Banco de dados NoSQL so opes interessantes para projetos WEB que necessitam de alta
escalabilidade. A grande variedade de bancos de dados desta categoria disponvel e a diversidade
que cada banco desses abre um amplo leque de possibilidades para os arquitetos de software.

Contudo, esta categoria de bancos no uma soluo definitiva e que substitui por completo os
bancos de dados relacionais. Qualquer sistema que necessite de boa consistncia de dados aliada
com um isolamento sem falhas no um bom candidato a ser desenvolvido em um bando de dados
NoSQL. Um exemplo disso seria um sistema de banco, onde uma transao depende inteiramente
do isolamento e da consistncia de dados ou existiria um risco de perdas financeiras diariamente.

Entretanto, sistemas que no tem um compromisso de negcio rgido podem utilizar os bancos de
dados NoSQL para aumentar a escalabilidade, latncia e tempo total de resposta de suas requisies
e em consequncia oferecer flexibilidade aos usurios. Um bom exemplo do uso de um banco de
dados NoSQL seria em uma rede social, onde a inconsistncia (eventual) de um dado no tem
grande impacto no negcio e para o usurio.

10

REFERNCIAS
BARTHOLOMEW, Daniel. Sql VS NoSQL. , Linux Jornal, 2010. Disponvel em:
<http://www.linuxjournal.com/article/10770>. Acesso em: 03 maio 2014.
LSCIO, Bernadette Farias; OLIVEIRA, Hlio Rodrigues de; PONTES, Jonas Csar de
Sousa. NoSQL no Desenvolvimento de Aplicaes Web Colaborativas. , 2011. Disponvel em:
<http://www.addlabs.uff.br/sbsc_site/SBSC2011_NoSQL.pdf>. Acesso em: 29 abr. 2014.
PRITCHETT, Dan. BASE: an ACID Alternative. , 2008. Disponvel em:
<http://queue.acm.org/detail.cfm?id=1394128>. Acesso em: 07 maio 2015.
STRAUCH, Christof. Nosql Databases. , 2011. Disponvel em:
<http://home.aubg.bg/students/ENL100/Cloud%20Computing/Research%20Paper/nosqldbs.pdf>.
Acesso em: 03 maio 2014.
STEPPAT, Nico. Bancos de Dados No Relacionais e o Movimento NoSQL. , 2009. Disponvel
em: <http://blog.caelum.com.br/bancos-de-dados-nao-relacionais-e-o-movimento-nosql/>. Acesso
em: 29 abr. 2014.
TIWARI, Shashank. Professional NoSQL. EUA: John Wiley& Sons, 2011. 386 p.
VAISH, Gurash. Getting Started with NoSQL: Your guide to the world and technology of
NoSQL. England: PacktPublishing, 2013. 142 p.

Você também pode gostar