Los patrones de diseño de esquemas son formas de optimizar su modelo de datos para los patrones de acceso de su aplicación. Mejoran el rendimiento de las aplicaciones y reducen la complejidad del esquema. Los patrones de diseño de esquemas afectan cómo se almacenan sus datos y qué datos se devuelven a su aplicación.
Para obtener una lista de patrones de diseño de esquemas y ejemplos, consulte Serie de blogs sobre MongoDB:Construcción con patrones.
Acerca de esta tarea
Antes de implementar patrones de diseño de esquemas, considera el problema que estás tratando de resolver. Cada patrón de diseño de esquemas tiene diferentes casos de uso y compromisos en cuanto a la coherencia de los datos, el rendimiento y la complejidad.
Implementar un patrón sin comprender la aplicación y los datos que necesita puede degradar el rendimiento de la aplicación y causar complicaciones innecesarias.
Ejemplo
Considere los siguientes patrones de ejemplo utilizados por una franquicia de cines:
El esquema contiene un
moviecolección y una coleccióntheater. El esquema utiliza el Patrón de subconjunto para duplicar un subconjunto de información de lamoviecolección en latheatercolección. Este patrón reduce el tamaño de los documentos devueltos a la aplicación y mejora el rendimiento de lectura.La colección
moviecontiene un campototal_views, que utiliza el patrón calculado para calcular un total acumulado de la cantidad de veces que los clientes ven una película en todos los cines donde se proyecta la película.
colección de películas
db.movie.insertOne( { _id: 1, title: "Titanic", year: 1997, director: "James Cameron", runtime: 194, distributor: "Paramount Pictures", languages: [ "English" ], total_views: 3500 } )
colección de teatro
db.theater.insertMany( [ { name: "Downtown Cinemas", address: { street: "2212 Taylor Street", state: "NY" }, movies: [ { movie_id: 1, title: "Titanic", runtime: 194, views: 1500 } ] }, { name: "Midtown Theater", address: { street: "1232 5th Street", state: "NY" }, movies: [ { movie_id: 1, title: "Titanic", runtime: 194, views: 2000 } ] } ] )