MongoDB ofrece la flexibilidad de normalizar o duplicar los datos para optimizar la aplicación. Si duplicas los datos en el esquema, debes decidir cómo mantener los datos duplicados coherentes en varias colecciones. Algunas aplicaciones requieren que los datos duplicados sean coherentes de inmediato, mientras que otras aplicaciones pueden tolerar la lectura de datos obsoletos.
Casos de uso
Hay varias formas de asegurar la coherencia de los datos en tu aplicación:
Método | Descripción | Impacto en el rendimiento | Caso de uso |
|---|---|---|---|
Las actualizaciones de varias colecciones se producen en una sola operación atómica. | Potencialmente alto debido a contención de lectura | Tu aplicación siempre debe devolver datos actualizados y puedes tolerar un posible impacto negativo en el rendimiento durante períodos de lecturas intensas. | |
Modifique el esquema de la aplicación para incrustar los datos relacionados en una sola collection. | De bajo a moderado, según el tamaño del documento y los índices | Su aplicación siempre lee y actualiza los datos relacionados al mismo tiempo. Esta solución simplifica su esquema y evita la necesidad de... | |
Cuando se produce una actualización en una colección, los desencadenadores actualizan automáticamente otra colección. | De bajo a moderado, con posibles retrasos en el procesamiento de los eventos desencadenados | Su aplicación puede tolerar la lectura de datos ligeramente obsoletos. Los usuarios pueden ver datos obsoletos si ejecutan una consulta inmediatamente después de una actualización, pero antes de que el desencadenar termine de actualizar la segunda colección. |
La mejor manera de aplicar la coherencia de los datos depende de tu aplicación. Para aprender más sobre los beneficios y la implementación de cada enfoque, consulta las páginas de la documentación correspondiente.
Tareas
Para asegurar la coherencia de los datos en tu aplicación, consulta las siguientes páginas:
Detalles
Los siguientes factores pueden afectar la forma en que puedes aplicar la coherencia de los datos.
Obsolescencia de los datos
Analiza la importancia de que tu aplicación devuelva los datos más actualizados. Algunas aplicaciones pueden devolver datos que son minutos u horas obsoletos sin que afecten al usuario.
Por ejemplo, en una aplicación de comercio electrónico, un usuario necesita saber de inmediato si un artículo está disponible o no. Lo ideal es que esta información se mantenga lo más coherente posible, aunque necesite actualizarse con frecuencia.
Por el contrario, normalmente se espera que los queries analíticos lean datos apenas obsoletos. No es crítico mantener los datos analíticos completamente coherentes.
La tolerancia de tu aplicación a los datos obsoletos afecta la mejor manera de mantener los datos coherentes. Actualizar datos frecuentemente en varias colecciones reduce el riesgo de que un usuario lea datos obsoletos. Sin embargo, las actualizaciones frecuentes pueden impactar negativamente el rendimiento de tu aplicación. Al aplicar la coherencia de los datos, se equilibran las necesidades del usuario con el impacto en el rendimiento.
Integridad referencial
La integridad referencial garantiza que cuando se borra un objeto, también se borran todas las referencias a ese objeto.
Por ejemplo, una aplicación tiene una colección products y una colección warehouse que contiene referencias a la colección products. Cuando se borra un producto de la colección products, también se debe borrar la referencia correspondiente en la colección warehouse.
Si tu esquema requiere integridad referencial, incorpora lógica a tu aplicación para mantener la coherencia de las referencias. Como mínimo, la lógica de tu aplicación debe evitar errores al intentar realizar un query a una referencia que no existe.