| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 09:35:58
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 10:02:03
|
moacirjava
Virtual Machine Man
![[Avatar]](/images/avatar/7cc273e8acc02886b2c4c65da1a74663.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 12:17:42
|
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 13:45:44
|
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/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 19:39:20
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 20:03:22
|
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2008 20:38:53
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2008 00:09:40
|
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/
|
|
|
 |
|
|