Amazon DynamoDB

José Henrique Krugner Gumiero
BRLink
Published in
7 min readJun 22, 2020

Database NoSQL & Serverless

Cloud Computing

Em assunto de desenvolvimento, a Amazon consegue atender a maioria de necessidades que o mercado exige. Ela é referência e líder em Cloud Computing, a sua marca padronizou, no mercado, a implementação, a segurança, o desenvolvimento, a melhoria e o monitoramento em Nuvem, os 5 pilares que qualquer desenvolvedor e arquiteto de solução deve conhecer para trabalhar com a Amazon Web Service.

Casos de Negócios

Nas companhias Ad Tech (Advertising technology), a Oferta e a Condução dos Clientes em Tempo Real exigem bilhões de dados das suas respectivas contas particulares. As tecnologias Ad Tech, bem como os eventos, clickstreams e dados produzidos nas plataformas pelos usuários, alavancaram ainda mais as necessidades de um Banco de Dados ideal. A viabilidade do negócio depende, não exclusivamente, da imensa produção de dados e a mínima latência em consultas.

Nas companhias de Games, os Jogadores devem competir concorrentemente, e o Banco de Dados é responsável em garantir que os jogadores competem com desempenho excelente. A necessidade de um Game, em armazenar os dados do Estado do Jogo, do Usuário e do Inventário, exige milhares de requests diários e milhões de Players online.

Muitas Companhias delegam pequenas equipes de desenvolvimento, que precisam dedicar seu tempo ao desenvolvimento em vez da operação. O banco de dados, completamente gerenciável e serveless, atende essas duas necessidades primordiais.

Databse Serverless

O DynamoDB é o Banco de Dados NoSQL da Amazon que oferece gerenciamento completo e rápido desempenho. Não é necessário instalação e configuração de Hardware, ou provisionamento, replicação e atualização do Software.

Segurança

A Autenticação e o Controle de Acesso são realizados com o Identity and Access Management (IAM). As políticas de permissões baseadas em identidades (em inglês identity-based policies) são suportadas pelo banco de dados DynamoDB, mas as permissões baseadas em recursos (em inglês resource-based policies) não são suportadas. Os recursos associados ao DynamoDB são identificados pelo Nome de Recurso da Amazon (em inglês Amazon Resource Name). As políticas de permissões validam as ações sobre os recursos que são permitidas pelo IAM. Os recursos associados ao banco de dados são a Tabela, o Index e o Stream. Em níveis menores de segurança, o IAM implementa uma restrição de acesso na Tabela que permite acesso somente nos registros (em inglês records).

Tabelas Globais

O DynamoDB distribui automaticamente os dados e o tráfego para as tabelas (onde os dados são armazenados), entre um número suficiente de servidores, para lidar com seus requisitos de transferência e armazenamento, sem deixar de manter um desempenho consistente e rápido. Todos os dados são armazenados em discos de estado sólido e são automaticamente replicados entre várias zonas de disponibilidade em uma região da AWS, o que oferece alta durabilidade de dados e disponibilidade integradas. É possível usar tabelas globais para manter as tabelas do DynamoDB sincronizadas nas regiões da AWS.

Chaves Primárias

As partições são identificadas por uma Chave Primária, sendo única na Tabela. A chave Primária é composta por pelo menos uma chave denominada Chave de Partição. A responsabilidade da Chave de Partição é ordenar as partições em posições fixas para as consultas dos dados. A ordenação e a consulta dos dados são mais eficientes com uma Chave Primária composta por uma Chave de Partição e uma Chave de Classificação. A Chave de Classificação ordena as partições com mesmo valor de chave mais próximas umas das outras, melhorando assim o desempenho das consultas.

Itens

As partições são ordenadas sequencialmente em Linhas da Tabela. Cada linha é preenchida por um Item com o tamanho máximo de 400 kB. Os dados são armazenados nos espaços denominados Atributos dos Itens. Um Item é composto por pelo menos um atributo, o qual é definido como Chave de Partição. O Banco de Dados NoSQL não relaciona os dados estruturados e os Itens da Tabela podem conter Atributos de naturezas distintas.

Tipos de Dados

O DynamoDB oferece suporte para três tipos de entrada de dados: o tipo escalar, o tipo documento e o tipo conjunto. O tipo escalar são dados do tipo número, string, booleano e nulo. O tipo Documento são os dados aninhados como Lista e Mapa. O tipo conjunto são um conjunto de strings, um conjunto de números e um conjunto de binários.

Índice Secundário

Em uma aplicação de escala global, o desempenho das consultas é um ponto crítico da arquitetura da aplicação. O DynamoDB permite que o desempenho das consultas seja aprimorado com os Índices Secundários. O Índice Secundário Local é criado durante a criação da Tabela Principal. Seu papel é melhorar o desempenho das consultas aos dados em função das consultas serem sobre a nova Chave Primária informada. A Chave de Partição deve ser igual à da Tabela Principal, porém a Chave de Classificação deve ser diferente em relação a Chave Primária da Tabela Principal. O limite de Índice Secundário Local (ISL) por tabela é 5 ISL. O Índice Secundário Global (ISG) permite criar uma tabela alternativa com Chave Primária diferente da Tabela Principal e do índice Secundário Local para que as consultas aos dados sejam mais eficientes. O limite por Tabela é 20 ISG.

Streams

DyanamoDB pode armazenar as alterações nos dados dos Itens em um registro com ordem cronológica e em tempo real. Os eventos que alteram os dados são denominados registro de streaming. Esses eventos podem ser de adição de um novo item, atualização de um novo item e exclusão de um novo item. O registro de streaming tem um tempo de 24 horas para armazenamento, depois é excluído automaticamente do fluxo.

Integração com Registros de Streams

A AWS torna possível a integração de novos serviços ao DynamoDB pelo registro de Steams. O AWS Lambda pode ter um gatilho em forma do DynamoDB Stream. Pode ocorrer um evento na Tabela do DynamoDB que armazena os dados alterados em um registro de streaming. O Streaming da Tabela executa a Função Lambda para processar os dados do evento. Outras integrações com o DynamoDB são: a visualização materializada de dados e análise de dados com o Amazon Kinesis.

Regras de nomeação

As tabelas, Atributos e outros elementos do DynamoDB devem ser nomeados. Há regras como os nomes devem ser codificados usando UTF-8, e diferencia letra maiúscula de minúscula. Os nomes das tabelas e dos índices devem ter entre 3 a 255 caracteres, e podem ser de a à z(a-z), de A à Z (A-Z), de 0 à 9(0–9), sublinhado (_), traço (-) e ponto (.). O DynamoDB também tem palavras reservadas.

Application Programming Interface

Para trabalhar com o DyanmoDB, o aplicativo deve usar algumas operações de API, como plano de controle, plano de dados e transações.

Requests

O DynamoDB é stateless com solicitações HTTP e HTTPS. Não é necessária manter uma conexão persistente. Os requests devem ser acompanhados de uma assinatura com criptografia. Os SDKs da AWS fornecem os algoritmos para assinatura desses requests. As operações são informadas no request, os quais o DynamoDB processa e retorna uma respectiva resposta HTTP ou HTTPS.

Leituras Eventualmente Consistentes

A leitura dos dados de uma tabela pode ser uma leitura eventualmente coerente. A Resposta dessa leitura não garante que será retornado o resultado das operações executadas mais recentes. Portanto, os dados retornados podem ser dados não atualizados.

Leituras Fortemente Consistentes

A leitura fortemente consistente retorna os dados atualizados das últimas operações concluídas, mas demanda uma capacidade maior de taxa de transferência do que a leitura eventualmente coerente.

Capacidade sob Demanda

O DynamoDB tem o modo de leitura/gravação com capacidades sob Demanda. A cobrança da leitura e gravação é feita sobre as solicitações. O DynamoDB ajusta a capacidade automaticamente conforme o tráfego de dados e carga de trabalho. A garantia de entrega é com mesma latência em milissegundos. E não é necessário especificar as taxas de leitura e gravação do aplicativo.

Capacidade Modo Provisionado

O Modo Provisionado exige que seja especificado o número de leituras e gravações por segundo. O Auto Scaling pode ser usado para ajustar a capacidade provisionada automaticamente em resposta às alterações do tráfego. O Modo Provisionado auxilia a governança de dados e a previsão nos custos. A Tabela com capacidade de leitura e gravação com Modo Provisionado exige que seja especificação as taxas de transferências de leitura e gravações por segundo. Uma unidade de capacidade de leitura representa uma leitura fortemente consistente para um item de 4kB e representa também duas leituras eventualmente consistentes para um item de 4 kB. Se um item for maior que 4 kB, será necessário uma aumentar as unidades de capacidade de leitura. Uma unidade de capacidade de gravação representa uma gravação por segundo de um item de 1 kB. Se o item for maior, então será necessário aumentar as unidades de capacidade de gravação. O Auto Scaling ajusta a taxa de transferência conforme a porcentagem de utilização das unidades de capacidades entre um intervalo de valor máximo e mínimo. O cliente tem a opção de reservar as capacidades com preço menor para ter uma economia.

Time to Live

O DynamoDB permite a exclusão automática dos itens expirados das tabelas, para ajudar você a reduzir o uso e o custo do armazenamento que não são mais relevantes.

Backup

Com o DynamoDB, é possível criar tabelas de banco de dados que armazenam e recuperam qualquer quantidade de dados e atendem a todos os níveis de tráfego solicitados, sem interferir no desempenho nem a disponibilidade do aplicativo. O DynamoDB oferece o recurso de backup sob demanda. Ele permite que você crie backups completos das suas tabelas para retenção e arquivamento de longo prazo de modo a atender às necessidades de conformidade regulamentar. É possível criar backups sob demanda, bem como habilitar a recuperação point-in-time para as tabelas do DynamoDB. A recuperação point-in-time ajuda a proteger as tabelas contra operações acidentais de gravação ou exclusão. Com a recuperação point-in-time, você pode recuperar a tabela para qualquer ponto durante os últimos 35 dias.

Monitoramento

É possível usar o Console de gerenciamento da AWS para monitorar a utilização de recursos e métricas de desempenho.

DynamoDB Local

A Amazon disponibiliza gratuitamente a versão do Amazon DynamoDB para download. É uma opção autossuficiente para a programação e teste da aplicação sem o request para a Amazon Web Service. A única exigência para execução do Banco de Dados Local é o Java Run Environment com uma dependência do Apache Maven ou uma imagem Docker.

--

--