MongoDB - Modelado de datos

Los datos en MongoDB tienen un esquema flexible. Documentos en la misma colección. No es necesario que tengan el mismo conjunto de campos o estructura Los campos comunes en los documentos de una colección pueden contener diferentes tipos de datos.

Diseño de modelos de datos

MongoDB proporciona dos tipos de modelos de datos: - Modelo de datos integrado y Modelo de datos normalizado. Según el requisito, puede utilizar cualquiera de los modelos mientras prepara su documento.

Modelo de datos integrado

En este modelo, puede tener (incrustar) todos los datos relacionados en un solo documento, también se conoce como modelo de datos desnormalizados.

Por ejemplo, suponga que estamos obteniendo los detalles de los empleados en tres documentos diferentes, a saber, Detalles personales, Contacto y Dirección, puede incrustar los tres documentos en uno solo como se muestra a continuación:

{
	_id: ,
	Emp_ID: "10025AE336"
	Personal_details:{
		First_Name: "Radhika",
		Last_Name: "Sharma",
		Date_Of_Birth: "1995-09-26"
	},
	Contact: {
		e-mail: "[email protected]",
		phone: "9848022338"
	},
	Address: {
		city: "Hyderabad",
		Area: "Madapur",
		State: "Telangana"
	}
}

Modelo de datos normalizado

En este modelo, puede consultar los subdocumentos del documento original, utilizando referencias. Por ejemplo, puede volver a escribir el documento anterior en el modelo normalizado como:

Employee:

{
	_id: <ObjectId101>,
	Emp_ID: "10025AE336"
}

Personal_details:

{
	_id: <ObjectId102>,
	empDocID: " ObjectId101",
	First_Name: "Radhika",
	Last_Name: "Sharma",
	Date_Of_Birth: "1995-09-26"
}

Contact:

{
	_id: <ObjectId103>,
	empDocID: " ObjectId101",
	e-mail: "[email protected]",
	phone: "9848022338"
}

Address:

{
	_id: <ObjectId104>,
	empDocID: " ObjectId101",
	city: "Hyderabad",
	Area: "Madapur",
	State: "Telangana"
}

Consideraciones al diseñar Schema en MongoDB

  • Diseñe su esquema de acuerdo con los requisitos del usuario.

  • Combine objetos en un documento si los usará juntos. De lo contrario, sepárelos (pero asegúrese de que no sea necesario unirlos).

  • Duplique los datos (pero limitado) porque el espacio en disco es barato en comparación con el tiempo de cálculo.

  • Realice uniones mientras escribe, no en lectura.

  • Optimice su esquema para los casos de uso más frecuentes.

  • Realice una agregación compleja en el esquema.

Ejemplo

Supongamos que un cliente necesita un diseño de base de datos para su blog / sitio web y ve las diferencias entre RDBMS y el diseño de esquema de MongoDB. El sitio web tiene los siguientes requisitos.

  • Cada publicación tiene un título, una descripción y una URL únicos.

  • Cada publicación puede tener una o más etiquetas.

  • Cada publicación tiene el nombre de su editor y el número total de Me gusta.

  • Cada publicación tiene comentarios proporcionados por los usuarios junto con su nombre, mensaje, tiempo de datos y me gusta.

  • En cada publicación, puede haber cero o más comentarios.

En el esquema RDBMS, el diseño de los requisitos anteriores tendrá un mínimo de tres tablas.

Mientras esté en el esquema de MongoDB, el diseño tendrá una publicación de colección y la siguiente estructura:

{
   _id: POST_ID
   title: TITLE_OF_POST, 
   description: POST_DESCRIPTION,
   by: POST_BY,
   url: URL_OF_POST,
   tags: [TAG1, TAG2, TAG3],
   likes: TOTAL_LIKES, 
   comments: [	
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES 
      },
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

Entonces, mientras muestra los datos, en RDBMS debe unir tres tablas y en MongoDB, los datos se mostrarán solo de una colección.