English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB-Datenmodellierung

Die Daten in MongoDB haben eine flexible Schema, schema.documents, in der gleichen Sammlung. Dokumente in der gleichen Sammlung. Sie müssen nicht über den gleichen Feldsatz oder die gemeinsamen Felder in der Sammlung verfügen, Dokumente können verschiedene Arten von Daten enthalten.

Datenmodellgestaltung

MongoDB bietet zwei Arten von Datenmodellen: Eingebettetes Datenmodell und normiertes Datenmodell. Nach Bedarf können Sie bei der Vorbereitung von Dokumenten eines dieser beiden Modelle verwenden.

Eingebettetes Datenmodell

In diesem Modell können Sie alle relevanten Daten (eingebettet) in einem Dokument zusammenfassen, was auch als nicht normiertes Datenmodell bezeichnet wird.

Zum Beispiel,angenommen, wir erhalten die Details des Mitarbeiters in drei verschiedenen Dokumenten (Persönliche_Daten, Kontakt und Adresse), können alle drei Dokumente in einem Dokument eingebettet werden, wie folgt:

{
	_id:,
	Mitarbeiter_ID: "10025AE336"
	Persönliche_Daten:{
		Vorname: "Radhika",
		Nachname: "Sharma",
		Geburtsdatum: "1995-09-26"
	},
	Kontakt: {
		e-mail: "[email protected]"
		Telefon: "9848022338"
	},
	Adresse: {
		stadt: "Hyderabad",
		Bereich: "Madapur",
		State: "Telangana"
	}
}

Standardisierte Datenmodell

In diesem Modell können Sie Referenzen verwenden, um auf Unterdokumente im Originaldokument zu verweisen. Zum Beispiel können Sie das folgende Dokument in einem normierten Modell neu schreiben:

Mitarbeiter:

{
	_id: ObjectId101>,,
	Mitarbeiter_ID: "10025AE336"
}

Persönliche_Daten:

{
	_id: ObjectId102>,,
	empDocID: "ObjectId"101"
	Vorname: "Radhika",
	Nachname: "Sharma",
	Geburtsdatum: "1995-09-26"
}

Kontakt:

{
	_id: ObjectId103>,,
	empDocID: "ObjectId"101"
	e-mail: "[email protected]"
	Telefon: "9848022338"
}

Adresse:

{
	_id: ObjectId104>,,
	empDocID: "ObjectId"101"
	stadt: "Hyderabad",
	Bereich: "Madapur",
	State: "Telangana"
}

Beachtungen bei der Architekturgestaltung in MongoDB

  • Architektur nach Benutzeranforderungen gestalten.

  • Fügen Sie sie zusammen, wenn sie gemeinsam verwendet werden, sonst trennen Sie sie (aber stellen Sie sicher, dass keine Verbindung erforderlich ist).

  • Daten kopieren (aber mit Einschränkungen), da Speicherplatz billiger ist als Berechnungszeit.

  • Verbinden Sie bei der Schreiboperation, nicht bei der Leseoperation.

  • Optimieren Sie Ihre Lösung für die häufigsten Szenarien.

  • Komplexe Aggregationen in der Architektur durchführen.

Online-Beispiel

Angenommen, der Kunde benötigt für seinen Blog/Die Website führt Datenbankdesign durch und betrachtet die Unterschiede zwischen RDBMS- und MongoDB-Modusdesigns. Die Website hat folgende Anforderungen.

  • Jeder Beitrag hat einen eindeutigen Titel, Beschreibung und URL.

  • Ein Beitrag kann einen oder mehrere Tags haben.

  • Jeder Beitrag hat den Namen des Verfassers und die Gesamtzahl der Likes.

  • Jeder Beitrag enthält Kommentare, die von den Benutzern bereitgestellt werden, sowie ihre Namen, Nachrichten, Datenzeit und Likes.

  • Für jeden Beitrag können null oder mehrere Kommentare vorhanden sein.

In der RDBMS-Architektur hat das Design für die obigen Anforderungen mindestens drei Tabellen.

In der MongoDB-Modellstruktur hat das Design eine Beitragskollektion und die folgende Struktur.-

{
   _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
      }
   ]
}

Daher müssen Sie bei der Anzeige von Daten in einem RDBMS drei Tabellen verbinden, während die Daten in MongoDB aus einer einzigen Kollektion angezeigt werden.