none
Realizar consultas a Base de datos Espejo RRS feed

  • Pregunta

  • Estimados.

    Quisiera saber si existe la posibilidad de por realizar una consulta a una base de datos espejo.

    Para dar un poco más de información. tengo una aplicación que consume datos de otro sistema, pero estos están en físicamente en lugares distintos. El ETL que tenemos entre ellos demora unas 3 horas, pero cuando ambas bases de datos están locales no demora más de 10 minutos.  Por esto nos gustaría replicar la base de datos físicamente donde está el sistema y que luego el ETL Consuma los datos localmente.

    lunes, 12 de febrero de 2018 14:39

Respuestas

  • Cuando dices "espejo", me imagino que no te refieres al antiguo espejo del 2008 que ya está obsoleto, sino al moderno secundario con Always On. Eso funcionaría, y efectivamente puedes enviarle consultas al secundario en modo solo-lectura. Pero es una configuración cara, y además tendrías que configurarlo en modo asíncrono para que no te enlentezca el servidor principal, dado que sería un secundario remoto y que la conexión no es muy rápida por lo que comentas.

    Habría una solución más simple, que es usar replicación. Simplemente, añade una réplica de las tablas deseadas en el servidor remoto, y haz que el ETL lea desde la réplica.

    Otra opción es usar Log-Shipping. Configúralo para que se envíe el Log y se restaure un poquito antes de la hora del ETL, y haz que el ETL lea desde la base de datos restaurada a partir del Log.

    Ninguna de estas dos soluciones mantiene los datos tan actualizados como el espejo, pero dado que solo los quieres para ejecutar el ETL, no se necesita que estén actualizados hasta el último momento, y estas alternativas resultan más baratas y sencillas de implementar.

    lunes, 12 de febrero de 2018 17:26

Todas las respuestas

  • Cuando dices "espejo", me imagino que no te refieres al antiguo espejo del 2008 que ya está obsoleto, sino al moderno secundario con Always On. Eso funcionaría, y efectivamente puedes enviarle consultas al secundario en modo solo-lectura. Pero es una configuración cara, y además tendrías que configurarlo en modo asíncrono para que no te enlentezca el servidor principal, dado que sería un secundario remoto y que la conexión no es muy rápida por lo que comentas.

    Habría una solución más simple, que es usar replicación. Simplemente, añade una réplica de las tablas deseadas en el servidor remoto, y haz que el ETL lea desde la réplica.

    Otra opción es usar Log-Shipping. Configúralo para que se envíe el Log y se restaure un poquito antes de la hora del ETL, y haz que el ETL lea desde la base de datos restaurada a partir del Log.

    Ninguna de estas dos soluciones mantiene los datos tan actualizados como el espejo, pero dado que solo los quieres para ejecutar el ETL, no se necesita que estén actualizados hasta el último momento, y estas alternativas resultan más baratas y sencillas de implementar.

    lunes, 12 de febrero de 2018 17:26
  • Ahora bien, si te refieres al espejo de MIRRORING (2008), puedes crear en tu nodo secundario una base de tipo instantanea (snapshot) y accederla de solo lectura.
    miércoles, 14 de febrero de 2018 17:59