¿En qué se diferencia el modelado de datos en MongoDB?

El modelado de datos es el proceso de desarrollar una representación visual de una aplicación de software completa o de sus componentes para comunicar las conexiones entre los puntos de datos y la estructura. Implica revisar meticulosamente sus requisitos de aplicación y base de datos y como la conexión entre los dos relacionados con las operaciones de datos centrales: lectura, escritura y actualización.

Se crea un modelo de datos estable evaluando el patrón de uso de la aplicación y alineando el esquema de la base de datos con él. Por lo tanto, el diseño de esquemas da forma a su modelo de datos. Cuando se trata de una base de datos relacional, no puede completar sus tablas sin crear el esquema de la tabla.

Términos clave que debe conocer

Antes de seguir adelante, aquí hay algunas definiciones básicas que debe conocer:

  • Colección: una colección es el conjunto de documentos en MongoDB. Es el equivalente a una tabla en un RDBMS.
  • Documento: un documento es una estructura compuesta por pares de archivos y valores. Es el equivalente a una fila en RDBMS.
  • Esquema de base de datos: el diseño de esquema es una arquitectura lógica y visual de una base de datos diseñada para un sistema de administración de base de datos (DBMS).

¿En qué se diferencia el modelado de datos en MongoDB?

Gracias a la flexibilidad de NoSQL, no es necesario crear un esquema antes de la inserción de datos. Eso es porque MongoDB admite una forma dinámica de esquema de base de datos. Esto elimina la necesidad de diseñar su esquema por adelantado. En su lugar, ahora puede almacenar sus datos y realizar ajustes de acuerdo con su colección.

Puede almacenar diferentes tipos de datos en el campo dado de una colección e incluso puede agregar nuevos campos, actualizar los valores de los campos y eliminar los campos existentes. Encontrará el verdadero beneficio de esta flexibilidad cuando asigne documentos a un objeto o entidad.

Generalmente, una colección y su documento siguen una estructura similar. También puede "hacer cumplir" las reglas de validación para los documentos de su colección mediante la validación de esquemas.

Relacionado: Motores de base de datos a considerar para su próximo proyecto

Al crear un modelo de datos, observe cómo interactuará su aplicación con la base de datos. Por ejemplo, si va a procesar documentos que se insertaron recientemente, entonces es una buena idea usar colecciones limitadas, colecciones con un tamaño fijo que admiten operaciones de alto rendimiento.

Del mismo modo, si su aplicación va a funcionar con operaciones de lectura la mayor parte del tiempo, puede establecer índices para admitir consultas comunes y mejorar el rendimiento.

Tradicionalmente, una de las consideraciones al crear un modelo de datos es cómo almacenar los datos relacionados. Las bases de datos relacionales usan tablas para almacenar datos, donde se usan claves primarias y externas para establecer relaciones de datos.

Del mismo modo, las combinaciones se utilizan para acceder y ejecutar operaciones en varias tablas. Como alguien que ha cambiado a MongoDB desde un DBMS relacional, como SQL Server, no encontrará uniones en MongoDB. Esto se debe a que MongoDB almacena los datos de la colección haciendo referencia a los datos o incrustándolos en una colección.

Por lo tanto, si su modelo de datos toma diez tablas en una base de datos relacional, es posible que MongoDB le permita consolidarlo en una sola colección.

Tipos de modelos de datos

Ahora que sabe cómo funciona el modelado de datos en MongoDB, veamos los tipos de modelos de datos compatibles con MongoDB. Por lo general, depende de la estructura de su documento y las relaciones de datos de su aplicación.

Modelos de datos integrados

Puede incrustar datos en un solo documento o estructura en MongoDB. También conocido como modelos de datos desnormalizados, aprovecha todo el potencial de los documentos enriquecidos de MongoDB. Por ejemplo, considere el siguiente ejemplo: tenemos una colección, estudiantes, que contiene un documento Matt. En este documento, hemos incorporado dos documentos, datos de contacto y grado .

 {
"_id": "4aad66a4c13bb24f12gh199e",
name: “Matt”,
contact details: {
phone:”555-555-1234”
email address: “[email protected]
},
grade: {
subject: “CS101”
score: “B”
}}

La incrustación almacena detalles relevantes en el mismo documento o registro de base de datos. De esta manera, puede minimizar las consultas y actualizaciones necesarias para realizar operaciones de base de datos comunes.

¿Cuándo debería utilizar modelos de datos integrados? Son útiles para mejorar el rendimiento de las operaciones de lectura. Además, son eficaces para procesar la recuperación de datos de un solo registro. Con este modelo, puede utilizar una única operación de escritura para actualizar los datos relacionados.

Sin embargo, hay algo que debe tener en cuenta: la incrustación aumenta el tamaño del documento después de su creación. En algunos casos, esto puede afectar el rendimiento de escritura y también existe la posibilidad de fragmentación de datos debido al tamaño del documento en expansión.

Por último, puede interactuar con documentos incrustados utilizando la notación de puntos y recorrerlos con facilidad. Aquí está la sintaxis:

 field.nestedField:value

Para el ejemplo anterior, puede acceder a sus documentos anidados escribiendo la siguiente consulta:

 db.students.find({contact details: { phone:”555-555-1234” ,email address: “[email protected]”}}).pretty()

Modelos de datos normalizados (referencias)

Los modelos de datos normalizados se utilizan para construir modelos de relación de uno a muchos y de muchos a muchos. Mientras trabaja con modelos de documentos incrustados, habrá ocasiones en las que tendrá que repetir datos. Aquí es donde las referencias son útiles: abordan la redundancia. Así es como podemos usar referencias para el ejemplo anterior.

Hemos dividido nuestro documento único en tres documentos y, dado que los datos de contacto y el grado tienen la identificación del documento Matt , puede llamarlos cuando sea necesario.

 student
{
_id:<ObjectId1>
username: “Matt”
}
contact details
{
_id:<ObjectID2>
user_id: <ObjectId1>
email:“[email protected]
phone:”555-555-1234”
}
grade
id:<ObjectId3>
user_id: <ObjectId1>,
subject: “CS101”,
score: “B”
}

Como puede ver, los modelos de datos normalizados dividen los datos en varias colecciones mediante el uso de referencias entre las colecciones más nuevas. Puede actualizar un solo documento, que actualizará otras colecciones. Esta es una forma eficiente de actualizar datos y se usa principalmente cuando sus datos pasan por cambios frecuentes.

Estos son los momentos en los que un modelo de datos normalizado es la opción más inteligente:

  • Tiene que modelar grandes conjuntos de datos que siguen una determinada jerarquía.
  • Tiene que representar varias relaciones de varios a varios.
  • La incrustación provocaría la duplicación de datos sin beneficiar su rendimiento de lectura en una medida suficiente.

Ahora puede modelar datos en MongoDB con facilidad

A estas alturas, ya sabe en qué se diferencia el modelado de datos en MongoDB de los DBM relacionales, especialmente cuando se trata de esquemas. También ha aprendido sobre los tipos de modelos de datos en MongoDB (desnormalizados y normalizados) y aprende cuándo usarlos.

Y esto es sólo el principio; hay mucho más que aprender sobre cómo MongoDB puede organizar sus datos.