Persistência Poliglota, Big Data e NoSQL FISL 15

Embed Size (px)

Citation preview

Persistncia Poliglota

Persistncia Poliglota e NoSQL

Christiano [email protected]: @dump

Agenda

Quem sou eu

A era de ouro dos bancos relacionais

Bancos No Relacionais

Por que usar persistncia 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: [email protected]

A era de ouro dosBancos relacionais

Bancos Relacionais

Opes populares, como MySQL, PostgreSQL e Oracle

Sempre foram a primeira opo ao desenvolver qualquer aplicao

Muitas ferramentas

Muita gente qualificada no mercado

Suporte amplo e fcil de encontrar, inclusive do fabricante

Acabou se tornando um padro

O modelo relacional

Dados armazenados em tabelas;

Relacionamentos;

Normalizao de dados;

Necessidade de schema;

Vantagens do modelo relacional

SQL Quase todo mundo conhece;Linguagem bem flexvel;

Muitos operadores, stored procedures, boas ferramentas;

Dados bem padronizados, normalizados;Relacionamento;

Join, group by, integridade relacional, etc

Vantagens do modelo relacional

ACIDAtomicidade (tudo ou nada);

Consistncia (validao, respeita integridade);

Isolamento (concorrncia retorna resultado vlido);

Durabilidade (uma vez gravado, definitivo)

Desvantagens do modelo relacional

Dependncia da modelagem, qualquer alterao, precisa passar por uma migrao;

Dificuldade para manter aplicaes que crescem muito rpido;

Dificuldade na EscalabilidadeVertical (o banco est lento, mete mais memria na mquina);

Compra uma mquina melhor;

E quando o banco comea ficar lento?

Contrata um cara para criar ndices

E de fato fica um pouco melhor, mas no 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 aplicao

Fica ainda melhor, mas a informao comea ser duplicada

Not Only SQL

Novo paradigma

Na verdade, nem to novo assim;

Liberdade de schema e modelagem;

Escalabilidade horizontal (fica lento, coloca mais mquina);Pode ser mquinas comuns;

Muito fcil e simples colocar em clusterMuitos seguem o teorema de CAP

No bala de prata

Fazemos trs tipos de servios:Bom, Barato, Rpido

Se for BOM e BARATO no vai ser RPIDO

Se for BARATO e RPIDO no vai ser BOM

Se for BOM e RPIDO no vai ser BARATO

Escolha bem os recursos que precisaAbra mo de outros

Teorema de CAP

Teorema de CAP

Consistency (Todos os ns possuem o mesmo dado ao mesmo tempo);

Availability (Garantia que todas as requisies recebam um retorno true ou false)

Partition tolerance (o sistema continua operando mesmo se parte do n estive inacessvel)

De acordo com o teorema, sistemas distribudos no podem atender aos trs requisitos ao mesmo tempo, atendem um ou dois.

Desnormalizar

NoSQL no trabalha de forma normalizadaDuplicidade?

Falta de Consistncia?

Isso pode ser bom ou ruim dependendo da sua aplicao

Aprender novo modelo de fazer consultas ao banco

Muitos NoSQL no trabalham com conceito de queries, mas utilizam filtros;Voc precisa estar preparado para integrar novas formas de acesso a dados na sua aplicao

Possui curva de aprendizado (tnue, mas possui)

Esquea 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) no funcionam com NoSQL e nem vo funcionar;

Estude bem o driver apropriado da sua linguagem de programao favorita, provavelmente ter suporte ao NoSQL que voc escolher.

SQL vs NoSQL

SQLNoSQL

Uma nica mquinaUm Cluster

Escala verticalmenteEscala horizontalmente

Full IndexBaseado em chaves

SQLPossui API e filtros de pesquisa

Identifique qual NoSQL mais apropriado para sua aplicao

Orientao a Documento;

Chave/Valor;

Grafos;

Colunar;

Qual a melhor ferramenta?

Orientao a documentos

Exemplo de documento

{_id: ObjectId("53582acf31f36c9a248e4c15"),nome: Christiano Anderson,contato: {email: [email protected],celular: 11999998888,},sites: {blog: http://christiano.me,mongodb: http://www.mongodb.org},tecnologias: [mongodb,python,big data,nosql]}

Chave/Valor

Grafos

Colunar

Persistncia Poliglota

Uma aplicao eficiente aquela que atende bem seu objetivo e est sempre disponvel quando requisitada;Escalvel

Segura

Nunca o gargalo para inovaes

Persistncia Poliglota

uma boa ideia usar mais de uma soluo de persistncia:SQL onde for mais apropriado (ACID, transaes, normalizao);

NoSQL onde voc no precisa das features acima;

Exemplo: E-commerce

Catlogo de produtos a parte mais acessada de uma loja virtual, o volume de acessos alto (blackfriday, natal, dia das mes). Nem todo mundo que acessa vai comprar naquele momento. Colocar o catlogo de produtos no MongoDB pode destravar o e-commerce;

Os dados dos usurios, informaes financeiras e tudo aquilo que exige transao, fica no banco relacional (PostgreSQL por exemplo). Assim o SQL s ser acessado quando o usurio 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 usurios passam maior parte de seu tempo navegando. Ganha-se agilidade, flexibilidade e escalabilidade;

Usa-se PostgreSQL somente para concluir transaes, guardar informaes pessoais dos usurios (quando est logado) e tudo que precisa de normalizao;

Ainda tem mais...

Pode usar Neo4J (Grafos) para recomendar produtos aos usurios, com base em suas preferncias de navegao e outros critrios utilizados para determinar perfil de compra de cada um.

O arquiteto de solues dos dias de hoje...

No pode ficar amarrado a uma nica soluoPrecisa escolher a que funciona para cada cenrio;

No feio usar SQL e NoSQL ao mesmo tempo, feio deixar sua aplicao morrer por no ser escalvel;

Precisa ser flexvel, adicionar novas features rapidamente (afinal, seu concorrente est em um click de distncia);

necessrio 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 necessrio mais de uma soluo de persistncia para sua aplicao, extraindo o melhor que cada uma tem a oferecer.

Fica mais caro manter tudo isso?

Claro que fica! Voc vai precisar de mais mquina, pessoas qualificadas, mais infra...

Mas se voc faz sua aplicao mais rpida, estvel, segura e escalvel, vai vender mais...

Lembra do quadro Bom, Rpido e Barato? Ento, faa sua escolha.

Por onde comear

Primeiro passo entender bem a arquitetura da informao;

Conhecer um pouco de cada alternativa de persistncia;

Analisar qual melhor modelo de dados para cada caso (Documento, Chave/Valor, Colunar, Grafos);

Implementar a(s) persistncia(s) certa(s) sua aplicao;

Ter mais de uma aceitvel e recomendado

E o tempo acabou...Se no deu tempo de responder sua dvida,Me chame no corredor ou entre em contato:Twitter: @dump Email: [email protected]

OBRIGADO!!!