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

Mongo-Schema (Einbettung vs. Referenz)

Persönlich würde ich mich für eine separate Sammlung entscheiden, hauptsächlich um Ihre Benutzer-/Ortsobjekte klein zu halten, da Sie eine unbegrenzte Anzahl von Checkins pro Benutzer/Ort haben können. Wenn Sie einen Index für user_id/timestamp und place_id/timestamp in Ihrer Checkins-Sammlung erstellen, sind Abfragen für einen bestimmten Benutzer oder Ort effizient. Ein zweiter Vorteil der Verwendung einer separaten Sammlung besteht darin, dass MongoDB Ihren Benutzer oder Ihr Objekt nicht ständig verschieben muss, wenn es zu groß wird. Stattdessen wird es einfach weiter an die Checkins-Sammlung angehängt, was ziemlich effizient sein sollte (Zehn von Tausenden von Einfügungen pro Sekunde pro Shard).

Ich sollte auch erwähnen, dass ich nicht würde Speichern Sie die Eincheck-IDs weder im Orts- noch im Benutzerdokument, da Sie den gleichen Leistungsvorteil erhalten, wenn Sie im Eincheckdokument einen Index für place_id oder user_id haben.