Modo de capacidade de leitura/gravação - Amazon DynamoDB

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á.

Modo de capacidade de leitura/gravação

O Amazon DynamoDB oferece dois modos de capacidade de leitura/gravação para processar leituras e gravações em suas tabelas:

  • Sob demanda

  • Provisionada (padrão, qualificada para o nível gratuito)

O modo de capacidade de leitura/gravação controla como você é cobrado por throughput de leitura e gravação e como você gerencia a capacidade. Você pode definir o modo de capacidade de leitura/gravação ao criar uma tabela ou pode mudá-lo posteriormente.

Os índices secundários herdam o modo de capacidade leitura/gravação da tabela-base. Para ter mais informações, consulte Considerações ao mudar o modo de capacidade de leitura/gravação.

O vídeo a seguir apresenta uma introdução sobre os modos de capacidade de tabela.

Para obter mais informações sobre as práticas recomendadas para otimizar os custos de suas tabelas do DynamoDB, consulteOtimizar os custos nas tabelas do DynamoDB.

Modo sob demanda

O Amazon DynamoDB sob demanda é uma opção de faturamento flexível capaz de servir centenas de solicitações por segundo sem planejamento de capacidade. O DynamoDB on-demand pay-per-request oferece preços para solicitações de leitura e gravação para que você pague somente pelo que usa.

Quando você escolhe o modo sob demanda, o DynamoDB acomoda instantaneamente o crescimento e a redução das workloads para qualquer nível de tráfego previamente registrado. Se o nível de tráfego de uma workload atingir um novo pico, o DynamoDB fará adaptações rapidamente para acomodar a workload. Tabelas que usam o modo sob demanda entregam a mesma latência de milissegundo de digito único, o compromisso de Acordo de Serviço (SLA) e a segurança já oferecidos pelo DynamoDB. Você pode escolher sob demanda para tabelas novas e existentes e continuar usando as APIs do DynamoDB sem alterar códigos.

Modo sob demanda é uma boa opção se qualquer uma das declarações a seguir for verdadeira:

  • Você cria novas tabelas com workloads desconhecidas.

  • Você tem tráfego de aplicativos imprevisível.

  • Você prefere a facilidade de pagar somente pelo que usar.

A taxa de solicitação só é limitada pelas cotas da tabela padrão de throughput do DynamoDB, mas pode ser aumentada mediante solicitação. Para ter mais informações, consulte Cotas padrão de throughput.

Para começar a usar o modo sob demanda, você pode criar ou atualizar uma tabela desse tipo. Para ter mais informações, consulte Operações básicas em tabelas do DynamoDB.

É possível alternar as tabelas para o modo sob demanda uma vez a cada 24 horas. A criação de uma tabela sob demanda também inicia esse período de 24 horas. É possível retornar as tabelas ao modo de capacidade provisionada a qualquer momento. Para problemas que você deva considerar ao trocar os modos de capacidade de leitura/gravação, consulte Considerações ao mudar o modo de capacidade de leitura/gravação.

Unidades de solicitação de leitura e unidades de solicitação de gravação

Para tabelas do modo sob demanda, não é necessário especificar o throughput de leitura e gravação que você espera que sua aplicação execute. O DynamoDB cobra você pelas leituras e gravações que sua aplicação realiza em suas tabelas em termos de unidades de solicitação de leitura e unidades de solicitação de gravação.

As solicitações de leitura do DynamoDB podem ser altamente consistentes, consistentes ao final ou transacionais.

  • Uma solicitação de leitura altamente consistente de um item de até 4 KB exige uma unidade de solicitação de leitura.

  • Uma solicitação de leitura final consistente de um item de até 4 KB exige uma unidade de solicitação de leitura.

  • Uma solicitação de leitura transacional de um item de até 4 KB exige duas unidades de solicitação de leitura.

Se você precisar ler um item com mais de 4 KB, o DynamoDB precisará de unidades de solicitação de leitura adicionais. O número total de unidades de solicitação de leitura necessárias varia de acordo com o tamanho do item e se você deseja uma leitura altamente consistente ou uma leitura final consistente. Por exemplo, se o tamanho do seu item for 8 KB, você precisa de 2 unidades de solicitação de leitura para suportar uma leitura altamente consistente, 1 unidade de solicitação de leitura se você escolher leituras finais consistentes, ou 4 unidades de solicitação de leitura para uma solicitação de leitura transacional.

Para saber mais sobre os modelos de consistência de leitura do DynamoDB, consulte Consistência de leituras.

Importante

Se você executar uma operação de leitura em um item inexistente, o DynamoDB ainda assim consumirá o throughput de leitura, conforme descrito acima.

Uma unidade de solicitação de gravação representa uma gravação para um item com até 1 KB de tamanho. Se você precisar gravar um item maior que 1 KB, o DynamoDB precisará consumir unidades de solicitação de gravação adicionais. As solicitações de gravação transacional exigem 2 unidades de solicitação de gravação para executar uma gravação para itens de até 1 KB. O número total de unidades de solicitação de gravação necessárias varia de acordo com o tamanho do item. Por exemplo, se o tamanho do seu item for 2 KB, são necessárias duas unidades de solicitação de gravação para dar suporte a uma solicitação de gravação ou quatro unidades de solicitação de gravação para uma solicitação de gravação transacional.

Para obter exemplos detalhados de preços e estimar custos usando a calculadora de preços, consulte Definição de preço do Amazon DynamoDB.

Tráfego de pico e propriedades de dimensionamento

Tabelas do DynamoDB usando modo de capacidade sob demanda automaticamente adaptam-se ao volume de tráfego da sua aplicação. O modo de capacidade sob demanda acomoda instantaneamente até o dobro do pico de tráfego anterior em uma tabela. Por exemplo, se o padrão de tráfego da sua aplicação varia entre 25 mil e 50 mil leituras altamente consistentes por segundo, em que 50 mil leituras por segundo é o pico de tráfego anterior, o modo de capacidade sob demanda instantaneamente acomoda o tráfego sustentado de até 100 mil leituras por segundo. Se a sua aplicação sustentar o tráfego de 100 mil leituras por segundo, esse pico torna-se o novo pico anterior, habilitando o tráfego subsequente de até 200 mil leituras por segundo.

Se precisar de mais que o dobro de seu pico anterior na tabela, DynamoDB aloca automaticamente mais capacidade que seu volume de tráfego aumenta para ajudar a garantir sua workload não passar por controle de utilização. No entanto, pode ocorrer controle de utilização se você exceder o dobro de seu pico anterior dentro de 30 minutos. Por exemplo, se o padrão de tráfego de seu aplicativo varia entre 25 mil e 50 mil leituras altamente consistentes por segundo, onde 50 mil leituras por segundo é o pico de tráfego anteriormente alcançado, DynamoDB recomenda espaçar seu crescimento de tráfego em, pelo menos, 30 minutos, antes de colocar mais de 100 mil leituras por segundo.

Throughput inicial para modo de capacidade sob demanda

Se recentemente você trocou uma tabela existente para um modo de capacidade sob demanda pela primeira vez ou se você criou uma nova tabela com modo de capacidade sob demanda habilitado, a tabela tem as configurações de pico anterior a seguir, mesmo se a tabela não tiver apresentado tráfego anteriormente usando o modo de capacidade sob demanda:

Veja a seguir exemplos de possíveis cenários.

  • Uma tabela provisionada configurada como 100 WCU e 100 RCU. Quando essa tabela for alterada para sob demanda pela primeira vez, o DynamoDB garantirá que ela aumente a escala horizontalmente para sustentar instantaneamente pelo menos 4 mil unidades de gravação/segundo e 12 mil unidades de leitura/segundo.

  • Uma tabela provisionada configurada como 8 mil WCU e 24 mil RCU. Quando essa tabela for alterada para sob demanda, ela continuará podendo sustentar pelo menos 8 mil unidades de gravação/segundo e 24 mil unidades de leitura/segundo a qualquer momento.

  • Uma tabela provisionada configurada com 8 mil WCU e 24 mil RCU, que consumiu 6 mil unidades de gravação/segundo e 18 mil unidades de leitura/segundo por um período prolongado. Quando essa tabela for alterada para sob demanda, ela continuará podendo sustentar pelo menos 8 mil unidades de gravação/segundo e 24 mil unidades de leitura/segundo. O tráfego anterior pode ainda permitir que a tabela sustente níveis muito mais altos de tráfego sem controle de utilização.

  • Uma tabela anteriormente provisionada com 10 mil WCU e 10 mil RCU, mas atualmente provisionada com 10 RCU e 10 WCU. Quando essa tabela for alterada para sob demanda, ela será poderá sustentar pelo menos 10 mil unidades de gravação/segundo e 10 mil unidades de leitura/segundo.

Comportamento de tabela durante a troca para o modo de capacidade de leitura/gravação

Quando você troca uma tabela de modo de capacidade provisionado para modo de capacidade sob demanda, DynamoDB faz várias alterações na estrutura de sua tabela e partições. Esse processo pode levar alguns minutos. Durante o período de troca, sua tabela entrega throughput que é consistente com as unidades de valor de capacidade de gravação provisionada anteriormente e unidade de capacidade de leitura. Ao voltar para o modo de capacidade sob demanda para modo de capacidade provisionado, sua tabela entrega um throughput consistente com o pico anterior alcançado quando a tabela foi definida como modo de capacidade sob demanda.

Pré-preparar uma tabela para o modo de capacidade sob demanda

Com o modo de capacidade sob demanda, as solicitações podem aumentar até o dobro do pico anterior na tabela. Observe que o controle de utilização pode ocorrer se as solicitações aumentarem para mais do que o dobro da capacidade padrão ou do pico de taxa de solicitação atingido nos últimos 30 minutos. Uma solução é pré-preparar as tabelas até a capacidade máxima prevista do pico.

Para pré-preparar a tabela, siga estas etapas:

  1. Verifique os limites da sua conta e confirme se você pode alcançar a capacidade desejada no modo provisionado.

  2. Se você estiver pré-preparando uma tabela que já existe ou uma nova tabela no modo sob demanda, inicie esse processo pelo menos 24 horas antes do pico previsto. Você só pode alternar entre os modos sob demanda e provisionado uma vez a cada 24 horas.

  3. Para pré-aquecer uma mesa que está atualmente no modo sob demanda, mude-a para o modo provisionado e espere até que a tabela esteja ativa. Depois, prossiga para a próxima etapa.

    Se você quiser pré-preparar uma nova tabela no modo provisionado ou se já estiver no modo provisionado há 24 horas, poderá prosseguir para a próxima etapa sem esperar.

  4. Defina o throughput de gravação da tabela para o valor de pico desejado e mantenha esse valor por alguns minutos. Você incorrerá em custos com esse alto volume de throughput até voltar para o modo sob demanda.

  5. Alterne para o modo de capacidade sob demanda. Isso deve sustentar os valores da capacidade de throughput provisionada.

Modo provisionado

Se escolher o modo provisionado, você especifica o número de leituras e gravações por segundo exigidas pela aplicação. Você pode usar Auto Scaling para ajustar a capacidade provisionada da tabela automaticamente em resposta às alterações de tráfego. Isso ajuda a governar seu uso do DynamoDB para permanecer no lugar ou abaixo de uma taxa de solicitação definida para obter previsão de custos.

Modo provisionado é uma boa opção se qualquer uma das declarações a seguir for verdadeira:

  • Você tem tráfego de aplicativos previsível.

  • Você executa aplicativos com tráfego consistente e que aumenta gradualmente.

  • Você pode prever os requisitos de capacidade para controlar os custos.

Unidades de capacidade de leitura e unidades de capacidade de gravação

Para tabelas de modo provisionados, você especifica a capacidade de throughput em termos de unidades de capacidade de leitura (RCUs) e unidades de capacidade de gravação (WCUs):

  • Uma unidade de capacidade de leitura representa uma leitura fortemente consistente por segundo ou duas leituras finais consistentes por segundo para um item com até 4 KB de tamanho. As solicitações de leitura transacional exigem duas unidades de capacidade de leitura para executar uma leitura por segundo para itens de até 4 KB. Se você precisar ler um item maior que 4 KB, o DynamoDB precisará consumir unidades de capacidade de leitura adicionais. O número total de unidades de capacidade de leitura necessárias varia de acordo com o tamanho do item e se você deseja uma leitura final consistente ou altamente consistente. Por exemplo, se o tamanho do seu item for 8 KB, você precisa de 2 unidades de capacidade de leitura para suportar uma leitura altamente consistente por segundo, 1 unidade de capacidade de leitura se você escolher leituras finais consistentes, ou 4 unidades de capacidade de leitura para uma solicitação de leitura transacional. Para ter mais informações, consulte Consumo de unidades de capacidade para leituras.

    nota

    Para saber mais sobre os modelos de consistência de leitura do DynamoDB, consulte Consistência de leituras.

  • Uma unidade de capacidade de gravação representa uma gravação por segundo para um item com até 1 KB de tamanho. Se você precisar gravar um item maior que 1 KB, o DynamoDB precisará consumir unidades de capacidade de gravação adicionais. As solicitações de gravação transacional exigem 2 unidades de capacidade de gravação para executar uma gravação por segundo para itens com até 1 KB. O número total de unidades de capacidade de gravação necessárias varia de acordo com o tamanho do item. Por exemplo, se o tamanho do seu item for 2 KB, você precisa de 2 unidades de capacidade de gravação para sustentar uma solicitação de gravação por segundo ou 4 unidades de capacidade de gravação para uma solicitação de gravação transacional. Para ter mais informações, consulte Consumo de unidade de capacidade para gravações.

Importante

Ao chamar DescribeTable em uma tabela sob demanda, as unidades de capacidade de leitura e unidades de capacidade de gravação são definidas como 0.

Se a sua aplicação ler ou gravar itens maiores (até o tamanho de item máximo do DynamoDB de 400 KB), ele consumirá mais unidades de capacidade.

Por exemplo, suponha que você crie uma tabela provisionada com 6 unidades de capacidade de leitura e 6 unidades de capacidade de gravação. Com essas configurações, sua aplicação pode fazer o seguinte:

  • Faça leituras altamente consistentes de até 24 KB por segundo (4 KB × 6 unidades de capacidade de leitura).

  • Realizar leituras finais consistentes de até 48 KB por segundo (o dobro do throughput de leitura).

  • Realize solicitações de leitura transacional de até 12 KB por segundo.

  • Grave até 6 KB por segundo (1 KB × 6 unidades de capacidade de gravação).

  • Realize solicitações de gravação transacional de até 3 KB por segundo.

Para ter mais informações, consulte Gerenciar configurações em tabelas com capacidade provisionada do DynamoDB.

O throughput provisionado é o máximo da capacidade que uma aplicação pode consumir em uma tabela ou índice. Se o aplicativo exceder sua capacidade de configurações de throughput provisionado em uma tabela ou índice, ele estará sujeito à controle de utilização de solicitações.

o controle de utilização impede que o seu aplicativo consuma muitas unidades de capacidade. Quando uma solicitação é limitada, ela falha com um código HTTP 400 (Bad Request) e uma ProvisionedThroughputExceededException. Os AWS SDKs fornecem suporte integrado para repetir solicitações limitadas (consulte Repetições de erro e recuo exponencial) para que você não precise gravar essa lógica manualmente. Para obter mais informações sobre como resolver problemas de controle de utilização, consulte Por que minha tabela do Amazon DynamoDB está com controle de utilização?

Você pode usar o AWS Management Console para monitorar seu throughput provisionado e real e modificar suas configurações de throughput, se necessário.

Para obter exemplos detalhados de preços e estimar custos usando a calculadora de preços, consulte Definição de preço do Amazon DynamoDB.

Auto Scaling do DynamoDB

O Auto Scaling do DynamoDB gerencia ativamente a capacidade de throughput de tabelas e índices secundários globais. Com o Auto Scaling, você define um intervalo (limites superior e inferior) para unidades de capacidade de leitura e gravação. Você também define um percentual de utilização-alvo dentro desse intervalo. O Auto Scaling do DynamoDB procura manter sua utilização alvo, mesmo que a workload da sua aplicação aumente ou diminua.

Com o Auto Scaling do DynamoDB, uma tabela ou um índice secundário global pode aumentar sua capacidade provisionada de leitura e gravação para lidar com aumentos repentinos no tráfego, sem a controle de utilização de solicitações. Quando a workload diminuir, o Auto Scaling do DynamoDB diminuirá o throughput para que você não precise pagar por uma capacidade provisionada não utilizada.

nota

Se você usar o AWS Management Console para criar uma tabela ou um índice secundário global, o Auto Scaling do DynamoDB será habilitado por padrão.

É possível gerenciar as configurações de Auto Scaling a qualquer momento usando o console, a AWS CLI ou um dos AWS SDKs.

Para ter mais informações, consulte Gerenciar a capacidade de throughput automaticamente com o Auto Scaling do DynamoDB.

Capacidade reservada

Como um cliente do DynamoDB, você pode adquirir capacidade reservada com antecedência para tabelas que usam a classe Standard do DynamoDB, conforme descrito na Definição de preço do Amazon DynamoDB. Com a capacidade reservada, você paga uma taxa única antecipada e se compromete a um nível mínimo de uso provisionado ao longo de um período. Sua capacidade reservada é cobrada de acordo com a taxa de capacidade reservada por hora. Ao reservar suas unidades de capacidade de leitura e gravação com antecedência, há economia de custo significativa nos custos de capacidade provisionada. Qualquer capacidade que você provisionar além da sua capacidade reservada será cobrada de acordo com as taxas de capacidade provisionada padrão.

Os descontos de capacidade reservada são aplicados primeiro à conta que comprou a capacidade reservada. Qualquer desconto de capacidade reservada não utilizado é aplicado a outras contas na mesma organização da AWS como a conta que fez a compra. Você pode desativar o compartilhamento de descontos da instância reservada na página Preferences (Preferências) do console de Gerenciamento de custos e faturamento. Para obter mais informações, consulte Desativar o compartilhamento de descontos de instâncias reservadas e de Savings Plans.

nota

A capacidade reservada não está disponível para unidades de capacidade de gravação replicada. A capacidade reservada é aplicada somente à região em que foi comprada. A capacidade reservada também não está disponível para tabelas que usam a classe de tabela Standard-IA do DynamoDB ou o modo de capacidade sob demanda.

Para gerenciar a capacidade reservada, acesse o Console do DynamoDB e selecione Reserved Capacity (Capacidade reservada).

nota

Você pode impedir que os usuários visualizem ou adquiram capacidade reservada e, ao mesmo tempo, permitir que eles acessem o restante do console. Para obter mais informações, consulte "Conceder permissões para evitar a compra de ofertas de capacidade reservada", em Gerenciamento de identidade e acesso no Amazon DynamoDB.

Para obter mais informações, consulte preços do Amazon DynamoDB.