Trace Id is missing
Avançar para o conteúdo principal

O que é a colocação em cache?

Os programadores e os profissionais de TI utilizam a colocação em cache para guardar e aceder a dados de chave-valor dentro da memória temporária com mais rapidez e menos esforço do que os dados armazenados no armazenamento de dados convencional. As caches são úteis em vários cenários com diversas tecnologias, como a colocação em cache do computador com a memória de acesso aleatório (RAM), a colocação em cache da rede numa rede de entrega de conteúdos, uma cache na Web para dados de multimédia Web ou uma cache na cloud para ajudar a tornar as aplicações na cloud mais resilientes. Geralmente, os programadores criam aplicações para colocar em cache os dados processados e, em seguida, reconfiguram-nos para servirem os pedidos mais depressa do que nas consultas de base de dados padrão.

Pode utilizar a colocação em cache para reduzir os custos da base de dados, proporcionar um débito mais elevado e uma latência mais baixa do que a maioria das bases de dados consegue oferecer e aumentar o desempenho das aplicações Web e da cloud.

Como funciona a colocação em cache para bases de dados?

Os programadores podem complementar uma base de dados primária com uma cache de base de dados, que podem colocar dentro da base de dados ou da aplicação, ou configurar como uma camada autónoma. Embora dependam normalmente de uma base de dados convencional para armazenar conjuntos de dados grandes, duráveis e completos, utilizam uma cache para armazenar subconjuntos de dados transitórios para rápida obtenção.

Pode utilizar a colocação em cache com todos os tipos de arquivos de dados, incluindo bases de dados NoSQL, bem como bases de dados relacionais, como SQL Server, MySQL, ou MariaDB. A colocação em cache também resulta com inúmeras plataformas de dados específicas, como a Base de Dados do Azure para PostgreSQL, a Base de Dados SQL do Azure ou o Azure SQL Managed Instance. É recomendado pesquisar o tipo de arquivo de dados mais adequado aos seus requisitos antes de começar a configurar uma arquitetura de dados. Por exemplo, deverá conhecer o PostgreSQL antes de o utilizar para combinar arquivos de dados relacionais e não estruturados.

Quais os benefícios das camadas de cache e o que é Redis?

Os programadores utilizam caches de vários níveis denominadas camadas de cache para armazenar diferentes tipos de dados em caches separadas de acordo com a procura. Ao adicionar uma ou várias camadas de cache, pode melhorar significativamente o desempenho do débito e da latência de uma camada de dados.

O Redis é uma popular estrutura de dados dentro da memória open source utilizada para criar camadas de cache de elevado desempenho e outros arquivos de dados. Um estudo recente mostrou que ao adicionar Cache do Azure para Redis a um exemplo de aplicação aumentou o débito de dados em mais de 800 por cento e melhorou o desempenho de latência em mais de 1,000 por cento1.

As caches também podem reduzir o custo total de posse (TCO) de uma camada de dados. Ao utilizar caches para servir as consultas mais comuns e reduzir a carga da base de dados, pode diminuir a necessidade de sobreaprovisionar as instâncias da base de dados, o que resulta numa poupança de custos significativa e num TCO mais baixo.

Tipos de colocação em cache

A sua estratégia de colocação em cache depende de como a aplicação lê e escreve dados. A aplicação tem muitas escritas ou os dados são escritos uma vez e lidos com frequência? Os dados devolvidos são sempre únicos? Os diferentes padrões de acesso a dados influenciam a forma como configura uma cache. Os tipos de colocação em cache comuns incluem cache-aside, leitura/escrita simultâneas e escrita diferida/repetição de escrita.

Cache-aside

Para aplicações com cargas de trabalho com muitas leituras, os programadores utilizam geralmente o padrão de programação "cache-aside" ou "cache secundária". Localizam a cache secundária fora da aplicação, que pode ligar à cache para consultar e obter dados ou diretamente à base de dados se os dados não estiverem na cache. À medida que a aplicação obtém os dados, copia-os para a cache para consultas futuras.

Pode utilizar uma cache secundária para ajudar a melhorar o desempenho da aplicação, manter a consistência entre a cache e o arquivo de dados e evitar que os dados na cache fiquem obsoletos.

Cache de leitura/escrita simultâneas

As caches de leitura simultânea são mantidas atualizadas, mas na colocação em cache de escrita simultânea, a aplicação escreve os dados na cache e, em seguida, na base de dados. Ambas as caches ficam em linha com a base de dados e a aplicação trata-as como arquivo de dados principal.

As caches de leitura simultânea ajudam a simplificar as aplicações em que são solicitados os mesmos dados repetidamente, mas a própria cache é mais complexa, ao passo que o processo de escrita simultânea de dois passos pode criar latência. Os programadores combinam ambas para ajudar a garantir a consistência dos dados entre a cache e a base de dados, reduzir a latência da cache de escrita simultânea e facilitar a atualização da cache de leitura simultânea.

Com a colocação em cache de leitura/escrita simultâneas, os programadores podem simplificar o código da aplicação, aumentar a escalabilidade da cache e minimizar a carga da base de dados.

Cache de escrita diferida/repetição de escrita

Neste cenário, a aplicação escreve os dados na cache, o que é imediatamente confirmado e, em seguida, a cache escreve os dados novamente na base de dado em segundo plano. As caches de escrita diferida, por vezes conhecidas como caches de repetição de escrita, são mais adequadas para cargas de trabalho com muitas escritas e melhoram o desempenho de escrita, uma vez que a aplicação não tem de aguardar que a escrita esteja concluída antes de passar para a próxima tarefa.

Cache distribuída vs. arquivo de sessões

Muitas vezes, as pessoas confundem caches distribuídas com armazenamentos de sessões, que são semelhantes, mas com requisitos e objetivos diferentes. Em vez de utilizar uma cache distribuída para suplementar uma base de dados, os programadores implementam arquivos de sessões, que são arquivos de dados temporários na camada do utilizador, para perfis, mensagens e outros dados em aplicações orientadas para sessões, como as aplicações Web.

O que é um arquivo de sessões?

As aplicações orientadas para sessões controlam as ações que os utilizadores realizam enquanto têm sessão iniciada nas aplicações. Para preservar esses dados quando o utilizador termina sessão, pode mantê-los num arquivo de sessões, o que melhora a gestão de sessões, reduz os custos e acelera o desempenho das aplicações.

Qual a diferença entre utilizar um arquivo de sessões e colocar uma base de dados em cache?

Num arquivo de sessões, os dados não são partilhados entre diferentes utilizadores, ao passo que na colocação em cache, diferentes utilizadores podem aceder à mesma cache. Os programadores utilizam a colocação em cache para melhorar o desempenho de uma base de dados ou instância de armazenamento, ao passo que utilizam arquivo de sessões para aumentar o desempenho das aplicações ao escreverem os dados no arquivo dentro da memória, o que elimina a necessidade de aceder a uma base de dados.

Os dados escritos num arquivo de sessões são normalmente de curta duração, ao passo que os dados colocados em cache através de uma base de dados primária costumam durar muito mais. Um arquivo de sessões requer replicação, elevada disponibilidade e durabilidade de dados para garantir que os dados transacionais não são perdidos e os utilizadores permanecem envolvidos. Por outro lado, se os dados numa cache secundária forem perdidos, existe sempre uma cópia na base de dados permanente.

Benefícios da colocação em cache

Desempenho melhorado das aplicações

A leitura de dados a partir de uma cache dentro da memória é muito mais rápida do que aceder aos dados a partir de um arquivo de dados orientado para discos. Com um acesso mais rápido aos dados, a experiência geral das aplicações melhora significativamente.

Utilização e custos da base de dados reduzidos

A colocação em cache origina menos consultas da base de dados, o que permite melhorar o desempenho e reduzir os custos ao limitar a necessidade de dimensionar a infraestrutura da base de dados e ao diminuir os custos de débito.

Desempenho dimensionável e previsível

Uma única instância de cache pode processar milhões de pedidos por segundo, o que proporciona um nível de débito e escalabilidade que as bases de dados não conseguem igualar. A colocação em cache também oferece a flexibilidade necessária se estiver a aumentar horizontal ou verticalmente as suas aplicações e arquivos de dados. Em seguida, a sua aplicação pode permitir que muitos utilizadores acedam aos mesmos ficheiros simultaneamente, sem aumentar a carga nas bases de dados de back-end. Se uma aplicação enfrentar frequentemente picos de utilização e débito elevado, as caches dentro da memória podem mitigar a latência.

Para que é utilizada a colocação em cache?

Colocação em cache de saída

A colocação em cache de saída ajuda a aumentar o desempenho das páginas Web ao armazenar o código fonte completo das páginas, como os scripts HTML e de cliente que um servidor envia para os browsers para composição. Sempre que um utilizador visualizar a página, o servidor coloca em cache o código de saída na memória da aplicação. Isto permite à aplicação servir os pedidos sem executar o código da página ou comunicar com outros servidores.

Colocação em cache de dados e de bases de dados

A velocidade e o débito da base de dados podem ser fatores fundamentais no desempenho geral das aplicações. A colocação em cache da base de dados é utilizada para chamadas frequentes dos dados que não são alterados com frequência, como dados de inventários e preços. Ajuda os sites e as aplicações a carregarem mais depressa enquanto aumenta o débito e diminui a latência de obtenção de dados das bases de dados de back-end.

Armazenar dados da sessão do utilizador

Geralmente, os utilizadores de aplicações geram dados que têm de ser armazenados por períodos curtos. Um arquivo de dados dentro da memória, como o Redis, é ideal para armazenar de forma eficiente e fiável elevados volumes de dados de sessões, como entrada de utilizador, entradas do carrinho de compras ou preferências de personalização a um custo mais reduzido do que armazenamento ou bases de dados.

Arquiteturas de mediadores de mensagens e publicação/subscrição

Geralmente, as aplicações na cloud precisam de trocar dados entre os serviços e podem utilizar a colocação em cache para implementar arquiteturas de publicação/subscrição ou mediador de mensagens que reduzem a latência e aceleram a gestão de dados.

Aplicações e APIs

Tal como os browsers, as aplicações guardam ficheiros e dados importantes para recarregarem rapidamente essas informações quando for necessário. As respostas da API colocadas em cache eliminam a procura ou a carga nos servidores de aplicações e bases de dados, o que permite ter tempos de resposta mais rápidos e um melhor desempenho.

[1] As alegações relativas ao desempenho baseiam-se nos dados retirados de um estudo encomendado pela Microsoft e realizado pela GigaOm em outubro de 2020. O estudo comparou o desempenho de uma aplicação de teste que utilizava uma base de dados do Azure com e sem a implementação da Cache do Azure para Redis como solução de colocação em cache. No estudo, foram utilizadas como o elemento de base de dados a Base de Dados SQL do Azure e a Base de Dados do Azure para PostgreSQL. Foi utilizada uma instância de Fins Gerais de 5.ª Geração de 2 vCores da Base de Dados SQL do Azure e uma instância de Fins Gerais de 2 vCores da Base de Dados do Azure para PostgreSQL com uma instância Premium P1 de 6 GB do Azure para Redis. Os resultados foram comparados com instâncias de Fins Gerais de 5.ª Geração de 8, 16, 24 e 32 vCores da Base de Dados SQL do Azure e com instâncias de Fins Gerais de 8, 16, 24 e 32 vCores da Base de Dados do Azure para PostgreSQL sem a Cache do Azure para Redis. Os dados de referência foram retirados do Teste Web Application Database Load, da GigaOm, que simula uma aplicação Web comum e uma base de dados de back-end sujeitas a vagas de aumentos de pedidos HTTP. Os resultados reais podem variar consoante a configuração e a região. Consulte o estudo completo.

Conta gratuita

Experimente os serviços de computação na cloud do Azure gratuitamente durante um período de até 30 dias.

Pay as you go

Comece a trabalhar ao optar pelos preços de crédito pré-pago. Não existe compromisso inicial, pelo que pode cancelar a qualquer altura.

Adicione uma camada de colocação em cache ágil à sua aplicação com um serviço de Redis totalmente gerido. Saiba como começar a utilizar a Cache do Azure para Redis.

Se quiser executar uma colocação em cache flexível baseada em ficheiros para aplicações de elevado desempenho, leia sobre o Azure HPC Cache.