no sql o_que_e_isso.key

Post on 22-Jan-2018

398 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

NoSQLMas o que é isso? Já posso usar?

1

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

Agenda

Definições

Bancos relacionais

Bancos não relacionais

Conclusão

3

A base de tudo. (Pirâmide DIKW)

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

O que é um banco de dados?

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

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

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

Modelos de SGBD (visão tradicional)

Hierárquico

Em rede

Orientado a objetos

Relacional (!!!)

8

Banco de dados relacionais (SGBDR ou RDBMS)

9

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

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

ACID

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

NoSQL

13

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

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

Teorema CAP (Teorema Brewer, Eric Brewer)

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

Teorema CAP (Teorema Brewer, Eric Brewer)

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

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

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.

BASE (por Eric Brewer)

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

Classificação

Chave-Valor

Documento

Coluna

Grafo

Outros

21

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

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

Chave/Valor

Tipos:

Em memória (ex: Memcached)

Em disco (ex: Redis, SimpleDB, Riak)

Eventual consistência (ex: Dynamo, Voldermort)

24

Chave/Valor (ranking uso)

25

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

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

Documentos (ranking uso)

28

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

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

Família de Coluna (ranking uso)

31

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

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

Grafo (ranking uso)

34

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

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

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

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

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

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

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

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

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

Desvantagens NoSQL

Sem padronização

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

Não é intuitivo para programar

43

Vantagens NoSQL

Alta escalabilidade

Computação distribuída

Custo mais baixo

Flexibilidade de esquema, dados de semi-estrutura

Relações não complicadas

44

Duas sementes a serem plantadas nas nossas cabeças

45

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

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

Dúvidas?

48

Onde me achar?

Mail to: antonio.lazaro@gmail.com

https://twitter.com/antonio_lazaro

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

49

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

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

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

top related