52
NoSQL Mas o que é isso? Já posso usar? 1

No sql o_que_e_isso.key

Embed Size (px)

Citation preview

Page 1: No sql o_que_e_isso.key

NoSQLMas o que é isso? Já posso usar?

1

Page 2: No sql o_que_e_isso.key

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

Page 3: No sql o_que_e_isso.key

Agenda

Definições

Bancos relacionais

Bancos não relacionais

Conclusão

3

Page 4: No sql o_que_e_isso.key

A base de tudo. (Pirâmide DIKW)

fonte: https://br.pinterest.com/pin/454089574898962157/ 4

Page 5: No sql o_que_e_isso.key

O que é um banco de dados?

fonte: http://www.ton-lien.com/sistemas-de-banco-de-dados/ 5

Page 6: No sql o_que_e_isso.key

Definição formal

Conjunto de dados que tem uma estrutura regular e que está organizado de tal forma que um computador po de armazenar e re cuperar informações.

6

Page 7: No sql o_que_e_isso.key

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

Page 8: No sql o_que_e_isso.key

Modelos de SGBD (visão tradicional)

Hierárquico

Em rede

Orientado a objetos

Relacional (!!!)

8

Page 9: No sql o_que_e_isso.key

Banco de dados relacionais (SGBDR ou RDBMS)

9

Page 10: No sql o_que_e_isso.key

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

Page 11: No sql o_que_e_isso.key

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

Page 12: No sql o_que_e_isso.key

ACID

fonte: https://www.linkedin.com/pulse/rdbms-follows-acid-property-nosql-databases-base-does12

Page 13: No sql o_que_e_isso.key

NoSQL

13

Page 14: No sql o_que_e_isso.key

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

Page 15: No sql o_que_e_isso.key

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

Page 16: No sql o_que_e_isso.key

Teorema CAP (Teorema Brewer, Eric Brewer)

fonte: http://blog.caelum.com.br/nosql-do-teorema-cap-para-paccl/16

Page 17: No sql o_que_e_isso.key

Teorema CAP (Teorema Brewer, Eric Brewer)

fonte: https://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap-theorem/17

Page 18: No sql o_que_e_isso.key

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

Page 19: No sql o_que_e_isso.key

BASE (por Eric Brewer)

19

- Basic Availability: Teorema CAP

- Soft-state: Dados podem ser mudados devido a eventual consistência e buscando alta disponibilidade

- Eventual consistency: Em alguns momentos o banco tem consistência eventual.

Page 20: No sql o_que_e_isso.key

BASE (por Eric Brewer)

fonte: https://www.slideshare.net/pmehrparvar/no-sql-databases-5290694420

Page 21: No sql o_que_e_isso.key

Classificação

Chave-Valor

Documento

Coluna

Grafo

Outros

21

Page 22: No sql o_que_e_isso.key

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

Page 23: No sql o_que_e_isso.key

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

Page 24: No sql o_que_e_isso.key

Chave/Valor

Tipos:

Em memória (ex: Memcached)

Em disco (ex: Redis, SimpleDB, Riak)

Eventual consistência (ex: Dynamo, Voldermort)

24

Page 25: No sql o_que_e_isso.key

Chave/Valor (ranking uso)

25

Page 26: No sql o_que_e_isso.key

DocumentosOs 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

Page 27: No sql o_que_e_isso.key

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

Page 28: No sql o_que_e_isso.key

Documentos (ranking uso)

28

Page 29: No sql o_que_e_isso.key

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-overview29

Page 30: No sql o_que_e_isso.key

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

Page 31: No sql o_que_e_isso.key

Família de Coluna (ranking uso)

31

Page 32: No sql o_que_e_isso.key

Grafo

Cada registro é um vértice (ou nó) que são ligados pelos relacionamentos (arestas).

fonte: https://www.thoughtworks.com/insights/blog/nosql-databases-overview32

Page 33: No sql o_que_e_isso.key

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-overview33

Page 34: No sql o_que_e_isso.key

Grafo (ranking uso)

34

Page 35: No sql o_que_e_isso.key

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-overview35

Page 36: No sql o_que_e_isso.key

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

Page 37: No sql o_que_e_isso.key

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

Page 38: No sql o_que_e_isso.key

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

Page 39: No sql o_que_e_isso.key

NoSQLNenhuma 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

Page 40: No sql o_que_e_isso.key

Comparação entre as terminologias do SQL e do NoSQL

fonte: https://aws.amazon.com/pt/nosql/ 40

Page 41: No sql o_que_e_isso.key

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

Page 42: No sql o_que_e_isso.key

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

Page 43: No sql o_que_e_isso.key

Desvantagens NoSQL

Sem padronização

Recursos de consulta limitados (até agora. Já ouviram falar do JNosql?)

Não é intuitivo para programar

43

Page 44: No sql o_que_e_isso.key

Vantagens NoSQL

Alta escalabilidade

Computação distribuída

Custo mais baixo

Flexibilidade de esquema, dados de semi-estrutura

Relações não complicadas

44

Page 45: No sql o_que_e_isso.key

Duas sementes a serem plantadas nas nossas cabeças

45

Page 46: No sql o_que_e_isso.key

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

Page 47: No sql o_que_e_isso.key

Big data

Segundo http://searchcloudcomputing.techtarget.com/definition/big-data-Big-Data:

Big data is an evolving term that describes any voluminous amount of structured, semistructured and unstructured data that has the potential to be mined for information.

47

Page 48: No sql o_que_e_isso.key

Dúvidas?

48

Page 49: No sql o_que_e_isso.key

Onde me achar?

Mail to: [email protected]

https://twitter.com/antonio_lazaro

https://www.linkedin.com/in/antonio-lazaro-carvalho-borges

49

Page 50: No sql o_que_e_isso.key

Referências 1/3

http://www.linfo.org/database.htmlhttps://www.thoughtworks.com/insights/blog/nosql-no-problem-intro-nosql-databaseshttp://www.w3resource.com/mongodb/nosql.phphttps://martinfowler.com/nosql.htmlhttps://www.coursera.org/learn/ruby-on-rails-web-services-mongodb/lecture/fmacg/introduction-to-nosqlhttps://www.slideshare.net/dstainer/introduction-to-nosql-databaseshttp://www.devmedia.com.br/introducao-aos-bancos-de-dados-nosql/26044http://www.sorojet.com.br/termos_cartao.pdfhttps://aws.amazon.com/pt/nosql/https://imasters.com.br/artigo/17043/banco-de-dados/nosql-voce-realmente-sabe-do-que-estamos-falando?trace=1519021197&source=singlehttp://www.itexto.net/devkico/?p=682http://www.itexto.net/devkico/?p=1983http://www.itexto.net/devkico/?p=1621http://www.itexto.net/devkico/?p=1523http://www.itexto.net/devkico/?p=1510http://www.itexto.net/devkico/?p=1493

50

Page 51: No sql o_que_e_isso.key

Referências 2/3

http://www.itexto.net/devkico/?p=1301http://www.itexto.net/devkico/?p=1199http://www.itexto.net/devkico/?p=2098https://alberisfernandes.wordpress.com/2010/11/27/introducao-ao-nosql/https://www.slideshare.net/FernandoCunha15/nosql-uma-breve-introduo-44513664https://www.infoq.com/br/presentations/evoluindo-sistemas-distribuidos-seis-anos-de-nosqlhttp://blog.ivanqueiroz.com/2017/01/o-que-devo-saber-sobre-nosql.htmlhttp://www.ton-lien.com/sistemas-de-banco-de-dados/https://br.pinterest.com/pin/454089574898962157/https://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_banco_de_dadoshttps://pt.wikipedia.org/wiki/Banco_de_dados_relacionalhttp://db-engines.com/en/rankinghttps://www.casadocodigo.com.br/products/livro-nosqlhttp://www.morganslibrary.net/files/codd-1970.pdf

51

Page 52: No sql o_que_e_isso.key

Referências 3/3- https://www.slideshare.net/alexculpado/jose-alexandrerdbm-sxnosql- http://en.tekstenuitleg.net/articles/software/database-design-tutorial/database-characteristics.html- https://en.wikipedia.org/wiki/Database_normalization- https://www.thoughtco.com/database-normalization-basics-1019735- https://www.thoughtco.com/should-i-normalize-my-database-1019730- SQL Curso prático (Celso Henrique Poderoso Oliveira) - https://dzone.com/articles/quick-notes-what-cap-theorem- https://www.linkedin.com/pulse/rdbms-follows-acid-property-nosql-databases-base-does- http://www.informit.com/articles/article.aspx?p=1930511- https://martinfowler.com/bliki/PolyglotPersistence.html- https://dzone.com/articles/polyglot-persistence-future- http://blog.caelum.com.br/nosql-do-teorema-cap-para-paccl- https://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap-theorem//

52