SlideShare une entreprise Scribd logo
1  sur  42
Persistência
Poliglota e
NoSQL
Christiano Anderson
anderson@propus.com.br
Twitter: @dump
Agenda
● Quem sou eu
● A era de ouro dos bancos relacionais
● Bancos Não Relacionais
● Por que usar persistência poliglota
● Exemplos
Quem sou eu
● Trabalha com internet/devel desde 1996;
● Colabora com diversos projetos livres;
● Fundador do MUG-SP;
● Especialista em NoSQL / Big Data;
● Blog: http://christiano.me
● Twitter: @dump
● Email: anderson@propus.com.br
A era de ouro dos
Bancos relacionais
Bancos Relacionais
● Opções populares,
como MySQL,
PostgreSQL e Oracle
● Sempre foram a
primeira opção ao
desenvolver qualquer
aplicação
● Muitas ferramentas
● Muita gente
qualificada no
mercado
● Suporte amplo e fácil
de encontrar, inclusive
do fabricante
● Acabou se tornando
um “padrão”
O modelo relacional
● Dados armazenados em tabelas;
● Relacionamentos;
● Normalização de dados;
● Necessidade de schema;
Vantagens do modelo relacional
● SQL → Quase todo mundo conhece;
– Linguagem bem flexível;
– Muitos operadores, stored procedures, boas
ferramentas;
● Dados bem padronizados, normalizados;
– Relacionamento;
– Join, group by, integridade relacional, etc
Vantagens do modelo relacional
● ACID
– Atomicidade (tudo ou nada);
– Consistência (validação, respeita integridade);
– Isolamento (concorrência retorna resultado válido);
– Durabilidade (uma vez gravado, é definitivo)
Desvantagens do modelo relacional
● Dependência da modelagem, qualquer
alteração, precisa passar por uma migração;
● Dificuldade para manter aplicações que
crescem muito rápido;
● Dificuldade na Escalabilidade
– Vertical (o banco está lento, mete mais memória na
máquina);
– Compra uma máquina melhor;
E quando o banco começa ficar lento?
Contrata um cara para criar índices
E de fato fica um pouco melhor, mas não resolve
100%
Contrata um cara para criar views e
queries complexas
Melhora mais um pouco, só que vira um pesadelo
para manter...
Contrata um cara para criar cache
na aplicação
Fica ainda melhor, mas a informação começa ser
duplicada
Not Only SQL
Novo paradigma
● Na verdade, nem tão novo assim;
● Liberdade de schema e modelagem;
● Escalabilidade horizontal (fica lento, coloca
mais máquina);
– Pode ser máquinas comuns;
● Muito fácil e simples colocar em cluster
– Muitos seguem o teorema de CAP
Não é bala de prata
● Fazemos três tipos de serviços:
– Bom, Barato, Rápido
● Se for BOM e BARATO não vai ser RÁPIDO
● Se for BARATO e RÁPIDO não vai ser BOM
● Se for BOM e RÁPIDO não vai ser BARATO
Escolha bem os recursos que precisa
Abra mão de outros
Teorema de CAP
Teorema de CAP
Consistency (Todos os nós possuem o mesmo dado ao mesmo tempo);
Availability (Garantia que todas as requisições recebam um retorno true ou false)
Partition tolerance (o sistema continua operando mesmo se parte do nó estive
inacessível)
De acordo com o teorema, sistemas distribuídos
não podem atender aos três requisitos ao mesmo
tempo, atendem um ou dois.
Desnormalizar
● NoSQL não trabalha de forma normalizada
– Duplicidade?
– Falta de Consistência?
● Isso pode ser bom ou ruim dependendo da sua
aplicação
Aprender novo modelo de fazer
consultas ao banco
● Muitos NoSQL não trabalham com conceito de
queries, mas utilizam filtros;
– Você precisa estar preparado para integrar novas
formas de acesso a dados na sua aplicação
– Possui curva de aprendizado (tênue, mas possui)
Esqueça SQL e modelagem
● Aprenda como o NoSQL funciona, nunca, mas
nunca pense da mesma forma que no
relacional;
– O segredo do sucesso chama-se Schema Design
Deixe de lado ORMs tradicionais
● ORM tradicionais (como SQLAlchemy) não
funcionam com NoSQL e nem vão funcionar;
● Estude bem o driver apropriado da sua
linguagem de programação favorita,
provavelmente terá suporte ao NoSQL que
você escolher.
SQL vs NoSQL
SQL NoSQL
Uma única máquina Um Cluster
Escala verticalmente Escala horizontalmente
Full Index Baseado em chaves
SQL Possui API e filtros de
pesquisa
Identifique qual NoSQL mais
apropriado para sua aplicação
● Orientação a Documento;
● Chave/Valor;
● Grafos;
● Colunar;
Qual a melhor ferramenta?
Orientação a documentos
Exemplo de documento
{
“_id”: ObjectId("53582acf31f36c9a248e4c15"),
“nome”: “Christiano Anderson”,
“contato”: {
“email”: “chris@christiano.me”,
“celular”: “11999998888”,
},
“sites”: {
“blog”: “http://christiano.me”,
“mongodb”: “http://www.mongodb.org”
},
“tecnologias”: [“mongodb”,”python”,”big data”,”nosql”]
}
Chave/Valor
Grafos
Colunar
Persistência Poliglota
● Uma aplicação eficiente é aquela que atende
bem seu objetivo e está sempre disponível
quando é requisitada;
– Escalável
– Segura
– Nunca é o gargalo para inovações
Persistência Poliglota
● É uma boa ideia usar mais de uma solução de
persistência:
– SQL onde for mais apropriado (ACID, transações,
normalização);
– NoSQL onde você não precisa das features acima;
Exemplo: E-commerce
● Catálogo de produtos é a parte mais acessada de uma
loja virtual, o volume de acessos é alto (blackfriday,
natal, dia das mães). Nem todo mundo que acessa vai
comprar naquele momento. Colocar o catálogo de
produtos no MongoDB pode destravar o e-commerce;
● Os dados dos usuários, informações financeiras e tudo
aquilo que exige transação, fica no banco relacional
(PostgreSQL por exemplo). Assim o SQL só será
acessado quando o usuário for concluir a compra.
Aproveitando melhor cada
tecnologia
● O exemplo do e-commerce mostra:
– Usa-se MongoDB para escalar bem uma parte
complicada do site, onde os usuários passam maior
parte de seu tempo navegando. Ganha-se
agilidade, flexibilidade e escalabilidade;
– Usa-se PostgreSQL somente para concluir
transações, guardar informações pessoais dos
usuários (quando está logado) e tudo que precisa
de normalização;
Ainda tem mais...
● Pode usar Neo4J (Grafos) para recomendar
produtos aos usuários, com base em suas
preferências de navegação e outros critérios
utilizados para determinar perfil de compra de
cada um.
O arquiteto de soluções dos dias de
hoje...
● Não pode ficar amarrado a uma única solução
– Precisa escolher a que funciona para cada cenário;
● Não é feio usar SQL e NoSQL ao mesmo
tempo, é feio deixar sua aplicação morrer por
não ser escalável;
● Precisa ser flexível, adicionar novas features
rapidamente (afinal, seu concorrente está em
um click de distância);
É necessário diversas ferramentas
para construir uma casa
● Assim como você precisa de chave de fenda,
alicate, pá, martelo e outras ferramentas para
construir uma casa, pode ser necessário mais
de uma solução de persistência para sua
aplicação, extraindo o melhor que cada uma
tem a oferecer.
Fica mais caro manter tudo isso?
● Claro que fica!
– Você vai precisar de mais máquina, pessoas
qualificadas, mais infra...
● Mas se você faz sua aplicação mais rápida,
estável, segura e escalável, vai vender mais...
● Lembra do quadro Bom, Rápido e Barato?
Então, faça sua escolha.
Por onde começar
● Primeiro passo é entender bem a arquitetura da
informação;
● Conhecer um pouco de cada alternativa de persistência;
● Analisar qual melhor modelo de dados para cada caso
(Documento, Chave/Valor, Colunar, Grafos);
● Implementar a(s) persistência(s) certa(s) à sua aplicação;
● Ter mais de uma é aceitável e recomendado
E o tempo acabou...
Se não deu tempo de responder sua dúvida,
Me chame no corredor ou entre em contato:
Twitter: @dump
Email: anderson@propus.com.br
OBRIGADO!!!

Contenu connexe

Tendances

UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDVinicius Buffolo
 
Introdução à política de segurança da Informação com exemplos
Introdução à política de segurança da Informação com exemplosIntrodução à política de segurança da Informação com exemplos
Introdução à política de segurança da Informação com exemplosAldson Diego
 
Copy of MongoDB .pptx
Copy of MongoDB .pptxCopy of MongoDB .pptx
Copy of MongoDB .pptxnehabsairam
 
LGPD e Gestão Documental
LGPD e Gestão DocumentalLGPD e Gestão Documental
LGPD e Gestão DocumentalDaniel Gorita
 
Data Modeling on Azure for Analytics
Data Modeling on Azure for AnalyticsData Modeling on Azure for Analytics
Data Modeling on Azure for AnalyticsIke Ellis
 
Tecnologia De Tomada De Decisão
Tecnologia De Tomada De DecisãoTecnologia De Tomada De Decisão
Tecnologia De Tomada De DecisãoCleiton Fernandes
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
As boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaAs boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaBergson Lopes Rêgo, PMP
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Carlos Barbieri
 
Modern Data Warehouse with Azure Synapse.pdf
Modern Data Warehouse with Azure Synapse.pdfModern Data Warehouse with Azure Synapse.pdf
Modern Data Warehouse with Azure Synapse.pdfKeyla Dolores Méndez
 
Modelagem De Banco De Dados
Modelagem De Banco De DadosModelagem De Banco De Dados
Modelagem De Banco De Dadosmgoberto
 

Tendances (20)

UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBD
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
Introdução à política de segurança da Informação com exemplos
Introdução à política de segurança da Informação com exemplosIntrodução à política de segurança da Informação com exemplos
Introdução à política de segurança da Informação com exemplos
 
Internals of Presto Service
Internals of Presto ServiceInternals of Presto Service
Internals of Presto Service
 
Copy of MongoDB .pptx
Copy of MongoDB .pptxCopy of MongoDB .pptx
Copy of MongoDB .pptx
 
LGPD e Gestão Documental
LGPD e Gestão DocumentalLGPD e Gestão Documental
LGPD e Gestão Documental
 
Data Modeling on Azure for Analytics
Data Modeling on Azure for AnalyticsData Modeling on Azure for Analytics
Data Modeling on Azure for Analytics
 
Tecnologia De Tomada De Decisão
Tecnologia De Tomada De DecisãoTecnologia De Tomada De Decisão
Tecnologia De Tomada De Decisão
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
As boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados ModernaAs boas práticas da Gestão de Dados Moderna
As boas práticas da Gestão de Dados Moderna
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Apresentação business intelligence
Apresentação business intelligenceApresentação business intelligence
Apresentação business intelligence
 
Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02
 
Modern Data Warehouse with Azure Synapse.pdf
Modern Data Warehouse with Azure Synapse.pdfModern Data Warehouse with Azure Synapse.pdf
Modern Data Warehouse with Azure Synapse.pdf
 
Modelagem De Banco De Dados
Modelagem De Banco De DadosModelagem De Banco De Dados
Modelagem De Banco De Dados
 

Similaire à Persistência Poliglota, Big Data e NoSQL FISL 15

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
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkGiuseppe Lopes
 
Criando produtos de Data Science & AI: da proposta ao deploy
Criando produtos de Data Science & AI: da proposta ao deployCriando produtos de Data Science & AI: da proposta ao deploy
Criando produtos de Data Science & AI: da proposta ao deployDevCamp Campinas
 
DevCamp 2017 - Criando produtos de Data Science e Inteligência Artificial
DevCamp 2017 - Criando produtos de Data Science e Inteligência ArtificialDevCamp 2017 - Criando produtos de Data Science e Inteligência Artificial
DevCamp 2017 - Criando produtos de Data Science e Inteligência ArtificialWeslley Souza Patrocinio
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaWaldemar Neto
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwarePablo Dall'Oglio
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?João Gabriel Lima
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 

Similaire à Persistência Poliglota, Big Data e NoSQL FISL 15 (20)

Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
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
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 
Criando produtos de Data Science & AI: da proposta ao deploy
Criando produtos de Data Science & AI: da proposta ao deployCriando produtos de Data Science & AI: da proposta ao deploy
Criando produtos de Data Science & AI: da proposta ao deploy
 
DevCamp 2017 - Criando produtos de Data Science e Inteligência Artificial
DevCamp 2017 - Criando produtos de Data Science e Inteligência ArtificialDevCamp 2017 - Criando produtos de Data Science e Inteligência Artificial
DevCamp 2017 - Criando produtos de Data Science e Inteligência Artificial
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglota
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
 
Scrum
ScrumScrum
Scrum
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
Crystal method
Crystal methodCrystal method
Crystal method
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 

Plus de Christiano Anderson

MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoChristiano Anderson
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Christiano Anderson
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014Christiano Anderson
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIChristiano Anderson
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 

Plus de Christiano Anderson (18)

Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
certificadoTDC2016Floripa
certificadoTDC2016FloripacertificadoTDC2016Floripa
certificadoTDC2016Floripa
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjango
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014
 
MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014MongoDB Schema Design - Latinoware 2014
MongoDB Schema Design - Latinoware 2014
 
Big Data Latinoware 2014
Big Data Latinoware 2014Big Data Latinoware 2014
Big Data Latinoware 2014
 
Big Data - Conceitos Básicos
Big Data - Conceitos BásicosBig Data - Conceitos Básicos
Big Data - Conceitos Básicos
 
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERIGeo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
Geo Django - Fórum Goiano de Software Livre - 10 FGSL e 1 ERI
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
GeoDjango
GeoDjangoGeoDjango
GeoDjango
 
MongoDB na Campus Party
MongoDB na Campus PartyMongoDB na Campus Party
MongoDB na Campus Party
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Python MongoDB no MongoSP
Python MongoDB no MongoSPPython MongoDB no MongoSP
Python MongoDB no MongoSP
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Python and MongoDB
Python and MongoDBPython and MongoDB
Python and MongoDB
 

Persistência Poliglota, Big Data e NoSQL FISL 15

  • 2. Agenda ● Quem sou eu ● A era de ouro dos bancos relacionais ● Bancos Não Relacionais ● Por que usar persistência poliglota ● Exemplos
  • 3. Quem sou eu ● Trabalha com internet/devel desde 1996; ● Colabora com diversos projetos livres; ● Fundador do MUG-SP; ● Especialista em NoSQL / Big Data; ● Blog: http://christiano.me ● Twitter: @dump ● Email: anderson@propus.com.br
  • 4. A era de ouro dos Bancos relacionais
  • 5. Bancos Relacionais ● Opções populares, como MySQL, PostgreSQL e Oracle ● Sempre foram a primeira opção ao desenvolver qualquer aplicação ● Muitas ferramentas ● Muita gente qualificada no mercado ● Suporte amplo e fácil de encontrar, inclusive do fabricante ● Acabou se tornando um “padrão”
  • 6. O modelo relacional ● Dados armazenados em tabelas; ● Relacionamentos; ● Normalização de dados; ● Necessidade de schema;
  • 7. Vantagens do modelo relacional ● SQL → Quase todo mundo conhece; – Linguagem bem flexível; – Muitos operadores, stored procedures, boas ferramentas; ● Dados bem padronizados, normalizados; – Relacionamento; – Join, group by, integridade relacional, etc
  • 8. Vantagens do modelo relacional ● ACID – Atomicidade (tudo ou nada); – Consistência (validação, respeita integridade); – Isolamento (concorrência retorna resultado válido); – Durabilidade (uma vez gravado, é definitivo)
  • 9. Desvantagens do modelo relacional ● Dependência da modelagem, qualquer alteração, precisa passar por uma migração; ● Dificuldade para manter aplicações que crescem muito rápido; ● Dificuldade na Escalabilidade – Vertical (o banco está lento, mete mais memória na máquina); – Compra uma máquina melhor;
  • 10. E quando o banco começa ficar lento?
  • 11. Contrata um cara para criar índices E de fato fica um pouco melhor, mas não resolve 100%
  • 12. Contrata um cara para criar views e queries complexas Melhora mais um pouco, só que vira um pesadelo para manter...
  • 13. Contrata um cara para criar cache na aplicação Fica ainda melhor, mas a informação começa ser duplicada
  • 15. Novo paradigma ● Na verdade, nem tão novo assim; ● Liberdade de schema e modelagem; ● Escalabilidade horizontal (fica lento, coloca mais máquina); – Pode ser máquinas comuns; ● Muito fácil e simples colocar em cluster – Muitos seguem o teorema de CAP
  • 16. Não é bala de prata ● Fazemos três tipos de serviços: – Bom, Barato, Rápido ● Se for BOM e BARATO não vai ser RÁPIDO ● Se for BARATO e RÁPIDO não vai ser BOM ● Se for BOM e RÁPIDO não vai ser BARATO
  • 17. Escolha bem os recursos que precisa Abra mão de outros
  • 19. Teorema de CAP Consistency (Todos os nós possuem o mesmo dado ao mesmo tempo); Availability (Garantia que todas as requisições recebam um retorno true ou false) Partition tolerance (o sistema continua operando mesmo se parte do nó estive inacessível)
  • 20. De acordo com o teorema, sistemas distribuídos não podem atender aos três requisitos ao mesmo tempo, atendem um ou dois.
  • 21. Desnormalizar ● NoSQL não trabalha de forma normalizada – Duplicidade? – Falta de Consistência? ● Isso pode ser bom ou ruim dependendo da sua aplicação
  • 22. Aprender novo modelo de fazer consultas ao banco ● Muitos NoSQL não trabalham com conceito de queries, mas utilizam filtros; – Você precisa estar preparado para integrar novas formas de acesso a dados na sua aplicação – Possui curva de aprendizado (tênue, mas possui)
  • 23. Esqueça SQL e modelagem ● Aprenda como o NoSQL funciona, nunca, mas nunca pense da mesma forma que no relacional; – O segredo do sucesso chama-se Schema Design
  • 24. Deixe de lado ORMs tradicionais ● ORM tradicionais (como SQLAlchemy) não funcionam com NoSQL e nem vão funcionar; ● Estude bem o driver apropriado da sua linguagem de programação favorita, provavelmente terá suporte ao NoSQL que você escolher.
  • 25. SQL vs NoSQL SQL NoSQL Uma única máquina Um Cluster Escala verticalmente Escala horizontalmente Full Index Baseado em chaves SQL Possui API e filtros de pesquisa
  • 26. Identifique qual NoSQL mais apropriado para sua aplicação ● Orientação a Documento; ● Chave/Valor; ● Grafos; ● Colunar;
  • 27. Qual a melhor ferramenta?
  • 29. Exemplo de documento { “_id”: ObjectId("53582acf31f36c9a248e4c15"), “nome”: “Christiano Anderson”, “contato”: { “email”: “chris@christiano.me”, “celular”: “11999998888”, }, “sites”: { “blog”: “http://christiano.me”, “mongodb”: “http://www.mongodb.org” }, “tecnologias”: [“mongodb”,”python”,”big data”,”nosql”] }
  • 33. Persistência Poliglota ● Uma aplicação eficiente é aquela que atende bem seu objetivo e está sempre disponível quando é requisitada; – Escalável – Segura – Nunca é o gargalo para inovações
  • 34. Persistência Poliglota ● É uma boa ideia usar mais de uma solução de persistência: – SQL onde for mais apropriado (ACID, transações, normalização); – NoSQL onde você não precisa das features acima;
  • 35. Exemplo: E-commerce ● Catálogo de produtos é a parte mais acessada de uma loja virtual, o volume de acessos é alto (blackfriday, natal, dia das mães). Nem todo mundo que acessa vai comprar naquele momento. Colocar o catálogo de produtos no MongoDB pode destravar o e-commerce; ● Os dados dos usuários, informações financeiras e tudo aquilo que exige transação, fica no banco relacional (PostgreSQL por exemplo). Assim o SQL só será acessado quando o usuário for concluir a compra.
  • 36. Aproveitando melhor cada tecnologia ● O exemplo do e-commerce mostra: – Usa-se MongoDB para escalar bem uma parte complicada do site, onde os usuários passam maior parte de seu tempo navegando. Ganha-se agilidade, flexibilidade e escalabilidade; – Usa-se PostgreSQL somente para concluir transações, guardar informações pessoais dos usuários (quando está logado) e tudo que precisa de normalização;
  • 37. Ainda tem mais... ● Pode usar Neo4J (Grafos) para recomendar produtos aos usuários, com base em suas preferências de navegação e outros critérios utilizados para determinar perfil de compra de cada um.
  • 38. O arquiteto de soluções dos dias de hoje... ● Não pode ficar amarrado a uma única solução – Precisa escolher a que funciona para cada cenário; ● Não é feio usar SQL e NoSQL ao mesmo tempo, é feio deixar sua aplicação morrer por não ser escalável; ● Precisa ser flexível, adicionar novas features rapidamente (afinal, seu concorrente está em um click de distância);
  • 39. É necessário diversas ferramentas para construir uma casa ● Assim como você precisa de chave de fenda, alicate, pá, martelo e outras ferramentas para construir uma casa, pode ser necessário mais de uma solução de persistência para sua aplicação, extraindo o melhor que cada uma tem a oferecer.
  • 40. Fica mais caro manter tudo isso? ● Claro que fica! – Você vai precisar de mais máquina, pessoas qualificadas, mais infra... ● Mas se você faz sua aplicação mais rápida, estável, segura e escalável, vai vender mais... ● Lembra do quadro Bom, Rápido e Barato? Então, faça sua escolha.
  • 41. Por onde começar ● Primeiro passo é entender bem a arquitetura da informação; ● Conhecer um pouco de cada alternativa de persistência; ● Analisar qual melhor modelo de dados para cada caso (Documento, Chave/Valor, Colunar, Grafos); ● Implementar a(s) persistência(s) certa(s) à sua aplicação; ● Ter mais de uma é aceitável e recomendado
  • 42. E o tempo acabou... Se não deu tempo de responder sua dúvida, Me chame no corredor ou entre em contato: Twitter: @dump Email: anderson@propus.com.br OBRIGADO!!!