SQL Server: ¿base de datos separada para informes?


19

En nuestro servidor SQL, tenemos una base de datos para cada una de nuestras aplicaciones web. Para los informes, utilizamos Reporting Services y todos los datos del informe (incluidos los parámetros del informe) provienen de procedimientos almacenados.

Los procedimientos almacenados están en la misma base de datos que los datos del informe. Entonces, por ejemplo, los procesos que sirven los informes de Stock están en la base de datos de Stock. Algunos informes muestran información de más de una base de datos y luego el proceso estará en una de esas bases de datos de origen. Los parámetros del informe obtienen sus datos de procesos en una base de datos Enterprise que tiene datos como tiendas, empleados, etc.

Esto significa que todos los informes tienen al menos una conexión a la base de datos Enterprise y otra conexión a otra base de datos, y a veces más que eso.

Mi pregunta es: ¿hay un beneficio de mover los procesos de informes a una base de datos "Informes" separada . Conozco los beneficios de mover informes a otro servidor y no estoy hablando de eso, esto sería en el mismo servidor.

Las cosas que pueden afectar esto son:

  • ¿Tener más de una conexión de base de datos para un informe afecta la velocidad del informe?
  • ¿Tener el proceso de informes en una base de datos separada de los datos nos impediría usar vistas indexadas?
  • ¿Le ha resultado más fácil / difícil administrar sus informes en una base de datos separada?

Por favor dejame saber lo que tu piensas.


Mis preguntas son: cuando mueve el RS y / o el DW a otro servidor, ¿tiene un motor de base de datos existente en estos (estos) nuevos servidores? o estás usando el motor de base de datos original? - Entonces, ¿tiene que tener un motor de base de datos separado para todos los servidores SQL? Gracias, - Dom

Sí, tenemos un motor de base de datos separado en cada servidor: servidor db y servidor DW. Desde que hicimos la pregunta, nos hemos mantenido con nuestro diseño original de mantener los informes en la misma base de datos (y, por lo tanto, en el mismo servidor) que los datos de origen. También movemos los datos a un servidor de depósito de datos donde los usuarios acceden a través de cubos de SQL Server Analysis Services.

Respuestas:


17

La respuesta es: sí, hay un beneficio en hacerlo. Los informes sobre la base de datos operativa utilizarán muchos recursos e interferirán con el rendimiento del sistema operativo. Recuerde que el rendimiento de la base de datos está sujeto a restricciones mecánicas (cabezales de disco que se mueven hacia adelante y hacia atrás y latencia rotacional mientras esperamos que el sector correcto aparezca debajo del cabezal). Tiene dos amplias opciones para una estrategia de informes:

  1. Replica tu base de datos en otro servidor y mueve los sprocs de informes a ella. Los informes se ejecutan fuera del servidor replicado. Este es el menor esfuerzo y puede reutilizar sus informes existentes y los procedimientos almacenados.
  2. Cree un almacén de datos que consolide los datos de sus sistemas de producción y los transforme en un formulario que sea mucho más amigable para los informes . Si tiene una gran cantidad de informes estadísticos ad-hoc que podrían hacerse de manera aceptable desde una instantánea a partir del 'cierre de negocios ayer', un almacén de datos podría ser el mejor enfoque.

La construcción de un almacén de datos y el aprovechamiento de tecnologías como OLAP donde tiene sentido aumenta sus opciones para proporcionar informes rápidos y confiables con el menor impacto posible en el sistema de procesamiento de transacciones.

2

Creo que depende mucho del tipo de SP que estés ejecutando. Si son pesados ​​y podrían afectar otras cosas que se ejecutan en el servidor de base de datos, los movería. De lo contrario, trataría de mantenerlo cerca de la base de datos sobre la que informan, si es mucho más fácil de mantener y realizar un seguimiento. Simplemente tener el informe cerca de la base de datos real también podría afectar el rendimiento, pero si está en una configuración estándar y no mueve una gran cantidad de datos, supongo que sería una pequeña diferencia.

También he encontrado útil este artículo.


1

Recomiendo no trasladar los procedimientos almacenados a otra base de datos por varias razones. Desde una perspectiva de desarrollo, debe reproducir dos bases de datos cada vez que desee realizar modificaciones. Como consecuencia, ahora aprenderá a sincronizar el esquema de la base de datos de "datos" y los procedimientos almacenados del segundo con las versiones de producción. En lo que respecta a la recuperación ante desastres y la copia de seguridad / restauración, ahora debe preocuparse por la restauración de 2 bases de datos solo para que su sistema esté en funcionamiento.

Al probar también ha agregado complejidades. Tendrá más puntos de falla con respecto a permisos, versiones, etc. Ahora, si tiene más de 1 persona trabajando en diferentes iniciativas en la (s) base (s) de datos, tendrá más tiempo para coordinar esfuerzos. Ahora imagine que son las 3 am, el sistema está inactivo y debe buscar los permisos en todas las bases de datos, y debe asegurarse de que nadie haya dejado una función o procedimiento en la base de datos incorrecta durante el desarrollo.


1

Te recomiendo que uses dos bases de datos.

Obtener informes de una base de datos 'en vivo' causa problemas de rendimiento.

Además, dado que la base de datos de informes es principalmente para búsquedas, puede personalizar los índices aquí para un mejor rendimiento. (La base de datos en vivo tendría inserciones que se verían afectadas negativamente por ciertos índices)


0

Otro enfoque es mover las tablas de informes a esquemas separados y grupos de archivos separados. Los archivos en el grupo de archivos de informes podrían alejarse de los discos duros de datos. Esto parece mucho más fácil para la administración, el desarrollo futuro y la gestión de acceso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.