Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Datos de referencia en su esquema MongoDB

Las referencias almacenan relaciones entre datos mediante la inclusión de enlaces, llamados referencias, de un documento a otro. Las aplicaciones pueden resolver estas referencias para acceder a los datos relacionados. En el siguiente ejemplo, el contact y access documentos contienen una referencia al documento user.

Modelo de datos que utiliza referencias para vincular documentos. Tanto el documento de "contacto" como el documento de "acceso" contienen una referencia al documento del "usuario".

Las referencias producen modelos de datos normalizados porque los datos se dividen en múltiples colecciones y no se duplican.

Aunque un modelo de datos desnormalizado funciona para la mayoría de los casos en MongoDB, considera usar referencias en lugar de datos incrustados si:

  • La incrustación tendría como resultado la duplicación de datos, pero no ofrecería suficientes ventajas de rendimiento de lectura para compensar las implicaciones de dicha duplicación. Por ejemplo, cuando los datos incrustados cambian con frecuencia.

  • Necesita representar relaciones complejas de muchos a muchos o grandes conjuntos de datos jerárquicos.

  • Debes consultar con frecuencia la entidad relacionada por sí sola.

En ciertas situaciones, puedes optar por almacenar información relacionada en varias colecciones en lugar de en una sola colección.

Considera una colección de muestra, logs, que almacena documentos de registro para varios entornos y aplicaciones. La colección logs contiene documentos del siguiente formato:

{ log: "dev", ts: ..., info: ... }
{ log: "debug", ts: ..., info: ...}

Si el número total de documentos es bajo, puede agrupar documentos en una colección por tipo. Para los registros, considera mantener colecciones de registros distintas, como logs_dev y logs_debug.

Generalmente, tener un gran número de colecciones no supone una pérdida significativa de rendimiento y se traduce en un buen rendimiento. Disponer de colecciones diferenciadas es fundamental para el procesamiento por lotes de alto rendimiento.

Cuando utiliza modelos que tienen una gran cantidad de colecciones, tenga en cuenta los siguientes comportamientos:

  • Cada colección tiene una sobrecarga mínima determinada de unos pocos kilobytes.

  • Las operaciones de lectura no indexadas podrían consumir una gran cantidad de memoria.

  • Para cada uno base de datos, un único archivo de namespace (como <database>.ns) almacena todos los metadatos de esa base de datos. Cada índice y colección tiene su propia entrada en el archivo de namespace. Consulta los límites de longitud de namespace para restricciones específicas.

Para consultar datos normalizados en múltiples colecciones, MongoDB proporciona las siguientes etapas de agregación de datos:

Para un ejemplo de modelos de datos normalizados, vea Modelar relaciones de uno a muchos con referencias de documentos.

Para ejemplos de varios modelos de árbol, vea Modelar estructuras en forma de árbol.

Volver

Datos incrustados

Obtén una insignia de habilidad

¡Domina el "Modelo relacional orientado a documentos" gratis!

Más información

En esta página