Kürzlich erkunde ich NoSQL-Datenbanken. Ich brauche einen Rat, wie Daten für ein gegebenes Problem optimal und effizient gespeichert werden können. Ich wende mich jetzt an MongoDB. Bei CouchDB sollte es aber genauso sein.Ich brauche einen Rat über NoSQL/MongoDb und Daten/Modelle Struktur
Sagen wir, wir haben diese drei Modelle:
Story:
id
title
User:
id
name
Vote:
id
story_id
user_id
Ich möchte die Datenbank diese Fragen stellen können:
- Wer hat für diese News gestimmt hat?
- Für was wurde gewählt?
Ich mache einfache Joins während der Arbeit mit einer relationalen DB. Die Frage ist, wie sollte ich die Daten für diese Objekte speichern, um am effizientesten zu sein.
Zum Beispiel, wenn ich die Vote-Objekte als eine Untersammlung von Stories speichern, wird es nicht einfach sein, die Information zu erhalten - "Was ein Benutzer gewählt hat".
Nun, in der Tat möchte ich mehr Informationen in einem Vote-Modell speichern. Zum Beispiel: created_at, ip, user_agent. Sollte ich die Daten in der Stories-Liste der Benutzer Sammlung speichern? –
Sie könnten die Stimmen als ein Array von Unterdokumenten speichern, jedes wie '{story_id: ..., created_at: ..., ip: ...}' usw. Dann wird die Abfrage zu 'find ({'stories .story_id ': ...}) '. Sie können auch darüber indexieren. – mdirolf
Nun, ich habe eine ziemlich große Datenbank mit ein paar M Datensätzen und werde das obige Szenario testen. –