You are on page 1of 11

Ral Uribe C.

Clula .NET Microsoft Corporation

Tutorial: SQL Server Cach Dependency

Lima, Per 2006

Ral Uribe C.

Clula .NET Microsoft Corporation

NDICE
Una pequea historia Y entonces, Qu es Cach Dependency? Ahora s, SQL Server Cach Dependency! En conclusin

Ral Uribe C.

Clula .NET Microsoft Corporation

UNA PEQUEA HISTORIA

Pues veamos...intentar contarte una pequea historia acerca de cmo nuestro amigo (El a veces incomprendido) .NETito, desarrolla un gran foro, y como logra solucionar algunos problemas que se suscitan en el camino. Claro que como fin superior a que conozcas la experiencia de .NETito, est que entiendas qu es y para qu sirve, el no tan nuevo concepto de SQL Server Cach Dependency que trae Comencemos Un verano del 200X, nuestro personaje .NETito se encontraba paseando con una clase abstracta (estaba buena la condenada), al doblar una esquina y ver que era el momento propicio, .NETito la toma entre sus variables y le intenta dar un BESO .NET!! , pero para lstima no se da cuenta que uno de los parmetros del mtodo BESAR() de la clase a la que tanto amaba, era un int32!!..y l sin saber le acababa de pasar un String!!.. busc lo ms rpido que pudo un Catch exception!!... para manejar la excepcinpero lamentablemente nunca lo encontrsu amada se desplom ante l y suspir un ltimo Message.Show(Adis) Luego de esto .NETito se encontraba desoladotena que encontrar alguien que lo mueva y sea motor para l..tanto como lo fue su preciosa Clase Abstractabusc y busc ..hasta que una tardede Color.AliceBlueencontr una Pgina PHP muy bella lo nico malo, es questa PHP, estaba en blanco Parece un amor prohibido, pero eso es lo que lo hace interesante, no crees?

2.0

...y tambin SQL Server 2005.

Ral Uribe C.

Clula .NET Microsoft Corporation

Bueno

.NETito decidi darle un contenido a su pgina en PHP, pero antes de comenzar se da cuenta que le faltaba una idea, es decir, el tema de contenido que iba a darle a su nueva amada. Luego de meses de reflexin decide crear un foro!, y luego de otros largos meses de reflexin decide darle como nombre : La mejor forma de vivir. .NETito no slo quera hacer algo por su amada, sino que estaba interesado en darle algo al mundo a travs de ella Llegado el momento, empieza con el desarrollo .NETito saba que su pgina tena que ser hecha con PHP porque ella se lo dijo, esa era su esenciaas deba ser

Pasados algunos veranos, y muchas desveladas aprendiendo PHP (ya que como entendern .NETito no lo saba) llega a concluir el desarrollo de su amada pgina

Bsicamente haba elaborado una bonita capa de presentacin, una lgica de negocios slida (basada en los principios de un foro) y su capa de datos estaba en base a (que ms?) MySQL

Una vez concluido el trabajo toma la decisin de subir a la red a su amada pgina, cuando se lo comunic ella se emocion mucho, ya que se entender que ste es uno de los mayores sueos de toda pgina Web. Luego de la puesta en marcha de su amada, .NETito diariamente se dedicaba a moderar el foro y a estar al tanto de las estadsticas del mismo, encontrando para su asombro que el nmero de vsitas recurrentes aumentaban en forma exponencial, al ver esto .NETito pens:

"Es sin duda por el tema del foro, la gente siempre anda en bsqueda de la mejor forma de vivir, al ver los mensajes me doy cuenta que muchos piensan que existe una nica forma, mientras que otros dicen saber que cada uno tiene su forma pero lo que no se dan cuenta, es que ambos tienen la razn"

Ral Uribe C.

Clula .NET Microsoft Corporation

.NETito era un tipo medio loco, con muchas dudas existenciales (entre la libertad y lo propietario) a veces slo pensaba en si mismo y buscaba no seguir los estndares para diferenciarse del resto pero muy en el fondoera un buen tipo.

Un da .NETito se percat que exista un mensaje al cual deba responder dirigi el puntero hacia el botn que ejecutaba la acciny luego de dar click y recargarse la pgina .NETito se percat de algo era insoportablemente lenta!!!

Esto nunca haba pasado antes!!..

Espero uno o dos siglos a que la pgina cargue y cuando lo hizoOH Dios Mo!!...existan tantos temas de conversacin en el Foro que .NETito no tena cuando llegar al ltimo!!...bajaba y bajaba a travs de su (ahora reee-gorda) amada pgina inmediatamente se dio cuenta que el nmero de temas se haba convertido en un caso crtico en su pgina

Tena que tomar decisiones frente a lo acontecido

Existan varias soluciones que se le venan a la cabeza una de ellas era crear una agrupacin de los temas...por ejemplo dividirlos en 10 grupos, y que los que carguen al inicio de la pgina sean slo esos 10 temspero luego se percat que igual no solucionara nada ya que cuando el usuario se decida por uno de los 10 grupos igual tendra que esperar a que se carguen una gran cantidad de temas de conversacin, claro que seran menos que los que cargaban inicialmente pero igual eran demasiados para que se pueda dar una carga rpida y fcil de esperar

Y es entonces cuando .NETito se hace una de las ms importantes preguntas (de la cual nace su posterior fama)Que acaso su foro era el nico que exista en la Web?... e inmediatamente encontr la respuesta...NO. l mismo, mucho antes haba participado en foros de diversos temas, as que se imagin (algo que casi siempre es verdad) que la solucin a su problema ya haba sido encontrada por alguien que haba pasado por lo mismo

Ral Uribe C.

Clula .NET Microsoft Corporation

As que decide investigar

Al navegar horas de horas...hasta que le ardan los ojos, encuentra algo que podra ser la solucin...encuentra en concepto de MEMORIA CACH WEB...y digo Web porque el concepto de Memoria Cach viene de antes de Internet, con decirte que es utilizada desde el Procesador hasta el mismo Sistema Operativo...

Me encontr un da con .NETito, l me cont su caso, de esa conversacin es que saco esta pequea historia...tambin me coment que encontr mucha informacin acerca del tema de MEMORIA CACH, decid pedirle que me redacte un artculo en el que me explique en forma de resumen que fue lo que entendi acerca de lo que para l es, la MEMORIA CACH...

Hoy por la maana revisando mi correo, encontr un mail nuevo y en l, dicho artculo enviado por .NETito, l cual se los muestro a continuacin...

"La MEMORIA CACH es un tipo de memoria Dinmica (reescribible en el tiempo) y se caracteriza por ser de muy rpido acceso y de poca capacidad en comparacin con otros tipos de memoria, es decir, se trata de un espacio lgico de almacenamiento de informacin generalmente temporal (voltil) a la cual el sistema (puede ser de cualquier tipo) logre accesar rpida y eficientemente..."

En otras palabras, la Memoria Cach se caracteriza por tener informacin reciente, y que puede ser reutilizada ms de una vez Por lo general, la lgica es la siguiente: T solicitas una informacin, el sistema la busca en Cach, y si no la encuentra, se dirige al repositorio donde debera estar luego de obtenerla (y demorarse ms por supuesto) la almacena en Cach y te la muestra Esto quiere decir, que la segunda vez que solicitas dicha informacin, el sistema la encontrar en Cach y te la mostrar mucho ms rpidamente que en el primer pedido.

Ral Uribe C.

Clula .NET Microsoft Corporation

sta es ms o menos la gran utilidad de la memoria cach En fin Suponiendo que luego de esta breve y concisa explicacin, sigues igual que como empezaste...pos no te asustes!y es que este tutorial est hecho para que a medida que avanzas entiendas cada vez ms y ms Ahora, si te encuentras en la penltima pgina, y sigues sin entender nadaah si preocupate!!...porque eso!, no es normal xD

Volviendo a nuestra ya no tan pequea historia, luego de haber obtenido esta informacin .NETito se percata que bien podra servirle este concepto de MEMORIA CACH, partiendo del hecho que se trata de informacin muy a la mano y que por ende, podra ser mostrada a velocidades inimaginables :D (un poquito exagerado pero con cierto grado de verdad)

Bueno, decide implementar su idea, para esto tuvo que ahondar mucho ms en el tema. Encuentra que en realidad (a nivel Web) existen dos tipos de memorias Cach : La del Cliente y la del Servidor

Es decir, existe una memoria cach en la mquina del usuario (Cliente), la cual es utilizada por el navegador para mostrar pginas ya visitadas, las cuales fueron almacenadas en cach. Y existe una memoria cach a nivel del Servidor, en la cual el servidor almacena informacin (pueden ser pginas u otras cosas) que fueron visitadas por algn usuario y luego las muestra mucho ms rpidamente que la primera visita

.NETito entiende entonces, que l como administrador (y amante) de su pgina puede trabajar sobre la Cach del Servidor, es ah donde se encuentra su rango de accin!!...

Ral Uribe C.

Clula .NET Microsoft Corporation

La idea sera configurar el Servidor para que almacene su pgina (en Cach) lgicamente desde la primera visita y luego para mostrarla a otra visita (2da, 3ra, etc) slo tendra que ir hacia la cach y mostrarla

Se tom varias semanas pero lo pudo hacer, no viene al caso como pero de que lo hizo, eso jrenlo!

Luego de implementada la mejora en su servidor, .NETito se da cuenta de algo en lo que no haba pensado fue recostado en su cama, luego de una noche de copas, una noche loca Lo que hizo fue imaginarse la siguiente escena Un usuario visitaba su pgina y al solicitarle al servidor la misma, ste la encontraba en Cach, as que se la mostraba ms rpido de lo usual, hasta all todo andaba bieny si este usuario slo se dedicara a leer mensajes y respuestas pues todo segua bienel problema estaba en si este usuario responda o si creaba algn tema de conversacin, al momento de crearlo no iba a existir ninguna limitacin, pero si este u otro usuario entraban luego al foro, ste iba a volver a ser cargado de la Cach, y entonces sera mostrado como antes, sin la creacin del nuevo tema ni la respuesta acabada de hacer Es decir, la memoria en Cach es guardada como una foto, entoncescuando la pgina era mostrada de la Cach, el servidor no viajaba hasta la Base de Datos, esto quiere decir que no se mostraba la informacin real, existente en las tablas de la base de datos, casi siempre se mostraba informacin desfasada y de algunas horas (o incluso das) anteriores ste s que era un problemay Es aqu donde entra en escena Cach Dependency

Ral Uribe C.

Clula .NET Microsoft Corporation

Y entonces, Qu es Cach Dependency?


No es ms que una lgica agregada a la Memoria Cach, es decir, se trata de de hacer depender la existencia de la informacin en Cach de alguna entidad, accin, evento, etc. Que se pueda dar en alguna otra parte tal como una Base de datos por ejemplo

La idea es que si bien es cierto que tu informacin en Cach puede ser mostrada velozmente en comparacin con otros tipos de almacenamiento disponibles, sta puede resultar muchas veces intil, ya que uno de los principios de Internet, es mostrar informacin vers en tiempo real (o al menos tender a eso)

Es por esto que nace el concepto de Dependencia de la Cach en otras palabras, y ponindolo como el pensamiento de .NETito

Si todos mis usuarios slo visitaran mi foro para leer mensajes y respuestas, pues no tendra que actualizar nunca mi memoria Cach, esto (actualizar) se hace necesario slo en el caso que alguien cree un nuevo tema de conversacin o responda a alguna pregunta, es decir, cuando la informacin en mi Base de Datos cambie

Entonces se podra pensar, que lo ptimo es que mi Memoria Cach dependa de la modificacin o insercin de informacin en mi Base de Datos, o en ltimo caso, que la volatilidad de la Cach est en funcin a la volatilidad de la data en mi BD

Ral Uribe C.

Clula .NET Microsoft Corporation

Ahora s, SQL Server Cach Dependency!


Pues es exactamente esto, lo que trae el motor de Base de Datos SQL Server 2005 Y esta dependencia se da con la Cach configurada a travs de ASP .NET 2.0!!... Qu quiere decir esto? Qu diablos es ASP .NET 2.0?? y Qu diablos es SQL Server 2005?? Bueno, la idea sera que lo investigues, seguro muy pronto tendr tutoriales muy educativos acerca de esos temas pero para que no desesperes ASP .NET 2.0 Plataforma (Conjunto de Herramientas, Aplicaciones, etc.) utilizada para la creacin de pginas webs con mucha lgica por debajo, es decir, Aplicaciones Webs SQL Server 2005 Permite administrar, analizar y controlar la informacin almacenada en tablas a travs del lenguaje Transact SQL (T-SQL) Bueno, de que se trata esto?... La idea ya fue dada, pero ser mejor esclarecerla con un fin didctico Pues que pasa aqu, tienes tu aplicacin creada en ASP .NET 2.0, y mediante una serie de comandos, palabras claves y preparaciones , puedes crear un lazo entre tu aplicacin y tu Base de datos (incluso tabla) creada en SQL Server 2005 Este lazo cumplir la funcin de comunicar a uno con otrosolucionando el problema de dependencia de Cachde la siguiente manera

Ral Uribe C.

Clula .NET Microsoft Corporation

Una vez configurada tu BD, sta se encuentra en capacidad de alertar a tu aplicacin cada vez se produzca una modificacin (de cualquier tipo) en una o ms de sus tablas De esta manera la aplicacin puede borrar lo almacenado en Cach y refrescarlo, con esto se consigue tener siempre la informacin actual en Cach

En conclusin
En conclusin ASP .NET 2.0 trae conceptos novedosos que deberan ser tomados en cuentas por los desarrolladores en lugar de siempre volver a la misma y anticuada forma de solucin. SQL Server Cach Dependency es realmente til para aplicaciones web de mucha concurrencia y con un nivel de cambio medianamente dinmico, es por esto que se hace necesario el anlisis acerca de si es o no viable utilizarlo para nuestro contexto.

You might also like