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

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 taxa de transferência 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 mais informações, consulte Considerações ao mudar o modo de capacidade de leitura/gravação.

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. DynamoDB sob demanda oferece definição de preço "pague por solicitação" para solicitações de leitura e gravação, para que você pague apenas pelo o que usar.

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 nível 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 mais informações, consulte Cotas padrão de throughput.

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

Você pode alternar entre os modos de capacidade de leitura/gravação uma vez a cada 24 horas. 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, finalmente consistentes ou transacionais.

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

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

  • Uma solicitação de leitura transacional de até 4 KB requer uma unidade 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 eventualmente consistente ou fortemente 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 fortemente consistente, 1 unidade de solicitação de leitura se você escolher leituras eventualmente consistente, ou 4 unidades de solicitação de leitura para uma solicitação de leitura transacional.

nota

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

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 uma lista de regiões da AWS onde o DynamoDB sob demanda está disponível, consulte Preços 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 do seu aplicativo. O modo de capacidade sob demanda instantaneamente a até o dobro do pico de tráfego anterior em uma tabela. Por exemplo, se o padrão de tráfego de seu aplicativo varia entre 25.000 e 50.000 leituras fortemente consistentes por segundo, onde 50.000 leituras por segundo é o pico de tráfego anterior, o modo de capacidade sob demanda instantaneamente acomoda tráfego sustentado de até 100.000 leituras por segundo. Se seu aplicativo aguentar tráfego de 100.000 leituras por segundo, esse pico torna-se o novo pico anterior, habilitando tráfego subsequente de até 200.000 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.000 e 50.000 leituras fortemente consistentes por segundo, onde 50.000 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.000 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:

  • Tabela criada recentemente com modo de capacidade sob demanda: O pico anterior é 2.000 unidades de solicitação de gravação ou 6.000 unidades de solicitação de leitura. Você pode adicionar até o dobro do pico anterior imediatamente, o que possibilita que tabelas sob demanda criadas recentemente atendam até 4.000 unidades de solicitação de gravação ou 12.000 unidades de solicitação de leitura.

  • Tabela existente alternada para o modo de capacidade sob demanda: o pico anterior é a metade da quantidade de unidades de capacidade de gravação e de unidades de capacidade de leitura provisionadas desde a criação da tabela ou as configurações para uma tabela recém-criada com o modo de capacidade sob demanda, o que for maior. Em outras palavras, a tabela fornecerá pelo menos a mesmo throughput fornecida de mudar para o modo de capacidade sob demanda.

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 taxa de transferência 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 uma taxa de transferência consistente com o pico anterior alcançado quando a tabela foi definida como modo de capacidade sob demanda.

Modo provisionado

Se escolher o modo provisionado, você especifica o número de leituras e gravações por segundo exigidas pelo aplicativo. Você pode usar Auto Scaling para ajustar sua capacidade provisionada de 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 taxa de transferência 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 eventualmente consistente ou fortemente 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 fortemente consistente por segundo, 1 unidade de capacidade de leitura se você escolher leituras eventualmente consistente, ou 4 unidades de capacidade de leitura para uma solicitação de leitura transacional. Para 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 leitura.

  • 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 suportar 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 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, seu aplicativo pode fazer o seguinte:

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

  • Realizar leituras eventualmente 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 mais informações, consulte Gerenciar configurações em tabelas com capacidade provisionada do DynamoDB.

O throughput provisionado é o máximo da capacidade que um aplicativo 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.

A limitaçã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.

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

Autoescalabilidade 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 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 em Preços 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.

nota

A capacidade reservada não está disponível para unidades de capacidade de gravação replicada. 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 Gerenciar identidade e acesso no Amazon DynamoDB.

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