View a markdown version of this page

Práticas recomendadas para lidar com dados de séries temporais no DynamoDB - Amazon DynamoDB

Práticas recomendadas para lidar com dados de séries temporais no DynamoDB

Os princípios gerais de design no Amazon DynamoDB recomendam manter o número mínimo de tabelas em uso. Para a maioria dos aplicativos, uma tabela única é tudo que você precisa. No entanto, no caso de dados de séries temporais, é possível lidar melhor com isso usando uma tabela por aplicativo por período.

Padrão de design para dados de séries temporais

Considere um cenário típico de séries temporais, em que você deseja monitorar um alto volume de eventos. O padrão de acesso de gravação é que todos os eventos sendo registrados tenham a data de hoje. O padrão de acesso de leitura pode ser: ler os eventos de hoje com mais frequência, os eventos de ontem com menos frequência e, então, os eventos mais antigos com muito menos frequência. Uma forma de lidar com isso é por meio da criação de data e hora atuais na chave primária.

O seguinte padrão de design normalmente lida com esse tipo de cenário de modo efetivo:

  • Crie uma tabela por período, provisionada com a capacidade de leitura e gravação necessária e os índices necessários.

  • Antes do final de cada período, crie previamente a tabela para o próximo período. Assim que o período atual terminar, direcione o tráfego de eventos para a nova tabela. É possível atribuir nomes a essas tabelas que especifiquem os períodos em que foram registradas.

  • Quando uma tabela não estiver mais sendo gravada, reduza sua capacidade de gravação provisionada para um valor mais baixo (por exemplo, 1 WCU) e provisione a capacidade de leitura que for mais apropriada. Reduz a capacidade de leitura provisionada de tabelas anteriores conforme elas envelhecem. Você pode optar por arquivamento ou exclusão das tabelas cujo conteúdo raramente ou nunca é necessário.

A ideia é alocar os recursos necessários para o período atual que receberá o maior volume de tráfego e diminui o provisionamento para tabelas mais velhas que não são usadas ativamente, diminuindo assim os custos. Dependendo das necessidades de seus negócios, você pode considerar estilhaçar a gravação para distribuir o tráfego de forma uniforme para a chave de partição lógica. Para obter mais informações, consulte Usar a fragmentação de gravação para distribuir workloads uniformemente em uma tabela do DynamoDB.

Otimizar os custos de armazenamento com a classe de tabela Standard-IA

O DynamoDB oferece duas classes de tabela: DynamoDB Standard e DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA). A classe de tabela Standard-IA reduz os custos de armazenamento, mas aumenta o custo do throughput de leitura e gravação. Ela é indicada quando o armazenamento representa a maior parte do custo da tabela e ela é acessada com pouca frequência.

Essa relação de custo-benefício se aplica naturalmente ao padrão de séries temporais. A tabela referente ao período atual recebe a maior parte do tráfego de leitura e gravação; portanto, mantenha-a na classe DynamoDB Standard, em que o throughput é mais econômico. À medida que uma tabela deixa de ser utilizada ativamente, ela passa a receber poucas (ou nenhuma) gravações e leituras ocasionais, embora seus dados continuem sendo retidos. Para essas tabelas mais antigas, o armazenamento normalmente passa a representar a maior parcela do custo; por isso, migrá-las para a classe Standard-IA pode reduzir o custo total.

Considere as seguintes recomendações ao aplicar classes de tabela a tabelas de séries temporais:

  • Mantenha o período atual (ativo) na classe DynamoDB Standard. O custo mais elevado de throughput na classe Standard-IA supera a economia de armazenamento quando a tabela recebe um grande volume de leituras e gravações.

  • Altere a tabela de um determinado período para Standard-IA quando ela deixar de receber gravações ativamente e for acessada apenas ocasionalmente, mas ainda precisar ser retida (por exemplo, para conformidade ou consultas históricas ocasionais).

  • Você pode definir a classe da tabela durante sua criação ou alterá-la posteriormente. Avalie a relação entre custos de armazenamento e throughput de cada tabela antes da mudança e monitore os custos após a alteração.

Consulte mais informações sobre classes de tabelas e como escolher entre elas em Classes de tabelas do DynamoDB e Avaliar a seleção de classes de tabela do DynamoDB.

Exemplos de tabelas de séries temporais

Veja a seguir um exemplo de dados de séries temporais no qual a tabela atual é provisionada com uma capacidade mais alta de leitura/gravação e as tabelas mais antigas são reduzidas porque não são acessadas com frequência:

Esquema de tabela para dados de séries temporais de alto volume.