Este documento apresenta as principais características do banco de dados NoSQL, incluindo sua escalabilidade, classificação, arquitetura e técnicas. O NoSQL é uma alternativa aos bancos de dados relacionais que permite alta performance e escalabilidade. Grandes empresas como Facebook, Google e Amazon utilizam NoSQL.
1. CENTRO UNIVERSITÁRIO ESTÁCIO DA BAHIA – FIB
SISTEMAS DE INFORMAÇÃO
ADEMIR T S CHAGAS
NELSON ARAGÃO
MESSIAS SILVA
NoSQL
SALVADOR – BA
2011
2. ADEMIR T S CHAGAS
NELSON ARAGÃO
MESSIAS SILVA
NoSQL
Trabalho apresentado ao
Centro Universitário Estácio da Bahia,
trabalho da av2,da disciplina Banco II ,
do curso de Sistema de Informação,
sob orientação do Prof Antônio
Cordeiro
SALVADOR – BA
2011
3. NoSQL
Ademir T S Chagas, Nelson Aragão, Messias Silva
Resumo. Este artigo irá abordar as principais características, técnicas
de escalabilidade, classificação e arquitetura do NoSQL, que é um banco de
dados não relacional que tem um propósito de suprir as necessidades em
demandas onde os bancos de dados tradicionais (relacionais) são ineficazes. O
NoSQL é bastante utilizado pelas grandes empresas, como o Twitter,
Facebook, Ebay, Google, entre outros. A sua principal característica é a
escalabilidade, no qual faz aumentar a capacidade de armazenamento de
dados e a velocidade.
1. INTRODUÇÃO
O NoSQL surgiu da necessidade de uma performance superior e de uma
alta escalabilidade. Os atuais bancos de dados relacionais são muito restritos a
isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto
mais dados, mais memória e mais disco um servidor precisa. O NoSQL tem
uma grande facilidade na distribuição horizontal, ou seja, mais dados, mais
servidores, não necessariamente de alta performance. [1]
Um grande utilizador desse conceito é o Google, que usa computadores
de pequeno e médio porte para a distribuição dos dados; essa forma de
utilização é muito mais eficiente e econômica. Além disso, os bancos de dados
NoSQL são muito tolerantes a erros. Toda a informação necessária estará
agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento
entre várias tabelas para formar uma informação, ela estará em sua totalidade
no mesmo registro. [1]
2. COMPARATIVO ENTRE BD RELACIONAL E NÃO RELACIONAL
(NoSQL)
Banco de Dados Relacionais
• O que é: baseia-se em que todos os dados estão guardados em
tabelas, pelo conceito de entidade e relacionamento. Os dados
são separados de forma única, tentando diminuir ao máximo a
4. redundância, pois a informação é criada pelo conjunto dos dados,
onde são as relações entre as tabelas que fazem esse serviço.
• Características: Tabelas, schema definido, hierarquia,
redundância mínima, entidade e relacionamento, formas normais,
transações ACID (Atomicidade, Consistência, Isolamento,
Durabilidade).
• Escalabilidade: Devido à estruturação do modelo é possível, mas
complexo.
• Consistência: Ponto forte do Modelo Relacional. A regra de
consistência presente garante um maior rigor à consistência das
informações.
• Disponibilidade: Este modelo não suporta eficientemente grande
demanda, dado a dificuldade e distribuição de dados.
• Necessidades: Sistemas locais, financeiros, corporativos;
segurança da informação; consistência dos dados.
• SGBDs: DB2, Firebird, InterBase, Microsoft SQL Server, MySQL,
Oracle, PostgreSQL
• Cases: SAP, OpenERP, Previdência Social, Caixa, Itaú,
Salesforce, Vale.
Banco de Dados Não Relacionais (NoSQL)
• O que é: Uma solução alternativa para os bancos de dados
relacionais possuem uma alta escalabilidade e desempenho.
• Características: Registros, schema-free, tolerância à falha,
escalabilidade, clusterização, mapreduce, sharding.
• Escalabilidade: É sem dúvida a principal vantagem do NoSQL.
Possui mais flexibilidade na inclusão de dados por não possuir
estrutura.
• Consistência: Não garante a consistência da informação, caso
nenhuma informação seja atualizada, retornará a todos os
pedintes o mesmo valor.
5. • Disponibilidade: Outro ponto forte do BD NoSQL. Possui um alto
grau de distribuição de dados, e garante um maior numero de
solicitações.
• Necessidades: sistemas em nuvem, análises sociais, alta
escalabilidade, performance na consulta/escrita, replicação.
• SGBDs: Oracle NoSQL, Cassandra, BigTable, MongoDB,
CouchDB, Dynamo.
• Cases: Twitter, Facebook, Digg, Amazon, LinkedIN, Google,
Yahoo, The New York Times.
3. CARACTERÍSTICAS
3.1 Escalabilidade Horizontal
Significa adicionar um novo servidor e um sistema de software que
permita a distribuição do trabalho entre múltiplas máquinas.[3]
3.2 Clusterização
Compreende um banco de dados armazenado e gerenciado por mais de
um servidor, provê uma alta disponibilidade e um alto desempenho do sistema.
Assim, a organização se beneficia diminuindo o tempo de inoperabilidade do
6. banco de dados. Esse processo vem como uma solução para reduzir gastos
com estrutura de hardware.[6]
3.3 Schema-Free
Um dos fatores que contribuem para um banco de dados NoSQL escalar é
por causa da ausência de um schema (schema free). Todos os novos bancos
tem em comum que eles são key-value stores, ou seja, salvam,como o nome
sugere, um conjunto de entradas formadas por uma chave associada a um
valor e o valor poderia ser de qualquer tipo, um binário ou string que está
sendo salvo de forma desnormalizada (schema-free).[9]
3.4 MapReduce
É uma estrutura de software introduzido pela Google em 2004 para o
processamento de problemas altamente distribuíveis em grandes conjuntos de
dados,usando um grande número de computadores (nós). O MapReduce
permite processamento distribuído do mapa e as operações de redução. Desde
que cada operação de mapeamento é independente dos outros, todos os
mapas podem ser executadas em paralelo - embora na prática ele é limitado
pelo número de fontes de dados independentes e / ou o número de CPUs perto
de cada fonte.[9]
4. TÉCNICAS DE ESCALABILIDADE
4.1 Sharding
O sharding consiste na divisão dos dados em múltiplas tabelas do banco de
dados para escalar tanto nossas leituras como nossas escritas. [9]
7. 4.2 Replicação – Escalar por duplicação de informações
As informações são copiadas em mais de um banco para aumentar a
capacidade de recuperar estas informações. O mesmo é subdividido em duas
arquiteturas principais:
• Master-Slave:
Cada escrita em banco resulta em N x escritas onde N é o
número de slaves. Neste caso temos um banco “Master” que
propaga cada escrita para os bancos “slaves”. Isto aumenta a nossa
velocidade de leitura, mas não melhora em nada nossa capacidade
de escrita.[10]
• Multi-Master:
Aumentamos o número de Masters em nosso sistema e assim
aumentamos nossa capacidade de escrita. Esta abordagem pode
gerar conflitos.[10]
5. CLASSIFICAÇÃO DO BANCO DE DADOS
5.1 Arquitetura
Quando à distribuição de dados, certos sistemas promovem o
particionamento e a replicação dos dados, enquanto outros deixam essa tarefa
para o cliente. A maioria das soluções é distribuída, como é caso do Amazon
Dynamo do CouchDB, do MongoDb, do BigTable e do Cassandra.[4]
5.2 Armazenamento
Temos os bancos que mantêm suas informações em memória
realizando persistências ocasionais; aqueles que mantêm suas informações
em disco, como são os casos do CouchDb e do MongoDb; e aqueles
configuráveis, tais como BigTable e o Cassandra.[4]
8. 5.3 Modelo de Dados
• Chave/Valor:
Baseia-se numa coleção de chaves únicas e de valores, os quais
são associados. [4]
Ex: Dynamo
• Documentos
Os documentos são as unidades básicas de armazenamento e
estes não utilizam qualquer tipo de estruturação pré-definida, como é o
caso das tabelas do modelo relacional. [4]
Ex: CouchDB
• Colunas
Mudou-se de orientação o registro para orientação a colunas
(tributos). [4]
Ex: Cassandra, BigTable.
• Grafo:
Os dados são armazenados em nós de um grafo cujas arestas
representam o tipo de associação entre esses nós. [4]
Ex: Neo4J
6. VANTAGENS x DESVANTAGENS
6.1 Vantagens:
• Escalabilidade Maciça
• Alta Disponibilidade
• Baixo Custo
• Previsível a Elasticidade
• Esquema de flexibilidade, dados esparsos e semi-estruturados.
9. 6.2 Desvantagens:
• Capacidade Limitada de Consulta
• Não existe padronização
• Portabilidade pode ser um problema
• Insuficiente Controle de Acesso
7. SGBDs
• Apache Cassandra
Desenvolvido inicialmente pelo site de relacionamento Facebook, é um
projeto de sistema de banco de dados distribuído, altamente escalável, que foi
desenvolvido na plataforma Java.[9]
• BigTable
Foi desenvolvido pelo Google, para distribuir dados por centenas de
servidores e escalar por conjuntos de dados de até 1 petabyte.[9]
• Dynamo
Desenvolvido pela Amazon em 2007, foi criado para oferecer
armazenamento de valores-chaves de dados de alta disponibilidade, permitindo
atualizações para sobreviver às falhas de servidor e rede. [9]
8. EMPRESAS QUE UTILIZAM O NoSQL
Facebook, Google, Yahoo, The New York Times, Amazon, Ebay, Twitter,
entre outros.
10. REFERÊNCIAS
[1] NASCIMENTO, Jean - NoSQL - você realmente sabe do que estamos
falando? Disponível em:
http://imasters.com.br/artigo/17043/bancodedados/nosql_voce_realmente_sabe
_do_que_estamos_falando/, acessado em: 8 de Novembro de 2011.
[2] NASCIMENTO, Jean , aka Suissa - “Introdução ao NoSQL” Disponivel em:
http://www.nosqlbr.com.br/introducao-ao-nosql.html, acessado em: 8 de
novembro de 2011.
[3] FERREIRA, Edmar, “Introdução ao NoSQL parte I” Disponível em:
http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/, acessado em
9 de novembro de 2011.
[4] BRITO,Ricardo “Bancos de Dados NoSQL x SGBDs Relacionais:Análise
Comparativa* ” Disponível em: http://www.infobrasil.inf.br/userfiles/27-05-S4-
1-68840-Bancos%20de%20Dados%20NoSQL.pdf, acessado em 10 de
novembro de 2011.
[5] FERREIRA, Edmar, “Escolhendo entre escalabilidade horizontal e
escalabilidade vertical“ Disponível em:
http://escalabilidade.com/2010/09/21/escolhendo-entre-escalabilidade-
horizontal-e-escalabilidade-vertical/, acessado em 9 de novembro de 2011.
[6] INFOWESTER “Cluster: Principais Conceitos”, Disponível em:
http://www.infowester.com/cluster.php, acessado em 9 de novembro de 2011.
[7] STEPPAT, Nico, “Bancos de dados não relacionais e o movimento
NoSQL“ Disponível em: http://blog.caelum.com.br/bancos-de-dados-nao-
relacionais-e-o-movimento-nosql/, acessado em 11 de novembro de 2011.
[8] WIKIPEDIA, “MapReduce“ Disponível em:
http://en.wikipedia.org/wiki/MapReduce, acessado em 13 de novembro de
2011.
[9] SOUZA,Talles ROCHA,André, “NoSQL Princípios e Características “
Disponível em: http://www.slideshare.net/andrerochajp/artigo-nosql, acessado
em 13 de novembro de 2011.
[10] FERREIRA, Edmar, “Introdução ao NoSQL parte II” Disponível em:
http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-ii/, acessado
em 9 de novembro de 2011.