Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon DynamoDB: Principais conceitos para usar...

Amazon DynamoDB: Principais conceitos para usar profissionalmente

Bate papo com o pessoal do AWS User Group Goiânia sobre os conceitos básicos do Amazon DynamoDB.

Avatar for Marcelo Palladino

Marcelo Palladino

August 25, 2020
Tweet

More Decks by Marcelo Palladino

Other Decks in Technology

Transcript

  1. D e v o l t a a o b

    á s i c o Os blocos de construção mais básicos do DynamoDB
  2. Partições e partition key + sort key Livro: O Senhor

    dos anéis Nome: Frodo Bolseiro fx(Livro): Partição 1 Partição 1 Partição 2
  3. É t u d o u m a q u

    e s t ã o d e c r i t é r i o s c l a r o s Escolhendo entre SQL e noSQL
  4. SQL Estrutura • Tabelas • Restrições • Relacionamentos (JOINS) Armazenamento

    • Centralizado Escala • Vertical • Horizontal Acesso • SQL • Conexão com o banco de dados
  5. noSQL Estrutura • Tabelas • Documentos (JSON) • Grafos Armazenamento

    • Hashing input Escala • Mais partições Acesso • API REST/HTTP
  6. Quando utilizar um ou outro? SQL noSQL • Quando os

    padrões de acesso não são conhecidos • Quando há necessidade de consultas flexíveis • Quando há a necessidade de garantir as restrições acima de qualquer outra questão • Quando utilizar SQL é uma vantagem • Quando os padrões de acesso são conhecidos • Quando as chaves primárias são conhecidas • Quando o dado é naturalmente “não relacional” • Quando alto desempenho e baixa latência são requisitos do negócio
  7. E s q u e ç a a m o

    d e l a g e m r e l a c i o n a l Modelagem de dados no DynamoDB
  8. Passos para modelagem de dados 1. Entenda os padrões de

    acesso mais comuns e importantes do seu sistema 2. Faça a modelagem 3. Observe 4. Volte ao passo 1 até que fique bom
  9. Entenda os padrões de acesso mais comuns e importantes do

    seu sistema Padrões de acesso (locação de imóveis) Leitura • Procurar imóveis por localização • Recuperar todos os detalhes do imóvel pela identificação • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel) • Recuperar todos os imóveis alugados (do ponto de vista do usuário) • Recuperar todos os imóveis (do ponto de vista do dono do imóvel) • .... Escrita • Adicionar um novo imóvel • Alugar um imóvel • ...
  10. Modelando os dados MeuAirbnb PK SK Atributos id_imovel id_dono titulo

    descricao pais cidade • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação
  11. Modelando os dados MeuAirbnb Tipo PK SK Atributos TABELA id_imovel

    “imovel” id_dono titulo descricao pais cidade TABELA id_imovel data_inicio data_fim id_usuario • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação • Alugar um imóvel • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel)
  12. Modelando os dados MeuAirbnb Tipo PK SK Atributos TABELA id_imovel

    “imovel” id_dono titulo descricao pais cidade TABELA id_imovel data_inicio data_fim id_usuario ? ? id_imovel id_dono titulo descricao • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação • Alugar um imóvel • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel) • Procurar imóveis por localização
  13. D a n d o a l g u m

    a f l e x i b i l i d a d e a o s m o d e l o s DynamoDB GSI (Global Secondary Index)
  14. Imóveis por localização: Solução inviável • where: cidade == “São

    Paulo” scan + FilterExpression(cidade == “São Paulo”)
  15. Imóveis por localização: Solução utilizando índice • Índice GSI por

    localização Permite recuperar todos os imóveis de uma cidade em uma única requisição
  16. Modelando os dados MeuAirbnb Tipo PK SK Atributos TABELA id_imovel

    “imovel” id_dono titulo descricao pais cidade pais#cida de TABELA id_imovel data_inicio data_fim id_usuário GSI1 pais#cidade id_imovel id_dono titulo descricao • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação • Alugar um imóvel • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel) • Procurar imóveis por localização
  17. Modelando os dados MeuAirbnb Tipo PK SK Atributos TABELA id_imovel

    “imovel” id_dono titulo descricao pais cidade pais#cida de TABELA id_imovel data_inicio data_fim id_usuário GSI1 pais#cidade id_imovel id_dono titulo descricao GSI2 id_usuario data_inicio data_fim id_imovel • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação • Alugar um imóvel • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel) • Procurar imóveis por localização • Recuperar todos os imóveis alugados (do ponto de vista do usuário)
  18. Modelando os dados MeuAirbnb Tipo PK SK Atributos TABELA id_imovel

    “imovel” id_dono titulo descricao pais cidade pais#cid ade TABELA id_imovel data_inicio data_fim id_usuário GSI1 pais#cidade id_imovel id_dono titulo descricao GSI2 id_usuario data_inicio data_fim id_imovel GSI3 id_dono id_imovel titulo descricao pais cidade • Adicionar um novo imóvel • Recuperar todos os detalhes do imóvel pela identificação • Alugar um imóvel • Recuperar todos os alugueis de um imóvel (do ponto de vista do dono do imóvel) • Procurar imóveis por localização • Recuperar todos os imóveis alugados (do ponto de vista do usuário) • Recuperar todos os imóveis (do ponto de vista do dono do imóvel) https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html#bp-general-nosql-design-concepts
  19. E n t e n d e n d o

    a s u n i d a d e s d e l e i t u r a e e s c r i t a Provisionando o DynamoDB
  20. Read capacity unit • read capacity unit = uma leitura

    consistente por segundo ou duas leituras eventuais por segundo, para um item até 4 KB • Para efeito de cálculo, o tamanho do item deve ser arredondado para o próximo múltiplo de 4 KB (uma leitura de 2.5 KB vai consumir 4KB)
  21. Read capacity unit Exemplo: • Tamanho do item: 10KB •

    Número de itens lidos por segundo: 5 • RCU para leitura consistente: 10=>12=>12/4=3=>3*5=>15 • RCU para leitura eventualmente consistente: 10=>12=>12/4=3=>3*5=>15=>15/2=7.5=>8
  22. Write capacity unit • write capacity unit = uma escrita

    por segundo para um item até 1 KB • Para efeito de cálculo, o tamanho do item deve ser arredondado para o próximo múltiplo de 1 KB (uma leitura de 429 KB vai consumir 1KB)
  23. Write capacity unit Exemplo: • Tamanho do item: 2.5KB •

    Número de itens escritos por segundo: 5 • WCU: 2.5=>3=>3*5=>15 400=>1=>1*5=>5
  24. L e i t u r a s e e

    s c r i t a s e m u m a t a x a m a i o r d o q u e a p r e v i s t a DynamoDB Request Throttling (ProvisionedThroughput ExceededException)
  25. F l e x i b i l i z

    a n d o a f o r m a d e p r o v i s i o n a r o D y n a m o D B DynamoDB capacidade provisionada, “autoscaling” e “on demand”
  26. Provisionado, autoscaling e on demand Provisionado Autoscaling Sob demanda A

    capacidade provisionada considerando os “picos” vai ser “desperdiçada” nos momentos de menos acesso. Nos momentos de menos pico não pagamos por recursos provisionados, mas não utilizados. Resolve o problema do modelo provisionado, mas não é perfeito, já que o processo de autoscaling pode levar vários minutos para provisionar o que é necessário. Não é necessário se preocupar com o Throttling e, no limite, monitoramento de capacidade. O foco é atender o negócio. Melhor se considerarmos o tráfego previsível e constante Melhor se considerarmos o tráfego previsível Melhor se considerarmos que não temos como prever o tráfego (sem padrão). Requer bom monitoramento dos limites de leitura/escrita Requer bom monitoramento dos limites de leitura/escrita Não requer bom monitoramento dos limites de leitura/escrita Pagamento por hora Pagamento por hora Pagamento por requisição
  27. L i m i t e s i m p

    o r t a n t e s Alguns limites do DynamoDB
  28. Limites • Tamanho dos itens • Requisições (Query ou Scan)

    • Taxa de transferência de partição • Coleção de itens https://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/Limits.html
  29. O b s e r v a n d o

    , e n t e n d e n d o a l g u n s l i m i t e s e f u t u r o Monitoramento, limites e um monte de coisas para encontros futuros
  30. Limites importantes • Tamanho dos itens • Requisições (Query ou

    Scan) • Taxa de transferência de partição • Coleção de itens https://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/Limits.html
  31. O que ficou de fora? • DynamoDB Accelerator • DynamoDB

    Stream • DynamoDB Transactions • DynamoDB API (Query, Scan, PutItem, GetItem, CreateTable, etc...) • DynamoDB API (Pagination)