/ / NoSQL plant Beispiel - SQL, Datenbank, Nosql

NoSQL plant Beispiel - SQL, Datenbank, Nosql

Ich lese Dinge über NoSQL. Ich weiß, dass es nicht auf Beziehungen basiert, aber ich kann nicht herausfinden, wie man einige grundlegende Dinge tut. (Und ich habe keinen echten Beispielcode darüber gefunden).

Ich möchte Benutzer, Beiträge und Kommentare speichern.

SQL-Version:

user"s table: user_id, username
posts"s table: post_id, user_id, content
comments"s table: comment_id, content

Ok, einfach.

In einer NoSQL, was ich entworfen habe, ist (100% funktional, ich verwende keine Technologien wie MongoDB etc für jetzt):

users:
{
id: XX,
username: "John"
},
{
id: OO,
username: "Mike"
}

posts:
{
id: YY,
content: "How are you all ?",
user: {
id: OO,
username: "Mike"
},
comments: {
id: ZZ,
content: "Fine",
user: {
id: XX,
username: "John"
}
}
}

Ich könnte die Benutzer-ID in Posts und Kommentaren anstelle des gesamten Benutzers gespeichert haben, aber ich verwende NoSQL, nicht SQL, also mache ich es nicht.

Zuerst ? Ist dieses Datenmodell für NoSQL in Ordnung?

Zweitens, wenn ja für die vorherige Frage, was?wenn Benutzer XX (John) seinen Benutzernamen für "Tony" ändert? Möglicherweise muss ich alle Beiträge von ihm aktualisieren, und das gleiche für jeden Kommentar? Lassen Sie uns vorstellen, dass er während des Benutzers des Benutzers, 10 000 + Kommentare, wtf. Also ich rate ich mache es falsch gemacht.

Kannst du meine Missverständnisse klären?

Antworten:

0 für die Antwort № 1

Das Problem mit der Frage ist, dass es annimmtAlle NoSQL-Datenbanken funktionieren auf die gleiche Weise, basierend auf dem Problem, dass es so aussieht, als würde Ihre Frage darauf bezogen sein, wie man "Dokumente" (JSON) in einer Datenbank speichert, so dass Sie die Inhalte später abrufen können Sichtweise des Document-Shops:

Wie Sie bereits bemerkt haben, bietet NoSQL keinBeziehungen und daher müssen Sie dies manuell behandeln. In NoSQL World ist die Entnormalisierung in der Regel der erste Schritt, um sicherzustellen, dass Sie die Dokumente in weniger Umläufen in die Datenbank abrufen können. Daher ist Ihr Ansatz, den Posts den Benutzernamen hinzuzufügen, der typische Ansatz.

Das Problem, das du anzeigst, ist absolut gültig,Was passiert, wenn sich der Benutzername ändert? Es ist gültig, aber nicht wirklich real, die Benutzernamen in einem Blog sind normalerweise der Schlüssel für alles, also ändern Sie es, es ist eine Art große Veränderung, und normalerweise nicht erlaubt.

Um die Beziehungen auszuführen, können Sie dieDokumente mit ID später, und speichern Sie die IDs bei Bedarf, so dass Sie Ihre Datenbank auf die gleiche Weise wie in SQL World normalisieren, in diesem Fall müssen Sie möglicherweise Indizes verwenden, um eine gute Leistung zu gewährleisten, wenn die ID der Benutzer ist die interne ID des Dokuments oder den Benutzernamen als ID des Dokuments selbst. In Djondb wird etwas wie sein:

{
"_id": "myuser",
"name": "Cross"
}

und der Blog wird haben

{
"userid": "myuser",
"content": "Hello world"
}

Was nun, wenn Sie mehrere Dokumente aktualisieren müssen? In diesem Fall benötigen Sie djondb, eine Dokumentdatenbank, die Transaktionen über mehrere Dokumente hinweg unterstützt, um Ihre Datenbank konsistent zu halten

Mehr zur Datenmodellierung: http://djondb.com/nosql-masterdetail-sample/

Mehr über Transaktionen in djondb: http://djondb.com/section/transactions/

Disclaimer: Ich arbeite mit Djondb, also bin ich immer voreingenommen!

Hoffe das hilft,