MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB Schema Design – Viele kleine Dokumente oder weniger große Dokumente?

Sie müssen auf jeden Fall für Ihre Abfragen optimieren.

Hier ist meine beste Vermutung basierend auf Ihrer Beschreibung.

Wahrscheinlich möchten Sie alle Kreditkarten für jeden Kunden kennen, also bewahren Sie ein Array davon im Kundenobjekt auf. Sie möchten wahrscheinlich auch eine Kundenreferenz für jede Zahlung haben. Dadurch bleibt das Zahlungsdokument relativ klein.

Das Payment-Objekt hat automatisch eine eigene ID und einen eigenen Index. Wahrscheinlich möchten Sie auch einen Index für die Kundenreferenz hinzufügen.

Auf diese Weise können Sie schnell nach Zahlungen nach Kunden suchen, ohne jedes Mal das gesamte Kundenobjekt zu speichern.

Wenn Sie Fragen wie "Was war der durchschnittliche Betrag, den alle Kunden im letzten Monat bezahlt haben" beantworten möchten Sie werden stattdessen eine Karte / Reduzierung für einen größeren Datensatz benötigen. Sie erhalten diese Antwort nicht "in Echtzeit". Sie werden feststellen, dass das Speichern einer „Referenz“ zum Kunden für diese Kartenreduzierungen wahrscheinlich gut genug ist.

Um Ihre Frage also direkt zu beantworten:Ist MongoDB darauf ausgelegt, viele, viele kleine Dokumente oder weniger große Dokumente zu bevorzugen?

MongoDB ist darauf ausgelegt, indizierte Einträge sehr schnell zu finden. MongoDB ist sehr gut darin, wenige zu finden Nadeln in einem großen Heuhaufen. MongoDB ist nicht sehr gut darin, die meisten zu finden von den Nadeln im Heuhaufen. Bauen Sie Ihre Daten also um Ihre häufigsten Anwendungsfälle herum auf und schreiben Sie Zuordnungs-/Reduzierungsaufträge für die selteneren Anwendungsfälle.