SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Bancos de dados
NoSQL: uma visão
geral
MSC. FHABIANA THIELI MACHADO
1FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Texto
A
2FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Bancos de dados relacionais
Modelo relacional se baseia no princípio de que todos os dados
estão armazenados em tabelas, gerenciando e organizando suas
relações.
3FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Bancos de dados relacionais
▪Esquema rígido
▪Consistência forte
▪Métodos de acesso com
suporte a processamento de
consultas complexas
(otimização e joins)
4FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Qual é o problema com eles então?
BigData
Enorme quantidade de dados, proveniente de várias fontes
diferentes, complexos, dinâmicos, e que demandam tecnologias e
técnicas específicas para armazenamento, análise e visualização.
▪1980 –Popularização dos SGBDs relacionais;
▪2009 –Início do movimento noSql.
5FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Qual é o problema com eles então?
Escalabilidade
6FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Bancos de dados relacionais escalam, mas
quanto maior o tamanho, mais custoso
Surgimento do NoSQL
2006 - Google publica o artigo: BigTable: A Distributed Storage
System for Structured Data
2009 - o termo NoSQL é introduzido por um funcionário da
Rackspace Eric Evans em um evento para discutir bancos de dados
open source distribuídos
▪Not only Structed Query Language (Não apenas SQL)
▪Modelo de persistência de dados
▪Soluções que não se encaixam em banco de dados relacionais
7FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Surgimento do NoSQL
Fowler(2013) O termo “NoSQL” é muito indefinido. Eles geralmente
são aplicados a bancos de dados não relacionais que abraçam um
esquema livre, executam em clusters e abrem mão da consistência
por outras propriedades úteis.
Próxima geração de banco de dados principalmente abordando
alguns dos pontos: ser não-relacional, distribuídos, open-source e
escalável horizontalmente. (NoSQL-Database.org)
8FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Características
▪Ausência de esquema ou esquema flexível
▪Nem sempre consistente
▪Falta de padronização
▪A priori não suporta join nem relacionamentos
▪Os bancos de dados NoSQL são projetados para escalar bem em
direção horizontal e não depender de hardware.
9FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Características
Sharding
Consiste em quebrar suas
tabelas agrupando-as por
dados semelhantes, ou
seja, realizar o
particionamento de dados
entre vários computadores
de uma forma de
preservação da ordem.
10
ACID x BASE
Atomicidade: garante que as transações sejam atômicas (indivisíveis).
A transação será executada totalmente ou não será executada.
Consistência: garante que o banco de dados passará de uma forma
consistente para outra forma consistente.
Isolamento: A propriedade de isolamento garante que a transação
não será interferida por nenhuma outra transação concorrente.
Durabilidade: A propriedade de durabilidade garante que o que foi
salvo, não será mais perdido.
11FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
ACID x BASE
O conceito de BASE perde as propriedades de consistência e
isolamento em favor de ganhar “disponibilidade e ganho de
performance”.
Basically Available – prioridade na disponibilidade dos dados.
Soft-State – o sistema não precisa ser consistente o tempo todo.
Eventually Consistent - Consistente em momento indeterminado.
12FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
ACID x BASE
Um NoSQL se utiliza dessas propriedades.
São resumidas da seguinte forma:
13FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
“Uma aplicação funciona basicamente todo o tempo e não
tem de ser consistente todo o tempo.”
Teorema CAP
Teorema CAP possui 3 pontos que são a:
▪Consistência;
▪Disponibilidade;
▪Tolerância a falhas.
Explica que em sistema distribuído é preciso escolher entre duas
dessas propriedades não sendo possível usar as três ao mesmo
tempo.
14FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
P
A
C
Teorema CAP
▪Consistência: significa que uma vez escrito um registo, cada cliente
tem sempre a mesma visão dos dados.
▪Disponibilidade: assegurar que este permaneça ativo durante um
determinado período de tempo, ou inclusive que ele é tolerante a
falhas.
▪Tolerância ao Particionamento: capacidade de um sistema continuar
operando mesmo depois uma falha na rede. Ou seja significa
garantir que operações serão completadas, mesmo que
componentes individuais não estejam disponíveis.
15FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Teorema CAP
Sistemas CA
Os sistemas com consistência forte e alta disponibilidade (alta
disponibilidade de um nó apenas) não sabem lidar com a possível
falha de uma partição.
Caso ocorra o sistema inteiro pode ficar indisponível até o membro
do cluster voltar.
▪Exemplos disso são algumas configurações clássicas de bancos
relacionais.
16FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
A
C
Teorema CAP
Sistemas CP
Para sistemas que precisam da consistência forte e tolerância a
particionamento é necessário abrir a mão da disponibilidade (um
pouco).
▪Exemplos desses sistemas CP são BigTable, HBase ou MongoDB
entre vários outros.
17FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
PC
Teorema CAP
Sistemas AP
Por outro lado existem sistemas que jamais podem ficar offline.
Para ter alta disponibilidade mesmo com um tolerância a
particionamento é preciso prejudicar um pouco a consistência.
Esses sistemas aceitam escritas sempre e tentam sincronizar os
dados em algum momento depois (read-consistency).
▪Exemplos aqui são Amazon Dynamo, Cassandra ou Riak.
18FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
P
A
Classificações de NoSQL
CHAVE-VALOR, COLUNAS, GRAFOS E DOCUMENTOS
19FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Chave-valor
Modelo simples similar a uma estrutura de
indexação, também conhecidos como tabelas de
hash distribuídas, armazenam objetos indexados
por chaves, e possibilitam a busca por esses
objetos a partir de suas chaves.
Uma das desvantagens desse modelo é que ele
não permite a recuperação de objetos por meio de
consultas mais complexas.
20FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Chave-valor
Em relação a manipulação dos dados, as operações são bem simples
como:
▪get( ): Usado para retorna o valor
▪set( ): Usado para Capturar o valor.
Alguns bancos que utilizam esse padrão são:
▪DynamoDb, Couchbase, Riak, Azure Table Storage, Redis, Tokyo
Cabinet, Berkeley DB, etc...
21FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Colunas
Modelo mais complexo que o chave-valor.
Neste tipo de modelo os dados são indexados
por uma tripla (linha, coluna e timestramp)
Linhas e as colunas são identificadas por
chaves e o timestramp é o que permite
identificar as diferentes versões de um
mesmo dado.
22FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Colunas
Outro conceito importante sobre esse modelo é o de família de
colunas (column family), é usado com o objetivo de agrupar colunas
que armazenam o mesmo tipo de dados.
Este modelo surgiu com o BigTable da Google.
Outros bancos de dados que são orientados a coluna:
▪Hadoop, Cassanda, Hypertable, Amazon SimpleDB, etc.
23FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Grafos
O modelo orientado a grafos possui três
componentes básicos:
Nós: são os vértices do grafo;
Relacionamentos: são as arestas;
Propriedades (ou atributos) dos nós e
relacionamentos.
24FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Grafos
Vantajoso quando consultas complexas são exigidas pelo usuário,
pelo ganho de performance o que permitiria um melhor desempenho
das aplicações.
Consultas mais simples e diretas.
Alguns bancos que utilizam esse padrão são:
▪Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc.
25FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Documentos
Este modelo armazena coleções de
documentos.
Um documento no geral são coleções de
atributos e valores.
Este atributo, por sua vez, pode ser um
conjunto de campos, que possui strings, listas
ou documentos aninhados.
26FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Documentos
Tem esquema livre e possui facilidade por utilizar formatos como
XML e JSON.
Também apresenta facilidade e flexibilidade em atualizar a estrutura
dos documentos.
Dentre os bancos de dados que utilizam esse modelo:
▪CouchDB e o MongoDB.
27FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Comparação de complexidade
28FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Mitos sobre NoSQL
NOSQL É ESCALÁVEL! UMA DAS GRANDES
PROMESSAS DOS BANCOS NOSQL.
Dizer que seu sistema escala
sozinho é vender um sonho.
Pode até ser mais fácil de escalar
se comparado a outras soluções
mas ainda sim exigirá algum
esforço para escalar.
NOSQL É MAIS ECONÔMICO! MEIA VERDADE.
Existem muitos casos entretanto
que uma solução relacional
atende perfeitamente todas as
necessidades do cliente, como
MySQL e PostgreSQL.
29FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Relacional +
NoSQL
MySQL 8.0
30
Conclusão
▪Não há consenso ou padronização;
▪Cada projeto resolve problemas particulares;
▪Gama de possibilidades de armazenamento da informação;
▪Certos cenários bancos relacionais são mais indicados (ACID);
▪Não veio substituir o modelo relacional;
31FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
Referências
Sadalage, P. J., & Fowler, M. (2013). NoSQL Distilled: A Brief Guide to the Emerging World of
Polyglot Persistence (1 Ed. ed.). Pearson Education Inc.
Strauch, C. (10 de jun de 2009). NoSQl Databases. (S. M. University, Ed.). Disponível em:
www.christof-strauch.de/nosqldbs.pd
(s.d.) Introdução NoSQL porque usar? Disponível em: www.sorojet.com.br/termos_cartao.pdf
(s.d.) NoSQL Org. Disponível em: http://nosql-database.org/
FERNANDES, A. d. (julho de 2013). NoSQL, BASE x ACID e Teorema CAP. Disponível em
http://www.slideshare.net/Celio12/trabalho-no-sql-aricelio-de-souza
Amazon inc. O que são bancos de dados NoSQL? Disponível em:
https://aws.amazon.com/pt/nosql/
https://db-engines.com/en/ranking
32FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL

Mais conteúdo relacionado

Mais procurados

Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Leinylson Fontinele
 
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I  Aula 02 - Introdução aos Bancos de DadosBanco de Dados I  Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I Aula 02 - Introdução aos Bancos de DadosLeinylson Fontinele
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
Introdução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBIntrodução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBJhonathan de Souza Soares
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoLeinylson Fontinele
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoRademaker Siena
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Leinylson Fontinele
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosLeinylson Fontinele
 

Mais procurados (20)

Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
Banco de Dados II Aula 12 - Gerenciamento de transação (controle de concorrên...
 
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I  Aula 02 - Introdução aos Bancos de DadosBanco de Dados I  Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Introdução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDBIntrodução ao NoSQL e modelagem de dados com MongoDB
Introdução ao NoSQL e modelagem de dados com MongoDB
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
 
Mer - Modelo Entidade Relacionamento
Mer - Modelo Entidade RelacionamentoMer - Modelo Entidade Relacionamento
Mer - Modelo Entidade Relacionamento
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de Dados
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Semelhante a Bancos de dados NoSQL: uma visão geral

Semelhante a Bancos de dados NoSQL: uma visão geral (20)

No sql std
No sql stdNo sql std
No sql std
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdf
 
Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosApresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
 
Nosql
NosqlNosql
Nosql
 
Comparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacionalComparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacional
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas Monografia
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
Conhecendo Apache Cassandra @Movile
Conhecendo Apache Cassandra  @MovileConhecendo Apache Cassandra  @Movile
Conhecendo Apache Cassandra @Movile
 
No sql no desenvolvimento de aplicações web colaborativas
No sql no desenvolvimento de aplicações web colaborativasNo sql no desenvolvimento de aplicações web colaborativas
No sql no desenvolvimento de aplicações web colaborativas
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao Nosql
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Artigo couchdb
Artigo couchdbArtigo couchdb
Artigo couchdb
 
NoSQL
NoSQLNoSQL
NoSQL
 
xxx no sequel
xxx no sequelxxx no sequel
xxx no sequel
 

Bancos de dados NoSQL: uma visão geral

  • 1. Bancos de dados NoSQL: uma visão geral MSC. FHABIANA THIELI MACHADO 1FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 2. Texto A 2FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 3. Bancos de dados relacionais Modelo relacional se baseia no princípio de que todos os dados estão armazenados em tabelas, gerenciando e organizando suas relações. 3FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 4. Bancos de dados relacionais ▪Esquema rígido ▪Consistência forte ▪Métodos de acesso com suporte a processamento de consultas complexas (otimização e joins) 4FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 5. Qual é o problema com eles então? BigData Enorme quantidade de dados, proveniente de várias fontes diferentes, complexos, dinâmicos, e que demandam tecnologias e técnicas específicas para armazenamento, análise e visualização. ▪1980 –Popularização dos SGBDs relacionais; ▪2009 –Início do movimento noSql. 5FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 6. Qual é o problema com eles então? Escalabilidade 6FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL Bancos de dados relacionais escalam, mas quanto maior o tamanho, mais custoso
  • 7. Surgimento do NoSQL 2006 - Google publica o artigo: BigTable: A Distributed Storage System for Structured Data 2009 - o termo NoSQL é introduzido por um funcionário da Rackspace Eric Evans em um evento para discutir bancos de dados open source distribuídos ▪Not only Structed Query Language (Não apenas SQL) ▪Modelo de persistência de dados ▪Soluções que não se encaixam em banco de dados relacionais 7FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 8. Surgimento do NoSQL Fowler(2013) O termo “NoSQL” é muito indefinido. Eles geralmente são aplicados a bancos de dados não relacionais que abraçam um esquema livre, executam em clusters e abrem mão da consistência por outras propriedades úteis. Próxima geração de banco de dados principalmente abordando alguns dos pontos: ser não-relacional, distribuídos, open-source e escalável horizontalmente. (NoSQL-Database.org) 8FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 9. Características ▪Ausência de esquema ou esquema flexível ▪Nem sempre consistente ▪Falta de padronização ▪A priori não suporta join nem relacionamentos ▪Os bancos de dados NoSQL são projetados para escalar bem em direção horizontal e não depender de hardware. 9FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 10. Características Sharding Consiste em quebrar suas tabelas agrupando-as por dados semelhantes, ou seja, realizar o particionamento de dados entre vários computadores de uma forma de preservação da ordem. 10
  • 11. ACID x BASE Atomicidade: garante que as transações sejam atômicas (indivisíveis). A transação será executada totalmente ou não será executada. Consistência: garante que o banco de dados passará de uma forma consistente para outra forma consistente. Isolamento: A propriedade de isolamento garante que a transação não será interferida por nenhuma outra transação concorrente. Durabilidade: A propriedade de durabilidade garante que o que foi salvo, não será mais perdido. 11FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 12. ACID x BASE O conceito de BASE perde as propriedades de consistência e isolamento em favor de ganhar “disponibilidade e ganho de performance”. Basically Available – prioridade na disponibilidade dos dados. Soft-State – o sistema não precisa ser consistente o tempo todo. Eventually Consistent - Consistente em momento indeterminado. 12FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 13. ACID x BASE Um NoSQL se utiliza dessas propriedades. São resumidas da seguinte forma: 13FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL “Uma aplicação funciona basicamente todo o tempo e não tem de ser consistente todo o tempo.”
  • 14. Teorema CAP Teorema CAP possui 3 pontos que são a: ▪Consistência; ▪Disponibilidade; ▪Tolerância a falhas. Explica que em sistema distribuído é preciso escolher entre duas dessas propriedades não sendo possível usar as três ao mesmo tempo. 14FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL P A C
  • 15. Teorema CAP ▪Consistência: significa que uma vez escrito um registo, cada cliente tem sempre a mesma visão dos dados. ▪Disponibilidade: assegurar que este permaneça ativo durante um determinado período de tempo, ou inclusive que ele é tolerante a falhas. ▪Tolerância ao Particionamento: capacidade de um sistema continuar operando mesmo depois uma falha na rede. Ou seja significa garantir que operações serão completadas, mesmo que componentes individuais não estejam disponíveis. 15FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 16. Teorema CAP Sistemas CA Os sistemas com consistência forte e alta disponibilidade (alta disponibilidade de um nó apenas) não sabem lidar com a possível falha de uma partição. Caso ocorra o sistema inteiro pode ficar indisponível até o membro do cluster voltar. ▪Exemplos disso são algumas configurações clássicas de bancos relacionais. 16FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL A C
  • 17. Teorema CAP Sistemas CP Para sistemas que precisam da consistência forte e tolerância a particionamento é necessário abrir a mão da disponibilidade (um pouco). ▪Exemplos desses sistemas CP são BigTable, HBase ou MongoDB entre vários outros. 17FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL PC
  • 18. Teorema CAP Sistemas AP Por outro lado existem sistemas que jamais podem ficar offline. Para ter alta disponibilidade mesmo com um tolerância a particionamento é preciso prejudicar um pouco a consistência. Esses sistemas aceitam escritas sempre e tentam sincronizar os dados em algum momento depois (read-consistency). ▪Exemplos aqui são Amazon Dynamo, Cassandra ou Riak. 18FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL P A
  • 19. Classificações de NoSQL CHAVE-VALOR, COLUNAS, GRAFOS E DOCUMENTOS 19FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 20. Chave-valor Modelo simples similar a uma estrutura de indexação, também conhecidos como tabelas de hash distribuídas, armazenam objetos indexados por chaves, e possibilitam a busca por esses objetos a partir de suas chaves. Uma das desvantagens desse modelo é que ele não permite a recuperação de objetos por meio de consultas mais complexas. 20FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 21. Chave-valor Em relação a manipulação dos dados, as operações são bem simples como: ▪get( ): Usado para retorna o valor ▪set( ): Usado para Capturar o valor. Alguns bancos que utilizam esse padrão são: ▪DynamoDb, Couchbase, Riak, Azure Table Storage, Redis, Tokyo Cabinet, Berkeley DB, etc... 21FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 22. Colunas Modelo mais complexo que o chave-valor. Neste tipo de modelo os dados são indexados por uma tripla (linha, coluna e timestramp) Linhas e as colunas são identificadas por chaves e o timestramp é o que permite identificar as diferentes versões de um mesmo dado. 22FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 23. Colunas Outro conceito importante sobre esse modelo é o de família de colunas (column family), é usado com o objetivo de agrupar colunas que armazenam o mesmo tipo de dados. Este modelo surgiu com o BigTable da Google. Outros bancos de dados que são orientados a coluna: ▪Hadoop, Cassanda, Hypertable, Amazon SimpleDB, etc. 23FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 24. Grafos O modelo orientado a grafos possui três componentes básicos: Nós: são os vértices do grafo; Relacionamentos: são as arestas; Propriedades (ou atributos) dos nós e relacionamentos. 24FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 25. Grafos Vantajoso quando consultas complexas são exigidas pelo usuário, pelo ganho de performance o que permitiria um melhor desempenho das aplicações. Consultas mais simples e diretas. Alguns bancos que utilizam esse padrão são: ▪Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc. 25FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 26. Documentos Este modelo armazena coleções de documentos. Um documento no geral são coleções de atributos e valores. Este atributo, por sua vez, pode ser um conjunto de campos, que possui strings, listas ou documentos aninhados. 26FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 27. Documentos Tem esquema livre e possui facilidade por utilizar formatos como XML e JSON. Também apresenta facilidade e flexibilidade em atualizar a estrutura dos documentos. Dentre os bancos de dados que utilizam esse modelo: ▪CouchDB e o MongoDB. 27FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 28. Comparação de complexidade 28FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 29. Mitos sobre NoSQL NOSQL É ESCALÁVEL! UMA DAS GRANDES PROMESSAS DOS BANCOS NOSQL. Dizer que seu sistema escala sozinho é vender um sonho. Pode até ser mais fácil de escalar se comparado a outras soluções mas ainda sim exigirá algum esforço para escalar. NOSQL É MAIS ECONÔMICO! MEIA VERDADE. Existem muitos casos entretanto que uma solução relacional atende perfeitamente todas as necessidades do cliente, como MySQL e PostgreSQL. 29FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 31. Conclusão ▪Não há consenso ou padronização; ▪Cada projeto resolve problemas particulares; ▪Gama de possibilidades de armazenamento da informação; ▪Certos cenários bancos relacionais são mais indicados (ACID); ▪Não veio substituir o modelo relacional; 31FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL
  • 32. Referências Sadalage, P. J., & Fowler, M. (2013). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence (1 Ed. ed.). Pearson Education Inc. Strauch, C. (10 de jun de 2009). NoSQl Databases. (S. M. University, Ed.). Disponível em: www.christof-strauch.de/nosqldbs.pd (s.d.) Introdução NoSQL porque usar? Disponível em: www.sorojet.com.br/termos_cartao.pdf (s.d.) NoSQL Org. Disponível em: http://nosql-database.org/ FERNANDES, A. d. (julho de 2013). NoSQL, BASE x ACID e Teorema CAP. Disponível em http://www.slideshare.net/Celio12/trabalho-no-sql-aricelio-de-souza Amazon inc. O que são bancos de dados NoSQL? Disponível em: https://aws.amazon.com/pt/nosql/ https://db-engines.com/en/ranking 32FHABIANA MACHADO - NOSQL: UMA VISÃO GERAL