Sincronización de base de datos unidireccional

Con frecuencia, existe la necesidad de sincronizar datos de tablas maestras en una base de datos para clonar tablas en otras bases de datos, a menudo en otros servidores. Por ejemplo, considere el caso en el que un sistema backend gestiona los datos de inventario y que los datos de inventario en última instancia deben enviarse a una o más bases de datos que forman parte de una aplicación de sitio web.

Los datos de origen en el sistema backend están muy normalizados, con docenas de tablas y restricciones de clave externa. Es un sistema OLTP RDBMS bien diseñado. Muchas de las tablas en cuestión contienen millones de filas. La necesidad es llevar estos datos a las otras bases de datos con regularidad. Tan frecuentemente como sea posible; La latencia puede ser tolerada. Por encima de todo, el tiempo de funcionamiento máximo de las bases de datos remotas y remotas es imperativo.

Estoy utilizando SQL Server y estoy familiarizado con el seguimiento de cambios, la conversión de filas, los desencadenadores, etc. Sé que Microsoft empuja la replicación, SyncFx y SSIS en gran medida para estos escenarios. Sin embargo, existe una gran diferencia entre los informes técnicos de los proveedores y las descripciones generales que recomiendan las tecnologías y la implementación, implementación y mantenimiento reales de la solución. En el mundo de SQL Server, la replicación a menudo se ve como la solución llave en mano, pero estoy tratando de explorar soluciones alternativas. (Existe cierto temor de que la replicación sea difícil de administrar, hace que sea difícil cambiar el esquema y, en caso de que se requiera una reinicialización, habrá un gran tiempo de inactividad para los sistemas críticos).

Hay muchas trampas. Debido a las complejas relaciones de clave externa entre un gran número de tablas, determinar el orden para realizar capturas o aplicar actualizaciones no es trivial. Debido a los índices únicos, dos filas pueden estar interbloqueadas de tal manera que la actualización de una fila a la vez no funcionará (es necesario realizar actualizaciones intermedias en cada fila antes de la actualización final). Estos no son necesariamente bloqueadores de programas, ya que los índices únicos a menudo pueden cambiarse a índices regulares y las claves externas pueden deshabilitarse (aunque deshabilitar las claves externas es extremadamente indeseable). A menudo, escuchará, "solo" use el seguimiento de cambios de SQL 2008 y SSIS o SyncFx. Este tipo de respuestas realmente no hacen justicia a las dificultades prácticas. (Y, por supuesto, los clientes realmente tienen dificultades para comprender cómo copiar la información podría ser tan difícil, ¡empeorando una situación difícil!)

Este problema es, en última instancia, muy genérico: realice la sincronización unidireccional de muchas tablas de bases de datos muy relacionadas con muchas filas. Casi todos los involucrados en las bases de datos tienen que lidiar con este tipo de problema. Los informes son comunes, la experiencia práctica difícil de encontrar. Sabemos que esto puede ser un tema difícil, pero el trabajo debe hacerse. Escuchemos lo que ha funcionado para usted (y qué evitar). Cuenta tu experiencia con productos de Microsoft o productos de otros proveedores. Pero si personalmente no ha probado la solución de batalla con un gran número de tablas y filas muy relacionadas, no conteste. Mantengamos esto práctico, no teórico.

Respuestas a la pregunta(1)

Su respuesta a la pregunta