1. O documento introduz o tema NoSQL, definindo o que é, características e tipos de bancos NoSQL.
2. São discutidos os modelos relacionais e não relacionais, destacando o Teorema CAP e propriedades ACID e BASE.
3. São apresentados os principais tipos de bancos NoSQL: chave-valor, documentos, coluna e grafo.
2. Quem sou eu?
Antonio Lázaro
Desenvolvedor de Software a mais de 10 anos.
Jug Leader @JavaBahia
Faz parte do time da Topos Informática
Ex-amante do futebol. Aposentado por insuficiência técnica
e física.
Curioso, que acredita no poder do compartilhamento do
conhecimento como ferramenta para transformar a
humanidade.
2
4. A base de tudo. (Pirâmide DIKW)
fonte: https://br.pinterest.com/pin/454089574898962157/ 4
5. O que é um banco de dados?
fonte: http://www.ton-lien.com/sistemas-de-banco-de-dados/
5
6. Definição formal
Conjunto de dados que tem uma estrutura regular e
que está organizado de tal forma que um
co m p u t ad o r p o d e ar m a ze n ar e re c u p e r ar
informações.
6
7. O que é um SGBD?
Um Sistema de Gerenciamento de Banco de Dados (SGBD)
- do inglês Data Base Management System (DBMS) - é o
softwares responsável pelo gerenciamento de um banco
de dados.
7
8. Modelos de SGBD (visão tradicional)
Hierárquico
Em rede
Orientado a objetos
Relacional (!!!)
8
10. Banco de dados relacionais (SGBDR ou RDBMS)
Surgiram em meados dos anos 70 (definido por Edgard
Frank Codd, no artigo “A “Relational Model of Data
forLarge Shared Data Banks“.
10
11. Características SGBDR (RDBMS)
Uso de chaves
Relacionamento entre entidades
Evita redundância de dados
Integridade referencial
Restrições de entrada de dados (Constraints: Not Null, Unique, Check…)
Índices
Portabilidade (Sql ANSI **)
Structured Query Language (SQL)
Transações
Normalização de dados: Foco em reduzir redundância de dados e manter a integridade dos dados
(regras formais FN)
11
14. NoSQL
Not Only Sql != NoSQL
Carlo Strozzi em 1998 para definir o banco
Lightweight.
Eric Evans (autor DDD) em 2009 reutilizou o termo
para falar de bancos de dados distribuídos que não
usavam SQL como linguagem padrão.
14
15. NoSQL - Características
São normalmente pensados para serem usados em
clusters.
Não tem esquemas fixos e permite a migração de
esquema sem downtime.
Possuem sistemas de consulta individuais ao invés
de usar uma linguagem de consulta padrão.
15
16. Teorema CAP (Teorema Brewer, Eric Brewer)
fonte: http://blog.caelum.com.br/nosql-do-teorema-cap-para-paccl/
16
17. Teorema CAP (Teorema Brewer, Eric Brewer)
fonte: https://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap-theorem/17
18. Teorema CAP (Teorema Brewer, Eric Brewer)
-NoSQL 1: Sistemas CP
-Exemplos desses sistemas CP são BigTable, HBase ou
MongoDB entre vários outros.
-NoSQL 2: Sistemas AP
-Exemplos aqui são Amazon Dynamo, Cassandra ou Riak.
-Sistemas CA
-Exemplos disso são algumas configurações clássicas de
bancos relacionais.
fonte: http://blog.caelum.com.br/nosql-do-teorema-cap-para-paccl/18
19. BASE (por Eric Brewer)
19
- Basic Availability: Teorema CAP
- Soft-state: Dados podem ser mudados devido a eventua
consistência e buscando alta disponibilidade
- Eventual consistency: Em alguns momentos o banco tem
consistência eventual.
20. BASE (por Eric Brewer)
fonte: https://www.slideshare.net/pmehrparvar/no-sql-databases-52906944
20
22. Chave/Valor
Os dados são armazenados como chave/valor em um
grande repositório e a busca é feita pela chave indexada.
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview22
23. Chave/Valor
Exemplo de uso:
Armazenar informações de sessão,
Perfis de usuário,
Preferências,
Estatísticas de usuários
Dados de carrinho de compras.
Devemos evitar o uso quando precisarmos consultar dados,
ter relações entre os dados armazenados ou precisarmos
operar em várias chaves ao mesmo tempo.
23
26. Documentos
Os dados são armazenados como documentos que podem ou não fazer parte de
uma coleção.
Normalmente não possuem schema.
Os dados são armazenados em padrões baseados em XML ou no formato Json
(http://www.json.org/) ou Bson (http://bsonspec.org/).
Inspirado no Lotus Notes (IBM)
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview26
27. Documentos
Exemplo de uso:
Úteis para sistemas de gerenciamento de conteúdo,
plataformas de blogs, análise da web, análise em
tempo real, aplicativos de comércio eletrônico.
Sistema com dados não estruturados, cujo esquema
podem mudar (formulário dinâmico)
Devemos evitar para sistemas que precisem de
transações complexas que abranjam múltiplas
operações ou consultas em diferentes estruturas de
agregados.
27
29. Família de Coluna
São otimizados para colunas de leitura e gravação, ao
contrário das linhas de dados.
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview
29
30. Família de Coluna
Exemplo de uso:
Os bancos de dados de famílias de colunas são
geralmente úteis para sistemas de gerenciamento de
conteúdo, plataformas de blog,
Volume de gravação pesado, como agregação de
logs.
Devemos evitar bancos de dados de famílias de
c o l u n a s p a r a s i s t e m a s q u e e s t ã o e m
desenvolvimento inicial, alterando padrões de
consulta.
30
32. Grafo
Cada registro é um vértice (ou nó) que são ligados pelos
relacionamentos (arestas).
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview
32
33. Grafo
Exemplo de uso:
São adequados para situações onde temos dados
conectados.
Alguns exemplos:
Redes sociais
Dados espaciais
Informações de roteamento de mercadorias e dinheiro
Motores de recomendação
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview
33
35. Outros tipos
Híbrido (multimodelo)
Objetos
Evento
Séries temporais
Mapeamento de todas ferramentas disponíveis em: http://nosql-
database.org/
Mapeamento do ranking de utilização em: http://db-engines.com/en/
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview
35
36. Fabricantes de SGBDR começam a observar
o tema
Mysql: https://www.mysql.com/why-mysql/white-papers/guide-to-mysql-
and-nosql-delivering-the-best-of-both-worlds/
Nossa próxima palestra (11h, por Henrique Lemos)
Postgres: https://www.enterprisedb.com/blog/postgres-json-nosql-
functionality
Oracle: http://www.oracle.com/technetwork/database/database-
technologies/nosqldb/overview/index.html
SqlServer https://blogs.msdn.microsoft.com/sqlserverstorageengine/
2015/09/01/combining-relational-and-nosql-concepts-in-sql-server/
fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview36
37. Conclusão
Já posso usar? SIM! Realidade em produção em diversas empresas.
Tecnologia madura.
Não existe bala de prata!
Conheça as características para saber quando usar cada ferramenta.
Como tudo em TI, a melhor resposta é “depende do contexto”.
Então avalie o contexto, antes de decidir.
Não seja fanboy de tecnologias. Isso pode custar caro para você e
para seu projeto.
37
38. Dados estruturados e organizados
Linguagem de consulta estruturada (SQL)
Os dados e seus relacionamentos são armazenados em
tabelas separadas.
Consistência e integridade dos dados são garantidos
pelo SGBD e modelagem
Transação ACID
Escalabilidade vertical (mais hardware)
38
SGBDR
39. NoSQL
Nenhuma linguagem de consulta declarativa
Variedade na estratégia de armazenamento (pares de valor-
chave, colunas, documentos, grafos)
Eventual consistência ACID
Dados não estruturados e imprevisíveis
Teorema CAP
Prioriza alta performance, alta disponibilidade e
escalabilidade
Transação BASE
Escalabilidade horizontal (mais recursos)
39
40. Comparação entre as terminologias do SQL e
do NoSQL
fonte: https://aws.amazon.com/pt/nosql/
40
41. Desvantagens SGBDR
Escalabilidade para grandes volumes de
dados
Dificuldade em armazenar dados de forma
distribuída
Normalização de dados em grandes volumes
compromete performance
“Custo join”
Risco full scan em queries mal preparadas.
Papel do DBA é bastante fundamental na
gestão do SGBD
41
42. Vantagens SGBDR
Oferece ao usuário processos de validação,
verificação e garantia de integridade de
dados
Controle de transações
Linguagem padrão (SQL)
Fornece recursos de otimização de
consultas
42
46. Persistência poliglota
Poliglota: Diz-se de, ou pessoa que sabe vários idiomas.
Martin Fowler: https://martinfowler.com/bliki/PolyglotPersistence.html
fonte: http://www.informit.com/articles/article.aspx?p=1930511 46