Por que é necessario cache...  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
jva
Smalltalk

Membro desde: 03/10/2008 19:14:33
Mensagens: 1
Offline

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

This message was edited 2 times. Last update was at 05/10/2008 09:36:50

moacirjava
Virtual Machine Man
[Avatar]

Membro desde: 11/01/2008 11:31:08
Mensagens: 655
Localização: Minas Gerais
Online

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.

"Para conseguir algo que você nunca teve, precisa fazer algo que nunca fez."

Analista de Sistemas.
SCJP 5


bzanchet
Java Ninja

Membro desde: 18/05/2006 20:04:34
Mensagens: 256
Offline

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).

http://conceitua-se.blogspot.com/
[WWW] [MSN]
renzonuccitelli
GUJ Master

Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline

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.

Renzo Nuccitelli

Engenheiro de Computação - ITA

http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

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

Sun Certified Java Programmer 5.0
[WWW]
bzanchet
Java Ninja

Membro desde: 18/05/2006 20:04:34
Mensagens: 256
Offline

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

http://conceitua-se.blogspot.com/
[WWW] [MSN]
saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2661
Localização: Chicago, EUA
Offline


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.

Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
renzonuccitelli
GUJ Master

Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline

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


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.

Renzo Nuccitelli

Engenheiro de Computação - ITA

http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team