Integração de armazéns de dados e cache

Domine estrategias de cache (Write-Through, Cache-Aside, Lazy Loading), ElastiCache e integracao RDS.

As perguntas sobre armazens de dados no DVA-C02 se concentram em duas areas principais: escolher o armazem de dados correto para uma situacao especifica e saber como melhorar o desempenho da aplicacao com cache.

 

Escolhendo um armazem de dados — Selecionando o banco de dados certo

Assim como voce escolheria uma geladeira, um deposito ou um cofre dependendo do que precisa guardar, voce deve escolher seu armazem de dados com base na natureza dos seus dados e como eles serao usados.

| Requisito | Servico recomendado | |-----------|-------------------| | Dados relacionais, consultas SQL | RDS / Aurora | | Estrutura chave-valor, resposta em milissegundos | DynamoDB | | Cache em memoria (armazenamento temporario rapido) | ElastiCache | | Busca de texto completo, analise de logs | Amazon OpenSearch | | Arquivos, imagens, armazenamento de objetos grandes | S3 |

 

O que e cache?

Cache e a tecnica de armazenar dados frequentemente acessados em uma camada de armazenamento rapida (memoria) para que possam ser recuperados rapidamente. Pense nisso como ter sua comida favorita na geladeira. E muito mais rapido pegar algo da geladeira (cache) do que ir ao supermercado (banco de dados) toda vez que precisar.

Ao usar o cache de forma eficaz, voce pode reduzir a carga do banco de dados e entregar tempos de resposta muito mais rapidos aos seus usuarios.

 

Tres estrategias de cache

Lazy Loading (Cache-Aside, Carregamento preguicoso)

Esta e a estrategia de cache mais amplamente utilizada. Veja como funciona:

Um usuario solicita dados. A aplicacao primeiro verifica o cache. Se os dados estiverem no cache (Cache Hit), sao retornados imediatamente. Se os dados nao estiverem no cache (Cache Miss), o banco de dados e consultado. Os dados recuperados sao armazenados no cache e retornados ao usuario.

Vantagem: apenas os dados solicitados sao armazenados em cache, portanto a memoria e usada eficientemente.

Desvantagem: um Cache Miss significa que a primeira solicitacao e lenta. Alem disso, dados obsoletos podem permanecer no cache por muito tempo.

Solucao: defina um TTL (Tempo de Vida). O TTL define por quanto tempo os dados em cache sao validos. Quando o TTL expira, a entrada do cache e automaticamente excluida, entao a proxima solicitacao busca dados frescos.

Write-Through (Escrita direta)

Sempre que dados sao gravados no banco de dados, tambem sao gravados no cache ao mesmo tempo.

Vantagem: os dados em cache estao sempre atualizados. Cache Misses sao muito raros.

Desvantagem: dados que nunca sao lidos ainda sao armazenados no cache, potencialmente desperdicando memoria.

Write-Back (Escrita diferida)

Os dados sao gravados primeiro no cache e depois periodicamente enviados ao banco de dados em lotes.

Vantagem: as operacoes de escrita sao extremamente rapidas. Otimo para sistemas com cargas pesadas de escrita.

Desvantagem: se o cache falhar inesperadamente, os dados que ainda nao foram salvos no banco de dados podem ser perdidos.

!3 estratégias de cache: Lazy Loading, Write-Through, Write-Back

ElastiCache — O servico de cache em memoria da AWS

Amazon ElastiCache fornece dois mecanismos: Redis e Memcached. Ambos armazenam dados em memoria para acesso extremamente rapido, mas diferem significativamente em recursos.

| Recurso | ElastiCache for Redis | ElastiCache for Memcached | |---------|----------------------|--------------------------| | Tipos de dados suportados | Ricos (String, Hash, List, Set e mais) | Apenas String | | Replicacao (replicas de leitura) | Suportado | Nao suportado | | Persistencia de dados (sobrevive a reinicializacoes) | Suportado | Nao suportado | | Failover automatico Multi-AZ | Suportado | Nao suportado | | Processamento multithread | Nao suportado | Suportado |

Na maioria dos casos, escolha ElastiCache for Redis. Gracas a replicacao, persistencia e suporte Multi-AZ, e mais confiavel e versatil.

Escolha ElastiCache for Memcached apenas quando precisar de cache simples e o desempenho de processamento multithread for uma prioridade.

 

Serializacao de dados — O formato para trocar dados

Ao trocar dados com o ElastiCache ou outros servicos, voce precisa converter os dados para um formato especifico (serializacao) e depois restaura-los para sua forma original (desserializacao). Pense nisso como colocar uma carta em um envelope e depois tira-la.

Os formatos mais comuns incluem JSON (legivel por humanos), Protobuf (rapido e eficiente) e Avro (adequado para dados em grande escala). O formato que voce escolher afeta tanto o desempenho quanto a compatibilidade com outros sistemas.

 

Pontos-chave para o exame

"Verificar cache na solicitacao -> miss -> consultar BD -> armazenar no cache" -- Lazy Loading (Cache-Aside)

"Atualizar cache simultaneamente ao gravar no BD" -- Write-Through

"Expirar automaticamente o cache obsoleto" -- Configurar TTL

"Precisa de replicacao, persistencia, Multi-AZ" -- ElastiCache for Redis

"Cache simples, processamento multithread necessario" -- ElastiCache for Memcached

"Busca de texto completo, analise de logs" -- Amazon OpenSearch

"Manter dados do cache sempre atualizados" -- Write-Through

Redis vs Memcached: escolher Redis na maioria dos casos. Memcached e para situacoes especiais que requerem cache simples mais desempenho multithread.

Voltar à lista do blog