Compartir a través de


Almacenar DataSets en memoria caché en caso de utilizarlos

Otra forma de optimizar la escalabilidad en un proyecto de Crystal Reports para Visual Studio consiste en almacenar en la memoria caché todos los DataSets que se utilicen en el proyecto.

Cuándo utilizar un DataSet

Como se menciona en la sección anterior, los DataSets son útiles cuando:

  • Es necesario modificar datos incluidos en el DataSet tras ejecutar la consulta.
  • Es necesario combinar datos de diversos orígenes.
    Nota

    Los DataSets son una representación XML de datos, normalmente procedentes de una base de datos. Un DataSet no es equivalente a una sola tabla de una base de datos, sino a un grupo de tablas. Esto plantea un problema de escalabilidad potencial para los informes. Si un informe recupera varias tablas en un DataSet y se requiere una combinación entre dichas tablas, el informe debe realizar el procesamiento de combinación al interactuar con cada una de las tablas por separado. Éste no es un proceso eficaz. Es mejor ubicar las instrucciones de combinación en la consulta que se utilice para llenar el DataSet. Como resultado se crea una 'pseudo-tabla' simple de datos precombinados en el DataSet, lo que exime al informe de centrarse en la presentación de los datos.

Cómo almacenar en caché un DataSet

Los DataSets se convierten en una herramienta de escalabilidad más útil aún si se almacenan en la memoria caché. Las razones son las siguientes:

Al cargar un informe en tiempo de ejecución, el motor de informes de Crystal Reports intenta agrupar las conexiones de base de datos. Por ejemplo, si tres usuarios visitan la misma página ASPX con el mismo informe, una única conexión de base de datos agrupa las tres consultas. Sin embargo, la consulta en sí no se agrupa. Aunque la consulta sea idéntica en los tres casos, ésta se debe realizar cada vez que se solicita un informe al motor de informes. En el caso de una consulta lenta o de un gran conjunto de datos, este tipo de consulta por usuario puede convertirse en el cuello de botella de una aplicación.

Realizar esta misma consulta por usuario varias veces para llenar de forma redundante un DataSet sería aún peor debido al trabajo adicional de la memoria.

Para reducir el número de consultas a la base de datos, coloque el DataSet en el objeto ASP.NET Cache después de la primera consulta, de forma que todas las tareas de informe compartan el DataSet único en la caché.

Nota

La información sobre cómo almacenar en caché el DataSet se encuentra en el apéndice a este tutorial.

Vea también