Sobre o Amazon DynamoDB
O que é o Amazon DynamoDB?
O DynamoDB é um serviço de banco de dados não relacional rápido e flexível para qualquer escala. O DynamoDB permite que os clientes transfiram os encargos administrativos de operação e escalabilidade de bancos de dados distribuídos para a AWS. Dessa forma, os clientes não precisam se preocupar com provisionamento, instalação e configuração de hardware, planejamento de capacidade de throughput, replicação, aplicação de patches de software ou escalabilidade de clusters.
O que o DynamoDB pode gerenciar em meu nome?
O DynamoDB elimina um dos maiores obstáculos da escalabilidade de bancos de dados: o gerenciamento do software de banco de dados e o provisionamento do hardware necessário para executá-lo. Você pode implantar um banco de dados não relacional em apenas alguns minutos. O DynamoDB escala automaticamente a capacidade de throughput para atender às demandas das cargas de trabalho. Além disso, altera o particionamento dos dados à medida que o tamanho da tabela aumenta. Além disso, o DynamoDB replica dados de forma síncrona entre três instalações em uma região da AWS, proporcionando alta disponibilidade e resiliência de dados.
Armazenamento
O que são as classes de tabelas do DynamoDB?
As classes de tabela do DynamoDB são opções de otimização de performance e custo para tabelas do DynamoDB. As duas classes de tabela disponíveis são DynamoDB Standard (classe de tabela padrão projetada para workloads que exigem o máximo de performance e é mais adequada para tabelas com workloads imprevisíveis) e DynamoDB Standard-Infrequent Access (classe de tabela otimizada para tabelas em que o armazenamento é o custo dominante e ideal para tabelas que armazenam dados acessados com pouca frequência). As tabelas Standard têm custos mais baixos para leituras e gravações, mas custos mais altos de armazenamento. As tabelas Standard-IA têm custos mais baixos de armazenamento, mas custos mais altos para leituras e gravações. Você pode alternar entre essas classes de tabela duas vezes em um período de 30 dias sem tempo de inatividade, permitindo a otimização dos seus custos com base nos padrões de uso da tabela. A escolha entre essas classes depende das necessidades específicas da sua aplicação e dos padrões de acesso dos seus dados.
Quais fatores devo considerar ao escolher uma classe de tabela?
Há vários fatores a serem considerados ao escolher uma classe de tabela no DynamoDB. Os mais comuns a serem considerados são os padrões de acesso dos seus dados, as considerações de custo e a previsibilidade da workload. É possível alternar entre classes de tabela sem nenhuma codificação ou tempo de inatividade, para que você possa ajustar sua escolha se as necessidades mudarem com o tempo.
Como as tabelas DynamoDB Standard-IA funcionam com os recursos existentes do DynamoDB?
As tabelas DynamoDB Standard-IA (Infrequent Access) funcionam perfeitamente com os recursos existentes do DynamoDB. Elas usam as mesmas APIs das tabelas comuns do DynamoDB, para que você possa usá-las com aplicações existentes sem alterações no código. Elas oferecem suporte a tabelas globais para replicação multirregional, recuperação para um ponto no tempo (PITR), backups sob demanda, criptografia em repouso usando o AWS Key Management Service (KMS), DynamoDB Streams, tempo de vida para excluir itens automaticamente e operações transacionais de leitura e gravação. As tabelas Standard-IA são compatíveis com o DynamoDB Accelerator (DAX).
Como o DynamoDB armazena dados?
O Amazon DynamoDB armazena dados em partições. Uma partição é uma alocação de armazenamento para uma tabela que usa unidades de estado sólido (SSDs) e replica automaticamente em várias zonas de disponibilidade de uma região da AWS. O gerenciamento de partições é feito inteiramente pelo DynamoDB. Você nunca precisará gerenciar partições.
Qual é o tamanho máximo permitido de itens no DynamoDB?
O tamanho máximo de um item que pode ser armazenado em uma tabela do DynamoDB é de 400 KB. Não há limites de armazenamento predefinidos.
É possível armazenar um armazenamento de objetos binários grandes (BLOB) no DynamoDB?
Sim, o DynamoDB pode armazenar BLOB. No entanto, ele geralmente não é adequado para armazenar documentos ou imagens. Um padrão de arquitetura melhor é armazenar ponteiros para objetos do Amazon S3 em uma tabela do DynamoDB.
Por quanto tempo os dados permanecem no DynamoDB?
Por padrão, não há um prazo de expiração ou exclusão definido para os dados armazenados em uma tabela do Amazon DynamoDB. Os dados permanecerão na tabela indefinidamente, a menos que sejam explicitamente excluídos pelo cliente ou por meio de exclusões de tempo de vida (TTL), se esse recurso estiver habilitado.
Quantos itens podem ser armazenados no DynamoDB?
Não há limite predefinido para o número de itens que podem ser armazenados em uma tabela do DynamoDB. O DynamoDB é capaz de escalar para centenas de terabytes ou mais de dados em qualquer número de itens.
É possível armazenar imagens no DynamoDB?
Embora seja tecnicamente possível armazenar imagens no DynamoDB como dados binários (codificados em base64), existem algumas limitações e desvantagens devido ao limite de tamanho de 400 KB para os itens. Em vez de armazenar imagens diretamente no DynamoDB, uma opção melhor é armazenar as imagens no Amazon S3 (Simple Storage Service) e depois armazenar a chave ou o URL do objeto S3 no DynamoDB.
É possível armazenar listas no DynamoDB?
Para armazenar uma lista no DynamoDB, você precisa usar um dos tipos de dados de lista do DynamoDB (uma Lista ou um Conjunto). Ao gravar itens na tabela, o valor desse atributo pode ser uma matriz ou conjunto de tipos de dados escalares (não objetos), como strings, números etc. O DynamoDB se encarregará automaticamente de serializar os dados da lista e armazená-los de forma a manter a estrutura da lista. Depois disso, você poderá consultar o atributo da tabela para recuperar a lista completa. Adicionar, atualizar ou remover elementos da lista funciona da mesma forma que uma operação de gravação normal.
É possível armazenar um mapa no DynamoDB?
Sim, o DynamoDB tem suporte para o armazenamento de mapas como um atributo tipo de dados.
Segurança e controle
O Amazon DynamoDB oferece suporte a permissões do AWS Identity and Access Management (IAM)?
Sim, o DynamoDB oferece suporte a permissões do IAM. As permissões do IAM podem ser definidas em políticas baseadas em identidade, políticas baseadas em recursos ou outras políticas da AWS para controlar o acesso aos recursos do DynamoDB. Você pode anexar políticas do IAM a grupos, perfis e usuários do IAM e a tabelas e streams do DynamoDB e controlá-las conforme desejado.
O que é o AWS PrivateLink para o Amazon DynamoDB?
Com o AWS PrivateLink, você pode simplificar a conectividade de rede privada entre nuvens privadas virtuais (VPCs), o DynamoDB e seus data centers on-premises usando endpoints da VPC de interface e endereços IP privados. Com o PrivateLink, as tabelas do DynamoDB podem ser acessadas por meio de uma conexão privada, e as solicitações não saem da rede da Amazon. Isso aumenta a segurança, pois o tráfego flui por qualquer gateway de rede e o acesso pode ser controlado usando políticas e grupos de segurança do IAM. O PrivateLink é útil para aplicações que têm requisitos de segurança de dados e exigem baixa latência. Ele também torna as tabelas do DynamoDB acessíveis por meio de ambientes híbridos que abrangem redes on-premises e a AWS.
O DynamoDB oferece suporte a políticas baseadas em recursos?
Sim, o DynamoDB oferece suporte a políticas baseadas em recursos para tabelas e streams. As políticas baseadas em recursos para cada tabela também abrangem as permissões de acesso aos índices da tabela (índices secundários globais e índices secundários locais). Com políticas baseadas em recursos, os clientes podem definir permissões de acesso refinadas para tabelas do DynamoDB e outros recursos, sem precisar conceder acesso total no nível da conta da AWS. Essas políticas permitem que os clientes controlem quais usuários, perfis e usuários federados podem realizar ações como ler, gravar ou excluir em tabelas, índices e streams específicos do DynamoDB. As políticas baseadas em recursos são anexadas e gerenciadas em cada recurso do DynamoDB.
As políticas baseadas em recursos oferecem suporte a integrações com o AWS Identity and Access Management (IAM) Access Analyzer e o Bloqueio de Acesso Público (BPA). O IAM Access Analyzer ajuda os clientes a refinar as permissões e se adequar aos privilégios mínimos. O BPA ajuda os clientes a impedir o acesso público às tabelas, índices e streams do DynamoDB e está sempre habilitado com o DynamoDB.
O DynamoDB oferece suporte ao controle de acesso baseado em atributos para autorização baseada em tags?
O DynamoDB oferece suporte ao controle de acesso baseado em atributos, que geralmente está disponível para tabelas e índices do DynamoDB.
Posso usar o Amazon DynamoDB na Amazon Virtual Private Cloud (Amazon VPC)?
Sim, você pode usar o Amazon DynamoDB usando endpoints da VPC. O DynamoDB oferece suporte a dois tipos de endpoints da VPC: endpoints de gateway e usando o AWS PrivateLink. Com um endpoint de gateway, você pode acessar o DynamoDB por meio da sua VPC, sem precisar de um gateway da Internet ou um dispositivo NAT para sua VPC. No entanto, os endpoints de gateway não permitem o acesso de redes on-premises, de VPCs emparelhadas em outras regiões da AWS ou por meio de um gateway de trânsito. Para esses cenários, você deve usar o AWS PrivateLink, que está disponível por um custo adicional.
O que é o controle de acesso refinado do Amazon DynamoDB?
O controle de acesso refinado (FGAC) oferece ao proprietário de tabela do DynamoDB um controle granular sobre os dados na tabela por meio de políticas e condições do AWS Identity and Access Management (IAM). O FGAC permite que o proprietário forneça permissões para acesso a itens ou atributos da tabela e ações associadas. O controle de acesso refinado é usado em conjunto com o AWS IAM, que gerencia as credenciais de segurança e as permissões associadas.
O Amazon DynamoDB criptografa meus dados em trânsito e em repouso?
Sim, todos os dados de usuários no Amazon DynamoDB são totalmente criptografados em trânsito e em repouso.
Como o Amazon DynamoDB criptografa meus dados em trânsito?
O protocolo HTTPS é usado para proteger o tráfego de rede usando a criptografia Secure Sockets Layer.
Como o Amazon DynamoDB criptografa meus dados em repouso?
A criptografia do DynamoDB em repouso usa chaves de criptografia armazenadas no AWS Key Management Service (AWS KMS). Os dados em repouso são criptografados usando o AES-256, o padrão de referência em que os mais altos níveis de segurança são necessários.
Quais tipos de chave estão disponíveis para criptografar meus dados em repouso do DynamoDB?
Os seguintes tipos de chave estão disponíveis para criptografar dados em repouso:
1. Chaves de propriedade da AWS: são gerenciadas inteiramente pela AWS e são usadas por padrão, se nenhuma outra opção for especificada. Elas são de uso gratuito e não requerem configuração adicional.
2. Chaves gerenciadas pela AWS: são chaves mestras do cliente (CMKs) armazenadas no AWS Key Management Service (KMS) que são criadas, gerenciadas e usadas em nome do cliente pela AWS. Elas oferecem recursos adicionais de controle e auditoria em comparação com as chaves de propriedade da AWS.
3. Chaves gerenciadas pelo cliente: são CMKs que você cria, possui e gerencia no AWS KMS. Elas oferecem o mais alto nível de controle sobre as chaves de criptografia, incluindo a capacidade de criar, alternar, desabilitar e definir controles de acesso.
Cada um desses tipos de chave fornece um equilíbrio diferente entre conveniência, controle e custo. As chaves de propriedade da AWS são as mais simples de usar, enquanto as chaves gerenciadas pelo cliente oferecem mais controle, mas exigem mais sobrecarga administrativa.
Como a criptografia em repouso ajuda a proteger meus dados?
A criptografia em repouso ajuda a proteger os dados criptografando arquivos contendo informações confidenciais enquanto eles ficam inativos. Quando os dados são criptografados em repouso, as partes não autorizadas não têm acesso a conteúdo em texto sem formatação, mesmo que consigam obter acesso físico aos dispositivos que armazenam os dados. Isso fornece uma camada adicional de segurança para os dados, além dos controles de acesso, e ajuda a garantir que as informações confidenciais permaneçam privadas, mesmo se o dispositivo físico for perdido ou roubado.
O DynamoDB oferece suporte ao registro em log de auditoria para alterações no nível do item na tabela?
Sim, o DynamoDB oferece suporte ao registro em log de auditoria para alterações no nível de itens nas tabelas. O DynamoDB é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações tomadas por um usuário, perfil ou serviço da AWS no DynamoDB no nível de itens. Os dados de registro em log adicionais capturados incluem criações, atualizações, exclusões e quaisquer falhas de verificação condicional. Os clientes podem acessar esses registros em log armazenados no CloudWatch Logs e criar aplicações para analisar alterações no nível do item para auditoria, monitoramento ou outros fins. O registro em log de auditoria fornece visibilidade das alterações de dados em um nível granular sem afetar a performance normal de leitura/gravação da tabela do DynamoDB.
Posso usar o Amazon DynamoDB com aplicações que exigem conformidade com a HIPAA?
Sim, você pode usar o Amazon DynamoDB para criar aplicações em conformidade com a HIPAA e armazenar informações relacionadas à saúde, inclusive informações protegidas de saúde nos termos de um acordo de associado comercial (BAA) assinado com a AWS.
Quais certificações de conformidade foram obtidas pelo Amazon DynamoDB?
O DynamoDB obteve várias certificações de conformidade, incluindo qualificação para a HIPAA, FedRAMP, ISO 27001, SOC 1/SSAE 16/ISAE 3402 (anteriormente SAS 70) e SOC 2. Para obter mais informações, consulte Validação de conformidade do DynamoDB por setor. Os relatórios de conformidade da AWS estão disponíveis para download no AWS Artifact.
Alta disponibilidade e replicação
O que são as tabelas globais do DynamoDB?
As tabelas globais do Amazon DynamoDB são um banco de dados totalmente gerenciado, com tecnologia sem servidor, multirregional e multiativo. As tabelas globais fornecem 99,999% de disponibilidade, maior resiliência para aplicações e continuidade de negócios aprimorada. Elas replicam as tabelas do DynamoDB automaticamente nas regiões da AWS de sua preferência, para que você obtenha uma performance rápida e local de leitura e gravação. As tabelas globais usam as mesmas APIs das tabelas do DynamoDB de uma região única, para que você possa facilmente disponibilizar suas tabelas do DynamoDB globalmente sem alterações na aplicação.
Por que devo usar as tabelas globais?
Você deve usar tabelas globais para melhorar a resiliência da sua aplicação em várias regiões. As tabelas globais também permitem que as aplicações mantenham a alta disponibilidade no caso improvável de isolamento ou degradação de uma região inteira.
Qual é a diferença entre as versões de tabelas globais?
Há duas versões de tabelas globais do DynamoDB disponíveis: versão de 21/11/2019 (atual) e versão de 29/11/2017 (legada). Os clientes devem usar a versão de 21/11/2019 (atual) para todas as novas tabelas globais, pois essa versão é mais eficiente e consome menos capacidade de gravação. Qualquer pessoa que usar a versão de 29/11/2017 (legada) deve atualizar suas tabelas globais para a versão de 21/11/2019 (atual).
Como faço para atualizar minhas tabelas globais para a versão de 21/11/2019 (atual)?
Você pode atualizar a versão de uma tabela global com apenas alguns cliques no Console de Gerenciamento da AWS. A atualização da versão de 29/11/2017 (legada) para a versão de 21/11/2019 (atual) é uma ação única e não pode ser revertida. Antes da atualização, verifique se você analisou as diferenças de comportamento entre as versões e realizou todos os testes necessários. Para obter mais informações, consulte Atualização de tabelas globais do DynamoDB da versão de 29/11/2017 (legada) para a versão de 21/11/2019 (atual).
As tabelas globais do DynamoDB oferecem suporte ao failover automático se uma região ficar indisponível?
As tabelas globais do DynamoDB usam replicação multiativa entre regiões, em que todas as tabelas de réplica em todas as regiões em uma tabela global oferecem suporte ao tráfego de leitura e gravação. Uma tabela global não tem uma região primária e, portanto, nenhum failover do banco de dados é necessário ao direcionar o tráfego de leitura e gravação para uma região diferente. No caso improvável de uma região da AWS ficar isolada ou degradada, sua aplicação pode simplesmente ler e gravar com base em uma tabela de réplica em uma região que não foi afetada. Para obter mais informações, consulte Práticas recomendadas para o design de tabelas globais do DynamoDB.
Processamento de dados
O Amazon DynamoDB oferece suporte à captura de dados de alterações?
Sim, a Amazon oferece suporte à captura de dados de alterações (CDC). No DynamoDB, a CDC é implementada usando um modelo de streaming, que permite que as aplicações capturem alterações no nível do item em uma tabela do DynamoDB quase em tempo real como um fluxo de registros de dados. O fluxo de registros de dados da CDC permite que as aplicações processem e respondam com eficiência às modificações de dados na tabela do DynamoDB. O DynamoDB oferece dois modelos de streaming para CDC: Amazon DynamoDB Streams e Amazon Kinesis Data Streams para DynamoDB. Para ajudar você a escolher a solução certa para sua aplicação, consulte as opções de streaming para a captura de dados de alterações.
O que é o DynamoDB Streams e o que posso fazer com ele?
Um stream do DynamoDB é um fluxo ordenado de informações sobre alterações em itens em uma tabela do DynamoDB. O DynamoDB Streams captura uma sequência desduplicada em ordem temporal das modificações em nível de item em uma tabela e armazena essas informações em um log por até 24 horas. O DynamoDB Streams escala a capacidade automaticamente, liberando você da capacidade de provisionamento e gestão. Com base na configuração do DynamoDB Streams, você pode visualizar os itens de dados conforme eles aparecem antes e depois de serem modificados. Você pode criar aplicações que consomem esses eventos de streams e invocar fluxos de trabalho com base no conteúdo do stream de eventos.
O DynamoDB Streams é útil quando você quer responder às alterações de dados com gatilhos usando a integração nativa com o AWS Lambda, rastrear e analisar interações com clientes ou monitorar a performance de aplicações quase em tempo real, capturar sequências ordenadas de eventos e melhorar a resiliência de aplicações por meio da replicação de dados transacionais no nível de item.
O que é o Kinesis Data Streams para o DynamoDB e o que posso fazer com ele?
O Kinesis Data Streams captura modificações em nível de item em qualquer tabela do DynamoDB e as replica em um fluxo de dados do Kinesis. Suas aplicações podem acessar esse fluxo e visualizar as alterações no nível de item quase em tempo real. Com o Kinesis Data Streams, é possível desenvolver aplicações personalizadas que processam ou analisam dados de streaming para necessidades específicas. Diferentemente do DynamoDB Streams, o Kinesis Data Streams para o DynamoDB não oferece garantias de ordenação de registros nem de desduplicação. A ordenação de registros e a desduplicação devem ser implementadas pelas aplicações clientes, usando o campo ApproximateCreationDateTime no registro em nível de item.
O Kinesis Data Streams para o DynamoDB é útil se você precisar de integração com o ecossistema mais amplo do Kinesis (como a Kinesis Client Library, o Amazon Managed Service for Apache Flink ou o Amazon Data Firehose), maior retenção de dados e capacidade de reprodução (até 365 dias) e gerenciamento personalizado de fragmentos para consumo downstream e analytics de streaming.
Quais informações estão incluídas em um stream?
Quando um stream do DynamoDB ou um fluxo de dados do Kinesis é habilitado em uma tabela do DynamoDB, a tabela envia um registro de dados que captura todas as alterações nos dados dessa tabela. Esse registro de dados inclui a hora específica em que um item foi criado, atualizado ou excluído recentemente, a chave primária desse item, uma imagem do item antes da modificação e uma imagem do item após a modificação
Como faço para usar um stream do DynamoDB ou um fluxo de dados do Kinesis?
Você pode habilitar ou desabilitar streams em uma tabela existente do DynamoDB usando o Console de Gerenciamento da AWS, o AWS SDK, a AWS Command Line Interface (AWS CLI) ou a Kinesis Client Library (KCL).
Quando devo usar um stream do DynamoDB ou um fluxo de dados do Kinesis?
Escolha o DynamoDB Streams quando precisar monitorar especificamente as alterações em uma tabela do DynamoDB. Escolha o Kinesis Data Streams para necessidades mais amplas de streaming, maiores requisitos de throughput ou quando você precisar de períodos de retenção de dados mais longos.
O que é o tempo de vida (TTL) do DynamoDB e o que posso fazer com ele?
O recurso tempo de vida (TTL) do Amazon DynamoDB exclui automaticamente itens expirados que não são mais relevantes de uma tabela, reduzindo assim o uso do armazenamento e diminuindo os custos. Com o TTL, você pode definir um carimbo de data/hora por item para determinar quando um item não é mais necessário, e o DynamoDB exclui automaticamente o item da sua tabela sem consumir nenhum throughput de gravação. Sempre que um item é criado ou atualizado, você pode calcular o tempo de expiração e salvá-lo no atributo TTL. O TTL é útil se você armazena itens que perdem a relevância após um período específico.
O DynamoDB oferece suporte para que tipo de funcionalidade de consulta?
O DynamoDB oferece suporte a operações GET/PUT usando uma chave primária definida pelo usuário. A chave primária é o único atributo exigido para os itens em uma tabela. Você especifica a chave primária durante a criação da tabela. Essa chave identifica unicamente cada item. Além disso, o DynamoDB fornece consultas flexíveis ao possibilitar a consulta de atributos de chaves não primários usando índices secundários globais e índices secundários locais.
Uma chave primária pode ser uma chave de partição composta por um único atributo ou uma chave de classificação de partição composta. Uma chave de partição composta por um único atributo pode ser, por exemplo, UserID. Essa chave de partição de atributo único permite ler e gravar rapidamente dados para cada item associado a um determinado ID do usuário.
O DynamoDB indexa uma chave composta de partição e ordenação como um elemento de chave de partição e um elemento de chave de ordenação. Essa chave de várias partes mantém uma hierarquia entre o primeiro e o segundo valor de elemento. Por exemplo, uma chave de classificação de partição composta pode ser uma combinação entre UserID (partição) e Timestamp (classificação). Um elemento de chave de partição constante permite pesquisar no elemento de chave de classificação para recuperar itens. Com essa pesquisa, você pode usar a API Query para, por exemplo, recuperar todos os itens de um único UserID ao longo de um intervalo de carimbos de data/hora.
Como posso atualizar e consultar itens de dados com o DynamoDB?
Depois de criar uma tabela usando o console do DynamoDB ou a API CreateTable, você poderá usar as APIs PutItem ou BatchWriteItem para inserir itens. Em seguida, você pode usar GetItem, BatchGetItem ou, se as chaves primárias compostas estiverem habilitadas e em uso na tabela, a API Query para recuperar os itens que você adicionou à tabela.
O DynamoDB pode ser utilizado por aplicações em execução em qualquer sistema operacional?
Sim. O DynamoDB é um serviço gerenciado na nuvem que é acessado através de uma API. Aplicações executadas em qualquer sistema operacional (como Linux, Windows, iOS, Android, Solaris, AIX e HP-UX) podem usar o DynamoDB. É recomendável usar os AWS SDKs para começar a usar o DynamoDB.
Obtenha acesso instantâneo ao nível gratuito da AWS.
Comece a criar com o Amazon DynamoDB no Console de Gerenciamento da AWS.