Significado da colocação em cache
A colocação em cache mantém na memória cópias reutilizáveis de dados acedidos com frequência, para que as aplicações evitem chamadas repetidas à base de dados e devolvam resultados mais rapidamente.
A colocação em cache mantém na memória cópias reutilizáveis de dados acedidos com frequência, para que as aplicações evitem chamadas repetidas à base de dados e devolvam resultados mais rapidamente.
A colocação em cache consiste em armazenar dados de chave-valor na memória temporária (por exemplo, numa base de dados (NoSQL) de linguagem SQL (Structured Query Language) não relacional) para que as aplicações consigam obtê-los mais rapidamente do que a partir do armazenamento convencional. Nas arquiteturas de armazenamento na nuvem, em que os pedidos atravessam frequentemente redes e acedem a serviços partilhados, a colocação em cache pode ajudar a manter tempos de resposta reduzidos e a diminuir o trabalho repetido.
A maioria dos sistemas mantém uma "fonte fidedigna" durável (uma base de dados) para os conjuntos de dados completos e, em seguida, mantém uma cache para subconjuntos temporários que são lidos com frequência. Quando chega um pedido, a aplicação verifica primeiro a cache; se os dados estiverem disponíveis, devolve-os rapidamente sem voltar a consultar o back-end. Os programadores também colocam dados processados em cache e reutilizam-nos para processar pedidos mais rapidamente do que com consultas padrão a bases de dados relacionais, bases de dados SQL ou bases de dados PostgreSQL open-source.
Os bons candidatos incluem dados lidos repetidamente e dados que mudam com pouca frequência, como informações sobre produtos e preços ou recursos estáticos partilhados cuja criação é dispendiosa.
Se uma operação transformar dados ou efetuar um cálculo complexo, a colocação do resultado em cache pode evitar que o mesmo seja recalculado para pedidos posteriores.
Os programadores utilizam caches de vários níveis ("camadas de cache") para armazenar diferentes tipos de dados em caches separadas consoante a procura. Adicionar uma ou mais camadas de cache pode melhorar o débito e a latência numa camada de dados.
Os arquivos na memória são frequentemente utilizados para conservar, durante períodos curtos, volumes elevados de dados de sessão, como entrada de utilizador, itens do carrinho de compras ou preferências de personalização. Nas aplicações com estado, as equipas também armazenam o estado de sessão na cache para que a camada da aplicação possa permanecer sem estado.
A colocação em cache pode melhorar o desempenho de várias formas concretas:
Em muitas arquiteturas de cloud, uma cache fica junto de um arquivo de dados principal, como uma base de dados. O arquivo principal contém o conjunto de dados completo e durável no servidor cloud, ao passo que a cache mantém um subconjunto mais reduzido e temporário, cuja leitura é mais rápida.
Uma configuração comum consiste numa camada de cache autónoma ou numa cache existente na camada da aplicação ou da base de dados, escolhida consoante o local onde são necessárias leituras rápidas.
Alguns sistemas utilizam colocação em cache de vários níveis ("camadas de cache"), para que diferentes tipos de dados residam em caches distintas consoante a procura. Adicionar uma ou mais camadas de cache pode melhorar o débito e a latência da camada de dados e reduzir o custo global ao diminuir a carga no back-end.
Normalmente, as equipas colocam em cache dados que se enquadram em alguns registos:
Existem várias formas padrão de as aplicações lerem dados da cache e escreverem dados na mesma. Conheça os padrões mais comuns e o respetivo significado na prática.
Utilizar camadas de cache pode melhorar o débito e a latência ao processar pedidos comuns a partir da cache, em vez de consultar repetidamente o arquivo do back-end. Esta abordagem pode reduzir a necessidade de dimensionar a infraestrutura de bases de dados, porque, à partida, chegam menos pedidos à base de dados.
Nas aplicações com picos de utilização, as caches na memória podem ajudar a atenuar a latência ao manter os dados pedidos com frequência próximos do local onde são utilizados.
Utilize estas opções como ponto de partida ao escolher um fluxo de trabalho:
A colocação em cache melhora o desempenho das aplicações porque a leitura a partir de uma cache na memória é mais rápida do que a leitura a partir de um arquivo de dados em disco. Quando são processados mais pedidos a partir da cache, os sistemas enviam menos consultas às bases de dados do back-end, o que pode reduzir a necessidade de dimensionar a infraestrutura de bases de dados e diminuir os custos associados.
A colocação em cache ajuda a reduzir o trabalho repetido. Os dados lidos repetidamente ou cuja criação é dispendiosa podem ser armazenados uma vez e reutilizados. Se uma operação efetuar um cálculo complexo ou transformar dados, colocar o resultado em cache reduz os cálculos repetidos nos pedidos posteriores.
Muitos sites colocam em cache o resultado da página, como HTML e scripts de cliente, para que o servidor possa devolver o resultado em cache em vez de voltar a executar sempre o código da página. A colocação em cache também dá suporte a cenários de multimédia Web através de caches Web e da colocação em cache na rede, como as redes de entrega de conteúdos (CDNs).
As aplicações armazenam frequentemente subconjuntos temporários de dados numa cache para permitir uma obtenção rápida, enquanto a base de dados primária conserva o conjunto de dados completo e durável. Ao colocar dados processados em cache e reutilizá-los, é possível processar pedidos mais rapidamente do que com consultas padrão à base de dados.
As equipas adicionam frequentemente uma ou mais camadas de cache para melhorar o débito e a latência, ao processar consultas comuns a partir da cache e reduzir a carga da base de dados. As caches na memória podem ajudar quando a utilização aumenta subitamente e os requisitos de débito aumentam, ao atenuar a latência durante esses períodos.
A colocação em cache é frequentemente utilizada para armazenar volumes elevados de dados de sessão de curta duração, como entrada de utilizador ou preferências de personalização, num arquivo na memória. Algumas equipas também armazenam o estado de sessão na cache para que as aplicações com estado possam manter a camada da aplicação sem estado. Nos sistemas de operações, os dados que mudam com pouca frequência, como informações sobre produtos e preços, são um alvo comum da colocação em cache.
Uma cache do browser armazena cópias de recursos estáticos no dispositivo do utilizador, para que, em visitas posteriores, seja possível reutilizar esses ficheiros em vez de os transferir novamente.
A colocação em cache do lado do servidor ocorre nos processos que executam serviços empresariais remotamente, e não no dispositivo do utilizador final. As caches do lado do servidor são frequentemente privadas (locais numa única instância de aplicação) ou partilhadas (utilizadas por várias instâncias de aplicação).
Uma CDN coloca conteúdo em cache em servidores periféricos mais próximos dos utilizadores finais, para que os pedidos nem sempre tenham de regressar ao servidor de origem. Ao contrário de uma cache do browser, utilizada por um único utilizador, uma cache da CDN é partilhada: o pedido de um utilizador pode povoar a cache com conteúdo que outro utilizador receberá mais tarde.
A colocação em cache não é apenas um padrão de computação na cloud; as camadas de hardware e memória também a utilizam.
A cache da CPU é uma área de memória pequena e rápida, próxima do processador ou integrada no mesmo, que armazena cópias de dados e instruções utilizados com frequência para reduzir o tempo que o processador passa a aguardar pela memória principal.
A cache de memória (na memória) é o tipo mais simples de cache de software: um arquivo na memória mantido no espaço de endereços de um único processo e acedido diretamente por esse processo.
Uma cache distribuída abrange vários servidores, o que permite aumentar a cache e a capacidade transacional para além de um único computador. Muitos serviços de cache partilhada utilizam um cluster de servidores e distribuem os dados em cache pelo cluster; dimensionar a cache pode ser tão simples como adicionar mais servidores. Algumas arquiteturas distribuídas também utilizam camadas de cache, para que uma falha de acerto numa camada solicite os dados a um fornecedor a montante e, em seguida, armazene o resultado localmente para o pedido seguinte.
A colocação em cache mantém os dados acedidos com frequência mais próximos do local onde são utilizados, o que pode melhorar os tempos de resposta e ajudar um sistema a processar mais pedidos simultâneos. Também pode reduzir a contenção no arquivo de dados original, por exemplo, quando uma base de dados tem um número limitado de ligações.
Nas aplicações distribuídas, a colocação em cache ocorre frequentemente em mais do que um local: do lado do cliente, como num browser, e do lado do servidor, numa aplicação ou num serviço de cache partilhada.
Comece de forma simples e concentre-se nos dados que proporcionam um retorno mais evidente:
Normalmente, uma cache contém cópias dos dados de um arquivo principal, pelo que é necessário ter em conta a recência:
A colocação em cache é um bloco modular essencial dos sistemas modernos, porque se adapta a muitas arquiteturas: serviços individuais, aplicações distribuídas e entrega na periferia. Para obter uma cache gerida na memória de um fornecedor de cloud, explore o Azure.