Conhecendo as opções de Bancos de Dados na Nuvem da

Propaganda
Conhecendo as opções de Bancos de
Dados na Nuvem da AWS
Daniel Bento, Solutions Architect
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Workshops
•
•
•
•
30/03 - Escalando sua aplicação para os primeiros 10 milhões de usuários
27/04 - Conhecendo as opções de Bancos de Dados na Nuvem da AWS
25/05 - Introdução a arquitetura serverless
14/06 - Automações de Segurança
Agenda - Hoje
•
•
•
•
•
Apresentação - BDs na nuvem da AWS
Break
Lab
Dúvidas
Fechamento
O que esperar desta apresentação
•
Conceitos: Transações ACID, Teorema CAP e
persistência poliglota
•
Apresentar os serivços de Banco de Dados na AWS e
classificá-los dentro dos tipos existentes
•
Quiz: Compreender qual cenário de utilização de cada
serviço
Transações ACID
Transações ACID
•
Atomicity (Ou tudo é feito, ou nada é feito)
•
Consistency (levar o banco de dados de um estado
consistente a um outro estado consistente)
•
Isolation (transações concorrentes resultam em um
estado que seria obtido se fossem executadas
sequencialmente – controle de concorrência –
deadlocks)
•
Durability (efeitos de uma transação em caso de
sucesso (commit) devem persistir no banco de
dados)
Teorema CAP
Teorema CAP
Você pode criar um banco que dados que seja:
•
Consistent (Escritas são atômicas e todas as
solicitações subseqüentes recuperam o novo valor)
•
Available (O bd sempre retornará um valor
enquanto um único servidor estiver rodando)
•
Partition tolerant (O sistema ainda funcionará
mesmo se a comunicação do servidor for perdida
temporariamente - ou seja, uma partição de rede)
Teorema CAP
Mas você só pode escolher 2: CA ou CP ou AP
•
CA (Redis, PostgreSQL, Neo4J)
•
CP (MongoDB, HBase)
•
AP (DNS, Amazon DynamoDB, CouchDB) – leituras
eventualmente consistente e fortemente consistente
Persistência Poliglota
Arquitetura tradicional de banco de dados
Client Tier
Umbancode
dadospara
todos
workloads
App/Web Tier
RDBMS
Arquitetura tradicional de banco de dados
Acesso Chave-valor
Queries complexas
Transaçõe
Analytics
Client Tier
App/Web Tier
RDBMS
Todos forçados
dentro do banco
relacional
7 Bancos de dados em 7 semanas
• A questão central: Que banco de dados ou
combinação de bancos melhor resolve seu
problema?
• Analisa diversos bancos de dados,
classificando-os em 5 tipos
• Casos de uso para cada banco de dados
Tipos de Banco de Dados
Amazon
RDS
Aurora
DIY EC2
Relacional/RDBMS
Amazon
DynamoDB
Redis
Memcached
Riak
Chave-Valor
Amazon
Redshift
Amazon
Athena
HBase
Cassandra
Colunar
Amazon
DynamoDB
ElasticSearch
MongoDB
Node4J
TitanDB
CouchDB
Documentos
Grafo
Arquitetura da camada de dados na AWS
Escolha omelhor tipo
bancodedadospara
cada workload
Client Tier
App/Web Tier
Data Tier
Cache
Data
Warehouse
Blob Store
NoSQL
RDBMS
Search
Escolha o banco em função do workload
Leituras quentes
Queriescomplexas
Transações
Chave/valor
Queriessimples
Logs
Analytics
Data Tier
Cache
Data
Warehouse
Blob Store
NoSQL
RDBMS
Search
Sistemade
Busca
DIY EC2 Bancos de Dados na AWS
•
Faça você mesmo: rode seu banco de dados em EC2
•
Maior poder de configuração
•
Praticamente qualquer tipo e engine de banco de dados
EC2
Clientes que rodam banco de dados na AWS
BDs Relacionais
Amazon RDS
Aurora
DIY EC2
Como escalar bancos de dados relacionais?
•
Em algum momento, você chegará ao limite de sua máquina
virtual. O que fazer?
•
Verticalmente
•
•
Adicionar mais capacidade de CPU, Memória, RAM, Redes, etc.
Horizontalmente
•
•
•
•
•
Réplicas de Leitura
Sharding
Federação
Cluster
Mudança de paradigma/tipo
BDs Relacionais
•
Padrão mais comum e clássico de banco de
dados
•
São sistemas baseados na teoria dos
conjuntos implementados como tabelas
bidimensionais com linhas e colunas
•
Fortemente tipado: tipos numéricos, strings,
datas, blobs, etc.
BDs Relacionais
•
Boa aderência
•
•
•
•
Layout dos dados é conhecido antecipadamente,
mas você ainda não sabe bem como usar os
dados
Transações ACID
Queries complexas
Não tão bons
•
•
Quando seus dados são altamente variáveis ou
profundamente hierárquicos. Ex: bd para descrever
todas as criaturas da natureza
Escalabilidade horizontal
Amazon Relational Database Service (RDS)
•
Suporte multi-engine: Aurora, MySQL, MariaDB,
PostgreSQL, Oracle, SQL Server
•
Provisionamento automático, patching, escalabilidade,
backup/restore, failover
•
Alta disponibilidade com RDS Multi-AZ
Amazon Aurora
High Availability Multi-AZ Deployments
Solução para tolerância à falhas
Failover automático
Replicação síncrona
Ativado com poucos cliques
Reinventando o Banco de Dados Relacional
Amazon RDS for Aurora
•
Compatível com MySQL: 5x mais performanc no
mesmo hardware: 100.000 escritas/s e 500.000
leituras/s
•
Em preview Aurora PostgreSQL
•
Escalável até 64 TB. Até 15 réplicas de leitura
•
Storage SSD customizado, altamente durável e
tolerante à falhas. Replicado 6x em 3 Zonas de
disponibilidade.
Amazon
DynamoDB
NoSQL Chave-Valor
Redis
Memcached
Riak
NoSQL Chave-Valor
•
Um dos tipos mais simples de banco de dados
•
Mapeia chaves simples para possivelmente
valores mais complexos como uma hashtable
•
Flexibilidade de implementação
NoSQL Chave-Valor
• Boa aderência
•
•
•
•
Escalabilidade horizontal, extremamente
rápido
Problemas onde os dados não são altamente
relacionados
Offload de banco de dados
Sessões de usuários
• Não tão bons
•
Executar queries complexas em seus dados,
diferentes de operações básicas CRUD
(Criar, Ler, Atualizar, Excluir).
Amazon
DynamoDB
Rápido, Flexível, NoSQL escalável
História do NoSQL na Amazon
Amazon DynamoDB
• Totalmente gerenciado: você diz quantas leituras/s e escritas/s e nós
fazemos o resto
• Se sua aplicação é rápida com 10 usuários, então será rápida com 1M, 10M
ou 100M.
• Disponibilidade e durabilidade indistinguíveis de 100%
Amazon DynamoDB Customers
Case de Uso Lyft - Sistema de rastreamento de corridas
“
•
Lyft realiza até 8x mais corridas durante
os horários de pico
•
Utilizado para rastreamento GPS em
todas as corridas.
Era tão simples escalar.
Tínhamos dois botões: um
para leitura e outro para
escrita.
Chris Lambert
CTO, Lyft
”
Cache em memória
Memcached ou Redis
Amazon
ElastiCache
Totalmente gerenciado; zero
administração
Key ElastiCache Features
•
•
Totalmente gerenciado
Multi-AZ
•
•
•
•
•
Totalmente gerenciado
Persistência
Réplicas de leitura
Multi-AZ com auto-failover
Redis cluster
Amazon ElastiCache Customers
Gaming
AdTech
Media
Mobile
Other
Amazon
Redshift
Banco de Dados Colunar
Amazon Athena
HBase
Cassandra
Banco de dados Colunar
•
Armazena os dados por colunas, ao invés de
mantê-los juntos por linhas
•
Redshift: baseado PostgreSQL, com
armazenamento colunar
•
HBase: colunas são ”baratas” para serem
adicionadas, o controle de versão é trivial, e
não há custo de armazenamento real para
valores despopulados
Banco de dados Colunar
• Boa aderência
•
•
•
Escalabilidade horizontal
Problemas de ”Big Data” em clusters com
centenas de nós
Compressão e versionamento dos dados
• Não tão bons
•
•
É melhor projetar seu schema com base em
como você planeja consultar os dados.
Você deve ter alguma idéia antes de como
seus dados serão usados – Impacta a
performance.
Amazon Redshift
•
Escala de Petabytes, relacional, MPP, data
warehousing
•
Totalmente gerenciado com plataformas em SSD e
HDD
•
10x performance and 1/10 the price of other
solutions
•
Comece pequeno e cresça conforme a demanda
Arquitetura do Amazon Redshift
Leader Node
•
•
•
SQL endpoint, JDBC/ODBC
Stores metadata
Coordinates query execution
JDBC/ODBC
Compute Nodes
•
•
•
•
10 GigE
(HPC)
Local, columnar storage
Execute queries in parallel
Load, backup, restore via Amazon S3
Load from Amazon DynamoDB or SSH
Two hardware platforms
•
•
•
Optimized for data processing
DS2: HDD; scale from 2TB to 2PB
DC1: SSD; scale from 160GB to 326TB
Ingestion
Backup
Restore
Amazon EMR / HBase
•
Hadoop, HBase, Hive, Presto, Spark, Tez, Impala etc.
•
Totalmente gerenciado, escalabilidade automática com
suporte a on-demand e instâncias Spot
•
Separação entre computação e storage. Múltiplos
cluster consomem o mesmo dado no S3.
Amazon Athena
•
Serviço serverless para executar queries
SQL em dados no S3. Sem infraestrutura
para gerenciar.
•
Não é necessário carregar os dados.
Execute direto do S3.
•
Suporte para múltiplos formatos como CSV,
TSV, JSON, Avro, ORC, Parquet
Banco de dados
orientados a Documentos
Amazon
DynamoDB
ElasticSearch
MongoDB
CouchDB
Banco de dados orientados a Documentos
•
Provê suporte para armazenamento, consulta e
atualização de itens em um formato de
documento, como JSON, XML e HTML
•
Documentos com qualquer número de campos.
Suporte a objetos aninhados.
•
Relativamente fácil de se fazer shard e
replicação em diversos servidores
Banco de dados orientados a Documentos
• Boa aderência
•
•
•
Problemas envolvendo domínios altamente
variáveis
Quando você não sabe de antemão como
exatamente seus dados serão
Bom mapeamento para modelos de
programação orientada a objetos
• Não tão bons
•
•
Se você precisa de joins elaborados em
esquemas de bancos relacionais altamente
normalizados
Normalização de dados, reduzindo ou
eliminando cópias
Enginedebusca eAnalytics
Serviço gerenciado doElasticsearch eKibana
Totalmente gerenciado;zeroadministração
Altamente disponível econfiável
Amazon
Elasticsearch
Service
Integrado comoutrosserviços daAWS
Amazon Elasticsearch Use Cases
Logs analíticos &
Monitoramento
Operacoinal
•
Monitoramento de performance
de suas aplicações
•
Detecção de problemas em
tempo real
•
Mergulhe nos seus logs de
maneira granular
•
Visualização através do Kibana
Busca Tradicional
•
Capacidades de busca em diversos
documentos
•
Funcionalidades como: text
matching, faceting, filtering, fuzzy
search, auto complete, and
highlighting
Banco de dados em Grafos
Node4J
Titan
Banco de dados em Grafos
•
Focado mais na inter-relação dos dados do que
nos valores reais
•
Queries consistem em percorrer nós e as
arestas que os ligam
Banco de dados em Grafos
• Boa aderência
•
•
•
Aplicações que modelam redes
Buscas em grafos
Ex: Nós representam usuários que possuem
vários tipos de relacionamentos com outros
• Não tão bons
•
•
Particionamento de redes. Não escalam bem.
Será uma peça de um sistema maior, com o
grafo armazenado em outro lugar.
Titan + DynamoDB
Amazon
DynamoDB
Titan em EC2
• Utilize o DynamoDB como storage
backend para o Titan para buscas em
grafos
• Plugin disponível no GitHub
• https://aws.amazon.com/blogs/bigdata/building-a-graph-database-on-awsusing-amazon-dynamodb-and-titan/
Quiz
Quiz
•
Preocupado com a segurança, o CISO da
empresa decidiu: a partir de hoje ninguém
mais vai logar em produção! Todos os logs
dos 1000 servidores deverão ser
centralizados. Encontrem um mecanismo
para busca dos logs e aprofundamento para
trobleshooting. Bônus: Dashboard com status
em tempo real do ambiente.
Orientado a documentos
ElasticSearch com Kibana
Quiz
•
Você foi contratado para construir uma
aplicação de troca de pontos de um programa
de fidelidade de uma das maiores operadoras
de cartão de crédito do Brasil. Você poderá
consultar seu saldo, trocar por produtos ou
doar seus pontos para outros usuários.
Consultas complexas envolvendo a junção de
diversas entidas.
Banco de dados Relacional
Amazon RDS
Quiz
•
Para troca dos pontos, você deve
implementar uma funcionalidade similar a um
carrinho de compras. Caso um usuário vá
embora do site, o carrinho deverá guardar os
produtos adicionados na última visita.
Banco de dados chave-valor
Amazon DynamoDB
Quiz
•
Numa segunda fase, a empresa de cartões
quer prover capacidades analíticas para seus
usuários. O diretor financeiro requisitou que
um sistema de relatórios fosse criado. O
sistema deve mostrar as movimentações
realizadas no dia anterior (1) de maneira
consolidada e (2) com possibilidade de drilldown para detalhamento.
Banco de dados Relacional com Réplica de Leitura
Banco de dados Colunar – Amazon Redshift
Quiz
•
Devido ao sucesso do programa de fidelidade, o site de
troca de ponto dobrou a cada semana a quantidade de
usuários. A escalabilidade tornou-se limitada pois todas as
sessões dos usuários são gravadas no mesmo servidor
que a aplicação roda, consumindo muita memória. Que
tipo de estrutura pode nos auxiliar a resolver esse
problema?
Banco de dados Chave-Valor
ElastiCache com Redis
Quiz
•
Percebendo o aumento de usuários, a área de marketing
decidiu criar uma rede de contatos dentro da plataforma de
troca de pontos. Requisitou que fossem criadas as
seguintes funcionalidades:
•
•
•
Listar seus contatos adicionados dentro da plataforma
Sugestão de contatos
Mostrar o grau de distância entre você e um outro usuário:
quantas pessoas estão entre você e o usuário em questão
Banco de Dados em Grafo
Node4J
Próximos passos?
Leia!
aws.amazon.com/documentation
aws.amazon.com/architecture
aws.amazon.com/start-ups
Comece a usar AWS agora!
aws.amazon.com/free/
•
•
•
•
30/03 - Escalando sua aplicação para os primeiros 10 milhões de usuários
27/04 - Conhecendo as opções de Bancos de Dados na Nuvem da AWS
25/05 - Introdução a arquitetura serverless
14/06 - Automações de Segurança
Obrigado!!
Download