Por que é necessario cache

Por que é necessario cache em um sistema que utiliza banco de dados?

Olha, em BD eu não sei te explicar não, mas o funcionamento de caches no geral é economizar tempo, tráfego de informações por uma rede ou minimizar acesso a determinadas áreas de memória.

Não é necessário.
Mas é bastante comum simplesmente porque o acesso ao BD tem um custo muito alto, e implementar um esquema de cache é relativamente simples (economiza-se uma boa quantidade de recursos com um investimento bem pequeno).

Na arquitetura atual de computadores, a mémoria possui uma hirerquia mais ou menos assim-> Registradores->Cache 1 -> Cache 2-> Ram -> HD ou outra memória não volátil. Quanto maior a hieraquia da memória, maior sua velocidade, mas tb maior o seu custo (basta ver que um pente de 2 GB de Ram pode ser mais caro que um HD de 160 GB). Quando vc precisa de um dado, o computador primeiro ve se ele está nos registradores, se não achar, procura na cache 1, se não achar, na cache 2 e assim por diante. Quanto mais ele se aprofunda na busca, maior o tempo que vc espera.
Dada essa introdução, os dados do seu BD ficam no HD. Para melhorar o desempenho, o que vc faz é deixar os dados que vc mais usa na memória Ram e caches, para evitar coonsultas ao HD, que levariam muito tempo. Como essas memórias não aguentam ficar com todos os dados, então vc procura deixar os dados que serão mais acessados.
O próprio SO faz coisa parecida, seguindo o princípio da localidade espacial e temporal, deixando na memória as coisas que acha que vc usa mais.
Se quiser saber mais, procure no Google por sistema preditor, acho que esse é o nome.
Espero ter contribuido.

Se compreendi bem,

a questão é: por quê é necessário cache em sistemas que utilizam banco de dados?

Se você desenvolver sistemas para web, como recomenda as “boas práticas”, então a escalabilidade do sistema estará relativamente garantida. Ou seja, se o sistema for web é relativamente fácil criar cluster de aplicações.

Infelizmente, mesmo você utilizando o Oracle e tendo muito hardware, está escalabilidade não é tão simples assim… Para você conseguir 500 usuários simultâneos no Oracle, a sua máquina terá que ter muita memória e muito IO de disco.

Para se conseguir 2048 usuários com o apache, basta um pczinho…

Compreendeu onde está o ganho? Observe outro ponto, das ações que normalmente são executadas no sistemas, qual o percentual de consultas x o percentual de alterações nos dados?

Os cache asseguram um maior número de usuários simultaneamente conectados, sem você (necessariamente) ter o mesmo número de conexões na camada de banco de dados.

fw

cruzes, o que vocês têm contra respostas simples?!

Acesso a banco pode ser custoso e lento sob uma carga pesada de acesso.

Ou vc investe grana e tecnologia numa infra de banco, com cluster, máquinas parrudas, etc. ou vc faz um cache para desafogar o banco.

Uma das primeiras respostas foi bem simples, acho legal compartilhar os conhecimentos que temos de forma mais completa por 3 motivos, nesse casa:

  1. Já que uma resposta simples foi dada, se o leitor achar suficiente para suas necessidades, não precisa ler as outras.
  2. Acho que as vezes é bom entender as coisas ao fundo, para evitar ficar repetindo as coisas que sem entender direito a razão.
  3. Alguém pode corrigir a visão que tenho sobre as coisas, me permitindo formar outra opinião, caso chegue a conclusão que minha visão estava equivocada.

Em particular essa última, é a razão principal, pois já aconteceram ocasiões como essa várias vezes, até aqui no forum.
Deixo claro que apenas estou respondendo numa boa o tópico.