2016-04-15 9 views
1

Ich fange gerade mit mongoDB.mongodb: Verwenden Sie verschachteltes Dokument oder separate Sammlungen mit Referenzen

Ich muss Benutzerdaten speichern. Für jeden Benutzer wird jeden Tag ein kleiner Datensatz (nicht mehr als 500 Bytes) hinzugefügt oder einige (meistens nicht mehr als 10) von ihnen aktualisiert.

Jetzt ist meine Frage, soll ich dies als eine Sammlung von Benutzern mit den in jedem Benutzerdokument eingebetteten Datensätzen modellieren oder eine Benutzersammlung und eine Datensatzaufzeichnung mit einer Referenz von jedem Datendokument auf das Benutzerdokument haben?

Antwort

1

Es meist auf die Anfragen ab, die Sie auf der DB

tun werden

Ich gehe davon aus, dass Sie in Ihrem db benutzerspezifische Daten speichern müssen (Name, Adresse, ecc.) Und ‚andere‘ Daten (Ihr 'kleiner Datensatz')

Wenn die Abfragen benutzerspezifische Daten zusammen mit 'anderen' Daten erhalten, sollten Sie nur eine Benutzersammlung verwenden und die 'anderen' Daten in die Benutzersammlung einbetten. Auf diese Weise können Sie benutzerspezifische Daten und 'andere' Daten in einer einzigen Abfrage erhalten

Wenn die Abfragen nur 'andere' Daten erhalten (ausgehend von einem Beispiel aus einer user_id), und Sie planen, nie benutzerspezifisch zu benötigen Daten zusammen mit 'anderen' Daten, könnten Sie eine Datensammlung verwenden, in der Sie Ihre 'anderen' Daten zusammen mit der Benutzer-ID speichern (zum Beispiel um die Daten zu aktualisieren)

Denken Sie daran, dass normalerweise, Verwenden von Referenzen in Mongodb wird nicht empfohlen, es sei denn, Sie haben einen guten Grund, es zu tun, so würde ich für die erste Lösung

+0

Das Hinzufügen neuer Datensätze zu einem Filialdokument ist also kein Problem? Muss ich immer das ganze Dokument dafür laden? – Thomas

+0

ja Sie können Daten zu Ihrem Filialdokument aktualisieren und hinzufügen, und Sie müssen nicht das gesamte Dokument für diese – Moppo

+0

Vielen Dank. Ich möchte auch alle Aufzeichnungen zusammen mit den Benutzerdaten haben. – Thomas

1

Es hängt alles vom Anwendungsfall - wie Art der Daten, Häufigkeit des Lesens, Daten Zugang Muster usw.

In Ihrem Fall sieht es so aus, als ob der "kleine Datensatz" von den Benutzerdaten und nicht wirklich von alleinstehenden Daten abhängt. Da die Größe auch klein ist, ist es besser, die Daten in die Benutzersammlung einzubetten.

Verwandte Themen