2016-03-28 11 views
0

CONTEXT:Couchbase: nosql db Dokumentendesign für verschachtelte Ebenen von Daten

ich einen Datensatz haben, die tief verschachtelte Informationen hat. Es gibt 5 Schichten. Die oberste Schicht hat eine Liste der zweiten, die zweite hat eine Liste der 3. usw. usw.

Ich habe verschiedene Benutzer, die Zugriffsebenen auf die verschiedenen Daten haben werden. IE-Top-Level-Benutzer haben Zugriff auf die oberste Ebene und alle darunter liegenden Ebenen. Benutzer der 2. Ebene haben Zugriff auf die 2. Ebene und alle darunter liegenden Ebenen, 3. bis 3. usw. bis zur untersten Ebene haben nur Zugriff auf diese Ebene.

Ich habe derzeit eine DB, die nur die oberste Ebene der Informationen enthält. Es gibt 8 Dokumente auf der obersten Ebene. Wenn sich also ein Benutzer der Stufe 2 oder 3 anmeldet, erhalte ich die Daten der Stufe 1, die zu ihnen gehören, und dann filtere ich die Daten im Serverseitencode nur nach den Bedürfnissen der Benutzer und sende sie dann hoch.

Frage:

Ich habe gehört, dass eine gute nosql db Design, die Dokumente auf dem Server api zu konzipieren wäre. Mit meinen Daten scheint dies eine Menge redundanter Daten zu schaffen. Zum Beispiel würden Daten für eine Benutzerebene 5 (die niedrigste Stufe) in einigen Daten der Ebene 4 enthalten sein, wobei dieselben Daten in Daten der Ebene 3 enthalten wären, ganz nach oben, alle in verschiedenen Dokumenten.

Ist das ein Problem, das uns nicht wirklich interessiert? Oder denke ich über dieses Problem falsch?

Antwort

1

Sie sollten über Zugriffsmuster auf Ihre Daten nachdenken.

Wahr, es kann redundante Daten verursachen - aber wir leben im Informationszeitalter.

Das eigentliche Problem ist die Geschwindigkeit, mit der Sie auf Ihre Daten zugreifen möchten. Der schnellste Weg ist ein Dokument für jeden Ebene- aber dann haben Sie

  • Redundante Daten
  • Nested Dokument
  • Langsames Auffrischen
  • Schnellste liest

Wenn Sie eine Menge brauchen Updates, + Sie brauchen es konsistent Sie möchten es möglicherweise zu kleineren Dokumenten zu brechen. Die Vorgehensweise besteht darin, den Schlüssel des Dokuments so zu gestalten, dass eine Beziehung zum Elternelement und ein Verweis auf das Kind im Elternelement besteht. Es ist sehr üblich Modus Operandi in Couchbase, wie Sie den Schlüssel wählen können, wie Sie möchten.

  • Keine redundanten Daten
  • Stück von Dokumenten, erhalten mehrere pro Dokument
  • Schnellen Updates - nur kleinen Bruch aktualisiert
  • Langsamer liest, mehr pro Dokument bekommt (oder beitreten, wenn Sie N1QL verwenden)

Sie können auch die Referenzen + Einbettung mischen und anpassen - je nach Anwendungsfall.

+1

Ich denke, ich wusste das die ganze Zeit, aber nur jemand schlauer als ich, um es zu bestätigen. Vielen Dank. – discodane

+0

Cool, glücklich hier zu helfen. Möge die Macht stark mit dir sein, vertraue auf dich selbst! –

Verwandte Themen