Visão geral do DynamoDB - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Visão geral do DynamoDB

O Amazon DynamoDB é um banco de dados SQL sem valores-chave e documentos que fornece desempenho rápido e previsível com escalabilidade perfeita. É um banco de dados totalmente gerenciado, multirregional, multiativo e durável. (O recurso de tabela global no DynamoDB sincroniza automaticamente as modificações feitas em AWS uma região com todas as outras regiões selecionadas, para fornecer suporte multiativo.) O DynamoDB tem recursos de segurança integrados, opções de backup e restauração e armazenamento em cache na memória para aplicativos em escala de Internet.

A natureza sem esquemas do No SQL databases ajuda a reduzir o tempo e o processo necessários para enviar uma alteração no banco de dados (esquema de leitura) para a produção, permitindo assim o rápido desenvolvimento de aplicativos (). RAD Nenhum SQL banco de dados, como o DynamoDB, foi criado para operações de leitura/gravação de alto desempenho.

Atributos e benefícios

O DynamoDB fornece os seguintes recursos e benefícios:

  • Sem servidores para gerenciar — o DynamoDB é um serviço SQL sem banco de dados totalmente gerenciado, o que significa que ele não envolve nenhuma sobrecarga de manutenção do servidor.

  • Sem esquemas — o DynamoDB oferece suporte ao desenvolvimento e à implantação rápidos de aplicativos.

  • Desempenho em grande escala — o DynamoDB oferece desempenho rápido e previsível com escalabilidade perfeita.

  • ACIDsuporte — o DynamoDB suporta transações de atomicidade, consistência, isolamento e durabilidade ACID () para ajudar você a manter a exatidão dos dados.

  • Alta disponibilidade e durabilidade — Seus dados são armazenados em discos de estado sólido (SSDs) e replicados automaticamente em várias zonas de disponibilidade em uma AWS região, fornecendo alta disponibilidade e durabilidade de dados incorporadas.

  • Escalabilidade automática — O DynamoDB usa o serviço Application Auto AWS Scaling para ajustar dinamicamente a capacidade de transferência provisionada em resposta aos padrões de tráfego.

  • Opções flexíveis de preços — O DynamoDB fornece dois modos de capacidade com opções de cobrança específicas: modo de capacidade sob demanda e modo de capacidade provisionada.

  • Point-in-time recuperação — você pode habilitar backups contínuos usando a point-in-time recuperação para ajudar a proteger suas tabelas contra operações acidentais de gravação ou exclusão e restaurar suas tabelas a qualquer momento durante os últimos 35 dias.

  • Time to Live (TTL) — Você pode excluir automaticamente itens de uma tabela do DynamoDB após um período especificado.

  • Tabelas globais — você pode implantar várias réplicas em todas AWS as regiões sem precisar criar sua própria solução de replicação.

  • Índices secundários globais — Você pode consultar sua tabela do DynamoDB usando chaves de partição e classificação diferentes das chaves de partição e classificação da própria tabela.

  • DAX— O serviço de cache do DynamoDB Accelerator DAX () fornece tempos de resposta abaixo de um milissegundo para operações de leitura.

  • Streams do DynamoDB — Esse recurso fornece uma sequência ordenada por tempo de modificações no nível do item em um registro para oferecer suporte ao rastreamento e à notificação em tempo real de alterações nas tabelas do DynamoDB.

Para obter mais informações sobre esses benefícios, consulte Amazon DynamoDB Features no site. AWS As seções a seguir abordam alguns dos recursos que são relevantes para modernizar suas cargas de trabalho de banco de dados por meio da migração de um para RDBMS o DynamoDB.

Chaves de partição

O DynamoDB não tem esquemas, portanto, não é necessário definir todos os atributos de uma tabela. O atributo da chave de partição é obrigatório e a chave de classificação é opcional. Os demais atributos são arbitrários e podem variar de acordo com o item. Recomendamos que você escolha uma chave de partição com alta cardinalidade para que os itens acessados com frequência não residam na mesma partição. Essa prática ajuda a evitar desequilíbrios no acesso aos dados e partições ativas. Para obter mais informações, consulte Melhores práticas para projetar e usar chaves de partição de forma eficaz na documentação do DynamoDB.

Índices

Os índices oferecem acesso a padrões de consulta alternativos e podem acelerar as consultas. Você deve criar índices com cuidado, independentemente de estar usando um banco de dados relacional ou o DynamoDB. Sempre que uma operação de gravação ocorre em uma tabela, todos os índices dessa tabela devem ser atualizados.

Um índice secundário global contém uma seleção de atributos da tabela base, mas eles são organizados por uma chave primária diferente da própria chave primária da tabela. No DynamoDB, os índices secundários globais são esparsos por padrão. Ou seja, a chave de classificação é opcional e não aparece em todos os itens da tabela. Para aproveitar esse recurso, você pode criar índices secundários globais que armazenam e projetam somente os atributos necessários. Você pode ter até 20 índices secundários globais em uma tabela do DynamoDB. Para obter mais informações sobre esse recurso, consulte Uso de índices secundários globais no DynamoDB na documentação do DynamoDB.

Vida útil

Você pode definir uma propriedade Time to Live (TTL) em uma tabela do DynamoDB para definir um carimbo de data/hora por item (registro) para especificar quando um item não é mais necessário. Logo após o registro de data e hora especificado, o DynamoDB exclui o item da tabela sem consumir nenhuma unidade de capacidade adicional. Para obter mais informações sobre esse recurso, consulte Expiração de itens usando o DynamoDB Time to Live na documentação do DynamoDB.

Modelos de preços

O DynamoDB oferece dois modelos de preços para você escolher: capacidade provisionada e capacidade sob demanda. Sua escolha do modelo de preços depende das cargas de trabalho projetadas.

Modelo de definição de preços Tipo de carga de trabalho Custos Taxa de transferência de leitura/gravação
Capacidade provisionada Previsível Menor

Você especifica o número de operações de leitura/gravação por segundo em termos de unidades de capacidade de leitura (RCUs) e unidades de capacidade de gravação (WCUs). Por exemplo:

  • Para um item de até 4 KB de tamanho, 1 RCU pode realizar 2 leituras eventualmente consistentes por segundo.

  • Para um item de até 1 KB de tamanho, 1 WCU pode realizar 2 leituras eventualmente consistentes por segundo.

Você pode ativar o escalonamento automático para ajustar a capacidade em resposta às mudanças de tráfego.

Capacidade sob demanda Dinâmico Mais alto

Você não especifica os requisitos de taxa de transferência. O DynamoDB acomoda suas cargas de trabalho automaticamente.

Você é cobrado pelas leituras e gravações que seu aplicativo executa em suas tabelas em termos de unidades de solicitação de leitura e unidades de solicitação de gravação. Por exemplo:

  • Um item de 8 KB requer 1 unidade de solicitação de leitura para uma leitura eventualmente consistente e 8 unidades de solicitação de gravação para uma operação de gravação não transacional.

Para obter mais informações sobre esses dois modelos, consulte Modo de capacidade de leitura/gravação na documentação do DynamoDB.

Transações

O DynamoDB suporta transações de atomicidade, consistência, isolamento e durabilidade ACID () em uma ou mais tabelas em uma única conta e região. AWS AWS

Para gerenciar alterações em vários itens dentro e entre tabelas, você pode usar o DynamoDB transacional TransactWriteItems e. TransactGetItems APIs

  • TransactWriteItemsé uma operação em lote que contém um conjunto de gravação com uma ou mais DeleteItem ações PutItemUpdateItem, e. TransactWriteItemsopcionalmente, pode verificar as condições de pré-requisitos que devem ser atendidas antes de fazer atualizações. Essas condições podem envolver os mesmos itens do conjunto de gravação ou itens diferentes. Se alguma condição não for atendida, a transação será rejeitada.

  • TransactGetItemsé uma operação em lote que contém um conjunto de leitura com uma ou mais GetItem ações. Se você emitir uma TransactGetItems solicitação em um item que faz parte de uma transação de gravação ativa, a transação de leitura será cancelada. Para obter o valor previamente comprometido, você pode usar uma operação de leitura padrão.

Para obter mais informações sobre elasAPIs, consulte Transações do Amazon DynamoDB: como funcionam na documentação do DynamoDB.

Limitações

As operações API transacionais do DynamoDB têm as seguintes restrições:

  • Uma transação não pode atualizar mais de 100 itens exclusivos.

  • Uma transação não pode conter mais de 4 MB de dados.

  • Duas ações em uma transação não podem funcionar contra o mesmo item na mesma tabela. Por exemplo, você não pode executar Update ações ConditionCheck e ambas no mesmo item em uma transação.

  • Uma transação não pode operar em tabelas em mais de uma AWS conta ou região.

  • As operações transacionais fornecem ACID garantias somente AWS na região em que a operação de gravação ocorre originalmente. As transações não são compatíveis entre regiões em tabelas globais.

  • O modelo de persistência de objetos não oferece suporte a transações. Para usar o recurso de transação, você deve acessar o banco de dados e as tabelas usando o DynamoDB de baixo nível. API

Componentes grandes

O DynamoDB tem um limite de tamanho de 400 KB para cada item. Esse limite inclui o nome do atributo (comprimento binário com codificação UTF -8) e o valor do atributo (novamente comprimento binário). O nome do atributo conta para o limite de tamanho. Por exemplo, considere um item que tenha dois atributos: um atributo chamado “código do país” com valor “IN” e outro atributo chamado "" com valor “country-phone-prefix91". O tamanho total desse item é de 36 bytes.

Solução alternativa

Se um item estiver associado a muitos atributos e propriedades ou a uma grande quantidade de dados, seu tamanho poderá exceder 400 KB. Nesse caso, você pode armazenar o item serializado no Amazon Simple Storage Service (Amazon S3) em JSON formato e salvar a localização do Amazon S3 como um atributo () no item. S3Location As operações de leitura e gravação desse item buscam o objeto S3 e atualizam a JSON string. A chave primária, a chave de classificação e todos os atributos usados pelos índices locais e pelos índices secundários globais devem ser armazenados na tabela junto com o S3Location atributo. Isso requer lógica adicional no aplicativo (camada de acesso a dados) para verificar o S3Location atributo e buscar os dados completos do item no Amazon S3.

Backup e restauração

O suporte para backup e restauração é uma expectativa de recurso comum em qualquer banco de dados. O DynamoDB oferece suporte nativo às operações de backup e restauração na mesma conta, mas você pode realizar a cópia da tabela em várias contas usando outras opções ou processos. Esses processos não consomem nenhuma unidade de capacidade de leitura/gravação. Para obter mais informações, consulte o guia Opções de cópia da tabela completa entre contas para o Amazon DynamoDB AWS no site Prescriptive Guidance.

Limitações

Atualmente, o DynamoDB suporta backup e restauração entre contas AWS Backupusando, mas a conta precisa fazer parte da mesma organização. Você pode resolver essa limitação adotando uma das seguintes soluções:

Idioma e SDK suporte

Eles AWS SDKsfornecem uma interface de programação simplificada para AWS serviços e suporte para. NET, Java JavaScript, Node.js, Python e PHP Ruby.

Você pode escolher entre três padrões para acessar as tabelas do DynamoDB usando: modelo de persistência AWS SDK de objetos (interface de alto nível), interfaces de documentos e interfaces de baixo nível. Para obter informações detalhadas, consulte Padrões de acesso posteriormente neste guia.