O que é o Amazon DynamoDB? - Amazon DynamoDB

O que é o Amazon DynamoDB?

O Amazon DynamoDB é um banco de dados sem servidor, NoSQL e totalmente gerenciado com desempenho de latência inferior a dez milissegundos em qualquer escala.

O DynamoDB atende às suas necessidades para superar as complexidades operacionais e de escalabilidade dos bancos de dados relacionais. O DynamoDB tem propósito específico e é otimizado para workloads operacionais que exigem desempenho consistente em qualquer escala. Por exemplo, o DynamoDB oferece desempenho consistente com latência inferior a dez milissegundos para um caso de uso de carrinho de compras, independentemente de você ter dez ou cem milhões de usuários. Lançado em 2012, o DynamoDB continua ajudando você a abandonar os bancos de dados relacionais e, ao mesmo tempo, reduzir os custos e melhorar o desempenho em grande escala.

Clientes de todos os portes, setores e regiões usam o DynamoDB para criar aplicações modernas sem servidor que podem começar pequenas e escalar globalmente. O DynamoDB é escalável para oferecer suporte a tabelas de praticamente qualquer tamanho, ao mesmo tempo em que fornece desempenho consistente com latência inferior a dez milissegundos e alta disponibilidade.

Para eventos como o Amazon Prime Day, o DynamoDB alimenta várias propriedades e sistemas da Amazon de alto tráfego, incluindo a Alexa, os sites da Amazon.com e todos os centros de distribuição da Amazon. Para eventos desse tipo, as APIs do DynamoDB já processaram trilhões de chamadas de propriedades e sistemas da Amazon. O DynamoDB atende continuamente centenas de clientes com tabelas que têm pico de tráfego de mais de meio milhão de solicitações por segundo. Ele também atende centenas de clientes com tabelas que excedem 200 TB, processando mais de um bilhão de solicitações por hora.

Características do DynamoDB

Sem servidor

Com o DynamoDB, você não precisa provisionar nenhum servidor nem corrigir, gerenciar, instalar, manter ou operar nenhum software. O DynamoDB oferece manutenção sem nenhum tempo de inatividade. Ele não tem versões (principal, secundária ou patch) e não há janelas de manutenção.

O modo de capacidade sob demanda do DynamoDB oferece preço conforme o uso para solicitações de leitura e gravação, para que você pague apenas pelo que usar. Com o modo sob demanda, o DynamoDB aumenta ou reduz instantaneamente a escala vertical das tabelas para ajustar a capacidade e manter o desempenho sem nenhuma administração. Ele também reduz a escala vertical para zero, para que você não pague por throughput quando sua tabela não tem tráfego e não há partidas a frio.

NoSQL

Como banco de dados NoSQL, o DynamoDB foi desenvolvido especificamente para oferecer melhor desempenho, escalabilidade, capacidade de gerenciamento e flexibilidade em comparação aos bancos de dados relacionais tradicionais. Para oferecer suporte a uma ampla variedade de casos de uso, o DynamoDB é compatível com modelos de dados de chave e valor e de documentos.

Ao contrário dos bancos de dados relacionais, o DynamoDB não oferece suporte a um operador JOIN. Recomendamos que você desnormalize seu modelo de dados para reduzir as viagens de ida e volta do banco de dados e a capacidade de processamento necessária para responder às consultas. Como banco de dados NoSQL, o DynamoDB oferece uma consistência de leitura robusta e transações ACID para criar aplicações de nível corporativo.

Totalmente gerenciado

Como um serviço de banco de dados totalmente gerenciado, o DynamoDB lida com o trabalho pesado indiferenciado de gerenciar um banco de dados, para que você possa se concentrar na criação de valor para seus clientes. Ele lida com instalação, configurações, manutenção, alta disponibilidade, provisionamento de hardware, segurança, backups, monitoramento e muito mais. Isso garante que, ao criar uma tabela do DynamoDB, ela esteja instantaneamente pronta para workloads de produção. O DynamoDB melhora constantemente sua disponibilidade, confiabilidade, desempenho, segurança e funcionalidade sem exigir nenhuma atualização ou tempo de inatividade.

Desempenho de latência inferior a dez milissegundos em qualquer escala

O DynamoDB foi desenvolvido especificamente para oferecer melhor desempenho e escalabilidade do que os bancos de dados relacionais, proporcionando desempenho de latência inferior a dez milissegundos em qualquer escala. Para alcançar essa escala e desempenho, o DynamoDB é otimizado para workloads de alto desempenho e fornece APIs que incentivam o uso eficiente do banco de dados. Ele omite recursos que são ineficientes e não apresentam boa performance em grande escala, como as operações JOIN. O DynamoDB oferece desempenho consistente com latência inferior a dez milissegundos para sua aplicação, independentemente de você ter cem ou cem milhões de usuários.

Casos de uso do DynamoDB

Clientes de todos os portes, setores e regiões usam o DynamoDB para criar aplicações modernas sem servidor que podem começar pequenas e escalar globalmente. O DynamoDB é ideal para casos de uso que exigem desempenho consistente em qualquer escala com pouca ou nenhuma sobrecarga operacional. A seguinte lista apresenta alguns casos de uso em que você pode usar o DynamoDB:

  • Aplicações de serviços financeiros: suponha que você seja uma empresa de serviços financeiros que desenvolve aplicações, como negociação e roteamento em tempo real, gerenciamento de empréstimos, geração de tokens e registros de transações. Com as tabelas globais do DynamoDB, suas aplicações podem responder a eventos e fornecer tráfego das Regiões da AWS escolhidas com desempenho rápido e local de leitura e gravação.

    O DynamoDB é adequado para aplicações com os requisitos de disponibilidade mais rigorosos. Ele elimina a carga operacional de escalar manualmente as instâncias para aumentar o armazenamento ou o throughput, versionamento e licenciamento.

    Você pode usar as transações do DynamoDB para alcançar atomicidade, consistência, isolamento e durabilidade (ACID) em uma ou mais tabelas com uma única solicitação. As transações (ACID) são adequadas para workloads que incluem processamento de transações financeiras ou atendimento de pedidos. O DynamoDB acomoda instantaneamente a expansão e a redução das workloads, permitindo que você escale o banco de dados de maneira eficiente de acordo com as condições do mercado, como o horário de negociação.

  • Aplicações de jogos: como empresa de jogos, você pode usar o DynamoDB para todas as partes das plataformas de jogos, como estado do jogo, dados de jogadores, histórico de sessões e tabelas de classificação. Escolha o DynamoDB por sua escala, desempenho consistente e facilidade de operação proporcionada por sua arquitetura sem servidor. O DynamoDB é adequado para arquiteturas que podem aumentar a escala horizontalmente, necessárias para desenvolver jogos bem-sucedidos. Ele consegue aumentar e reduzir (escalar para zero sem partida a frio) rapidamente o throughput do seu jogo. Essa escalabilidade otimiza a eficiência da sua arquitetura, esteja você aumentando a escala horizontalmente para picos de tráfego ou reduzindo a escala em cenários de baixa jogabilidade.

  • Aplicações de streaming: empresas de mídia e entretenimento usam o DynamoDB como um índice de metadados para conteúdo, serviço de gerenciamento de conteúdo ou para fornecer estatísticas esportivas quase em tempo real. Elas também usam o DynamoDB para executar serviços de listas de títulos assistidos e favoritos de usuários e para processar bilhões de eventos diários de clientes para gerar recomendações. Esses clientes se beneficiam da escalabilidade, do desempenho e da resiliência do DynamoDB. O DynamoDB ajusta a escala à medida que a workload aumenta ou diminui, permitindo casos de uso de streaming de mídia que podem oferecer suporte a qualquer nível de demanda.

Para saber mais sobre como clientes de diferentes setores usam o DynamoDB, consulte Amazon DynamoDB Customers e This is My Architecture.

Recursos do DynamoDB

Replicação multiativa com tabelas globais

As tabelas globais fornecem replicação multiativa dos dados entre as Regiões da AWS escolhidas com disponibilidade de 99,999%. As tabelas globais fornecem uma solução totalmente gerenciada para a implantação de um banco de dados multirregional e multiativo, sem precisar criar e manter uma solução de replicação própria. Com as tabelas globais, é possível especificar as Regiões da AWS em que você deseja que as tabelas estejam disponíveis. O DynamoDB replica as alterações de dados contínuas para todas essas tabelas.

Aplicações distribuídas globalmente podem acessar dados localmente nas regiões selecionadas para alcançar desempenho de leitura e gravação com latência inferior a dez milissegundos. Como as tabelas globais são multiativas, você não precisa de uma tabela primária. Isso significa que não há nenhum failover complicado ou atrasado nem tempo de inatividade do banco de dados ao realizar failover de uma aplicação entre regiões.

Transações ACID

O DynamoDB foi criado para workloads críticas. Ele inclui suporte a transações (ACID) para aplicações que exigem lógica comercial complexa. O DynamoDB oferece suporte nativo do lado do servidor a transações, simplificando a experiência do desenvolvedor ao fazer alterações coordenadas de tudo ou nada em vários itens dentro e entre tabelas.

Captura de dados de alteração para arquiteturas orientadas por eventos

O DynamoDB oferece suporte a streaming de registros de captura de dados de alteração (CDC) em nível de item quase em tempo real. Ele oferece dois modelos de streaming para CDC: DynamoDB Streams e Kinesis Data Streams para DynamoDB. Sempre que uma aplicação cria, atualiza ou exclui itens em uma tabela, o Streams registra uma sequência em ordem temporal de cada alteração em nível de item quase em tempo real. Isso torna o DynamoDB Streams ideal para que aplicações com arquitetura orientada a eventos consumam e ajam de acordo com as mudanças.

Índices secundários

O DynamoDB oferece a opção de criar índices secundários globais e locais, que permitem consultar os dados da tabela usando uma chave alternativa. Com esses índices secundários, você pode acessar dados com atributos diferentes da chave primária, oferecendo flexibilidade máxima para acessar seus dados.

Integrações de serviços

O DynamoDB se integra amplamente a vários Serviços da AWS para ajudar você a obter mais valor de seus dados, eliminar o trabalho pesado indiferenciado e operar workloads em grande escala. Alguns exemplos são: AWS CloudFormation, Amazon CloudWatch, Amazon S3, AWS Identity and Access Management (IAM) e AWS Auto Scaling. As seções a seguir descrevem algumas das integrações de serviços que você pode realizar usando o DynamoDB:

Integrações sem servidor

Para desenvolver aplicações sem servidor de ponta a ponta, o DynamoDB se integra nativamente a vários Serviços da AWS sem servidor. Por exemplo, você pode integrar o DynamoDB ao AWS Lambda para criar acionadores, que são trechos de código que respondem automaticamente a eventos no DynamoDB Streams. Com os acionadores, você pode criar aplicações orientadas por eventos que reagem às modificações de dados em tabelas do DynamoDB. Para otimizar os custos, você pode filtrar os eventos que o Lambda processa de um fluxo do DynamoDB.

A seguinte lista apresenta alguns exemplos de integrações sem servidor com o DynamoDB:

Importar e exportar dados para o Amazon S3

A integração do DynamoDB ao Amazon S3 permite que você exporte dados com facilidade para um bucket do Amazon S3 para fins de analytics e machine learning. O DynamoDB oferece suporte a exportações de tabelas inteiras e exportações incrementais para exportar dados alterados, atualizados ou excluídos em um período especificado. Também é possível importar dados do Amazon S3 para uma nova tabela do DynamoDB.

Integração ETL zero

O DynamoDB oferece suporte à integração ETL zero com o Amazon Redshift e Amazon OpenSearch Service. Essas integrações permitem que você execute tarefas complexas de analytics e use recursos avançados de pesquisa nos dados da tabela do DynamoDB. Por exemplo, você pode realizar pesquisa vetorial e de texto completo e pesquisa semântica nos dados do DynamoDB. As integrações ETL zero não afetam as workloads de produção executadas no DynamoDB.

Armazenamento em cache

O DynamoDB Accelerator (DAX) é um serviço de armazenamento em cache totalmente gerenciado e altamente disponível criado para o DynamoDB. O DAX proporciona melhorias de até dez vezes na performance, de milissegundos para microssegundos, mesmo com milhões de solicitações por segundo. O DAX faz todo o trabalho pesado necessário para adicionar aceleração na memória às suas tabelas do DynamoDB, sem exigir que você gerencie a invalidação de cache, o preenchimento de dados ou o gerenciamento de clusters.

Segurança

O DynamoDB utiliza o IAM para ajudar você a controlar com segurança o acesso a recursos do DynamoDB. Com o IAM, é possível gerenciar de maneira centralizada as permissões que controlam quais usuários do DynamoDB podem acessar os recursos. Você usa o IAM para controlar quem é autenticado (fez login) e autorizado (tem permissões) a usar os recursos. Como o DynamoDB utiliza o IAM, não há nenhum nome de usuário ou senha para acessar o DynamoDB. Como você não tem nenhuma política complicada de rotação de senhas para gerenciar, sua postura de segurança é simplificada. Com o IAM, também é possível habilitar um controle de acesso refinado para fornecer autorização no nível do atributo. Você também pode definir políticas baseadas em recurso compatíveis com o IAM Access Analyzer e o Bloqueio de Acesso Público (BPA) para simplificar o gerenciamento de políticas.

Por padrão, o DynamoDB criptografa todos os dados de clientes em repouso. A criptografia em repouso aumenta a segurança dos dados, usando chaves de criptografia armazenadas no AWS Key Management Service(AWS KMS). Com a criptografia de dados em repouso, você pode criar aplicativos confidenciais que atendem a requisitos rigorosos de conformidade e regulamentação de criptografia. Quando você acessa uma tabela criptografada, o DynamoDB descriptografa os dados da tabela de forma transparente. Você não precisa alterar seu código nem suas aplicações para usar ou gerenciar tabelas criptografadas. O DynamoDB continua proporcionando a mesma latência inferior a dez milissegundos que você espera, e todas as consultas do DynamoDB funcionam perfeitamente em dados criptografados.

Você pode especificar se o DynamoDB deve usar uma Chave pertencente à AWS (tipo de criptografia padrão), uma Chave gerenciada pela AWS ou uma chave gerenciada pelo cliente para criptografar os dados do usuário. A criptografia padrão usando chaves do KMS de propriedade da AWS está disponível sem nenhum custo adicional. Para criptografia do lado do cliente, você pode usar o SDK de criptografia de banco de dados da AWS.

O DynamoDB também segue vários padrões de conformidade, incluindo HIPAA, PCI DSS e RGPD, possibilitando que você atenda aos requisitos regulatórios.

Resiliência

Por padrão, o DynamoDB replica automaticamente seus dados em três zonas de disponibilidade para oferecer alta durabilidade e um SLA de 99,99% de disponibilidade. O DynamoDB também fornece recursos adicionais para ajudar você a alcançar seus objetivos de continuidade dos negócios e de recuperação de desastres.

O DynamoDB inclui os seguintes recursos para ajudar a oferecer suporte às suas necessidades de resiliência e backup de dados:

Tabelas globais

As tabelas globais do DynamoDB possibilitam um SLA com disponibilidade de 99,999% e resiliência multirregional. Isso ajuda você a desenvolver aplicações resilientes e otimizá-las para o objetivo de tempo de recuperação (RTO) e o objetivo de ponto de recuperação (RPO) mais baixos. As tabelas globais também se integram ao AWS Fault Injection Service (AWS FIS) para realizar experimentos de injeção de falhas em suas workloads de tabelas globais. Por exemplo, pausar a replicação de tabelas globais em qualquer tabela-réplica.

Backups contínuos e recuperação para um ponto no tempo

Os backups contínuos fornecem detalhamento por segundo e a capacidade de iniciar uma recuperação para um ponto no tempo. Com a recuperação para um ponto no tempo, você pode restaurar uma tabela para qualquer ponto no tempo (com precisão de segundos) durante os últimos 35 dias.

Os backups contínuos e a inicialização de uma restauração para um ponto no tempo não usam capacidade provisionada. Eles também não têm nenhum impacto no desempenho ou na disponibilidade das aplicações.

Backup e restauração sob demanda

O backup e a restauração sob demanda permitem que você crie backups completos de uma tabela para retenção a longo prazo e arquivamento para atender às necessidades de conformidade regulamentar. Os backups não afetam o desempenho da tabela e você pode fazer backup de tabelas de qualquer tamanho. Com a integração do AWS Backup, você pode usar o AWS Backup para agendar, copiar, marcar e gerenciar o ciclo de vida de backups sob demanda do DynamoDB automaticamente. Usando o AWS Backup, você pode copiar backups sob demanda entre contas e regiões e fazer a transição de backups mais antigos para armazenamento frio a fim de reduzir os custos.

Acessar o DynamoDB

Você pode trabalhar com o DynamoDB usando o AWS Management Console, a AWS Command Line Interface, o NoSQL Workbench para DynamoDB ou as APIs do DynamoDB.

Para ter mais informações, consulte Acessar o DynamoDB.

Preços do DynamoDB

O DynamoDB cobra pela leitura, gravação e armazenamento de dados nas tabelas, bem como todo recurso opcional que você optar por habilitar. O DynamoDB tem dois modos de capacidade com suas respectivas opções de cobrança para processar leituras e gravações nas tabelas: sob demanda e provisionado.

O DynamoDB também oferece um nível gratuito que fornece 25 GB de armazenamento. O nível gratuito também inclui 25 unidades de capacidade de gravação (WCUs) provisionadas e 25 unidades de capacidade de leitura (RCUs) provisionadas, o que é suficiente para lidar com 200 milhões de solicitações por mês.

Para obter mais informações, consulte a Definição de preço do Amazon DynamoDB.

Conceitos básicos do DynamoDB

Se você está usando o DynamoDB pela primeira vez, convém começar lendo os seguintes tópicos:

  • Conceitos básicos do DynamoDB: orienta você no processo de configuração do DynamoDB, criação de tabelas de amostra e upload de dados. Este tópico também fornece informações sobre como realizar algumas operações básicas de banco de dados usando o AWS Management Console, a AWS CLI, o NoSQL Workbench e as APIs do DynamoDB.

  • Componentes principais do DynamoDB: descreve os conceitos básicos do DynamoDB.

  • Práticas recomendadas para desenhar e arquitetar com o DynamoDB: fornece recomendações sobre design NoSQL, Lente do Well-Architected para DynamoDB, design de tabelas e vários outros recursos do DynamoDB. Essas práticas recomendadas ajudam você a maximizar o desempenho e minimizar os custos de throughput ao trabalhar com o DynamoDB.

Também recomendamos que confira os tutoriais a seguir, que apresentam procedimentos completos para você se familiarizar com o DynamoDB. Você pode concluir esses tutoriais com o nível gratuito da AWS.

Para obter informações sobre recursos, ferramentas e estratégias de migração para o DynamoDB, consulte Migrar para o DynamoDB. Para ler os blogs e whitepapers mais recentes, consulte Recursos do Amazon DynamoDB.