Que estructura debo usar para traer una tabla SQL en memoria

Hola!

Ante todo, he leido varios hilos de este foro, y me parecen excelentes las respuestas, por eso decidí registrarme.

Necesito una recomentadación, ya que tengo que traer una tabla de una BBDD que se accede 1 millon de veces al dia y casi no sufre ninguna modificacion durante el dia, y para que la aplicacion sea mas rapida, se me ocurrio traer la tabla en memoria, en alguna estructura, y ahi esta mi duda. No se que estructura utilizar. Lei que se pueden usar Vector, Hashtable, HashMap, Iterator, Array, ArrayList, etc..

Esta tabla tiene 6 columnas un un aproximado de 100 registros nada mas.. y no varia mucho su dimension, mas bien se actualizan algunos datos, poca o casi ninguna vez al dia.

De todas formas, implementare un hilo que me actualice la tabla cada 10 min. Total prefiero que se acceda 144 veces a la tabla, y no 1 millon.

Ustedes que me recomiendan, y si es posible, algun ejemplo de como implementarlo.

Mil gracias! :)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Opciones

Qué características tiene esa tabla? Dices que la leen un millón de veces al día pero no dices cuántos datos se obtienen en cada lectura, o cuántos registros tiene. Si es una tabla con pocos registros, o ese millón de lecturas que hacen son consultas que usan índices y se despachan rápido, no veo el problema. Ya comprobaron realmente que es un cuello de botella en el desempeño de la aplicación? Porque si resulta que no es el problema, vas a trabajar mucho para armar el cache para esa tabla y todo será en vano.

Cuando tienes una tabla con pocos datos que se consultan muy seguido, los DBMS por lo general se dan cuenta y dejan esos datos en un cache en memoria. Algunos DBMS te permiten especificar eso para las tablas que lo necesiten. MySQL por ejemplo puede armar un cache en memoria para las tablas que le indiques.

Lo que propones realmente sólo vale la pena cuando la tabla consultada contiene muchísimos datos o que de plano tu DBMS ya está tan saturada que SABEN (no creen, SABEN) que habrá un beneficio en el desempeño del DBMS si le quitan ese millón de consultas aunque sea a una tabla pequeña.

La aplicación que tienes ya maneja un pool de conexiones a base de datos? O abre una conexión por cada consulta? Porque hay una enorme diferencia entre abrir y cerrar un millón de conexiones a la base de datos, y manejar un pool de tal vez 50 conexiones que se reutilizan constantemente.

Primero intenten todo lo posible por solucionar el problema configurando la base de datos y la aplicación para que tengan un mejor desempeño; una vez que hagan eso y vean que no hay mejoras y que es absolutamente necesario implementar el cache, entonces ya pueden ver qué hacer al respecto, porque hay varias opciones como implementarlo todo desde cero en tu aplicación, o usar memcached para almacenar los datos en memoria (y tu app se vuelve cliente del memcached).