Ich versuche herauszufinden, das Äquivalent von Fremdschlüsseln und Indizes in NoSQL KVP oder Document-Datenbanken. Da es keine zentralen Tabellen gibt (um Schlüssel hinzuzufügen, die eine Beziehung zwischen zwei Objekten markieren), bin ich wirklich verwirrt darüber, wie Sie Daten auf eine Weise abrufen könnten, die für normale Webseiten nützlich wäre.Wie verfolgen Sie die Datensatzbeziehungen in NoSQL?
Angenommen, ich habe einen Benutzer, und dieser Benutzer hinterlässt viele Kommentare auf der Website. Der einzige Weg, ich denken kann verfolgen, dass die Nutzer Kommentare zu halten, ist zu
- einbetten sie in dem Benutzerobjekt (die ziemlich nutzlos scheint)
- einen
user_id:comments
Wert erstellen und pflegen, die eine Liste von jedem Kommentar des enthält Schlüssel [Kommentar: 34, Kommentar: 197, etc ...] so dass ich sie nach Bedarf abrufen kann.
jedoch das zweite Beispiel verwenden, können Sie treffen bald eine Mauer, wenn Sie es für die Verfolgung von anderen Dingen wie ein Schlüssel verwenden „active_comments“, die 30 Millionen-IDs darin enthalten könnte so dass es eine Tonne kosten zu Fragen Sie jede Seite ab, nur um einige kürzlich aktive Kommentare zu erhalten. Es wäre auch sehr anfällig für Race-Bedingungen so viele Seiten könnten versuchen, es zur gleichen Zeit zu aktualisieren.
Wie kann ich Beziehungen wie die folgenden in einer NoSQL-Datenbank verfolgen?
- Alle eines Benutzers Kommentare
- Alle aktiven Kommentare
- Alle Beiträge mit [Keyword] getaggt
- alle Schüler in einem Club - oder alle Clubs ein Student in ist
Oder denke ich falsch darüber nach?
Es gibt keine Möglichkeit, dies in NoSQL-Datenbanken zu tun, diese Frage ist eher eine Frage zu stellen, wie würde ich Beziehungen in C-Programmen verfolgen. – stonemetal
Wow, dann denke ich, dass der Hype um NoSQL, der RDBMS ersetzt, unmöglich ist. – Xeoncross
Ja, NoSQL ist definitiv übersteuert. Ich sage nicht, dass die neuen Technologien unter den richtigen Umständen nicht nützlich sind, aber es ist lächerlich zu denken, dass sie das RDBMS ersetzen werden. Siehe http://en.wikipedia.org/wiki/Hype_cycle –