No sql o_que_e_isso.key
-
Upload
antonio-lazaro-carvalho-borges -
Category
Software
-
view
398 -
download
0
Transcript of No sql o_que_e_isso.key
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: [email protected]
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