mongodb - tool - NoSQL-Best Practices




tree structure mongodb (2)

Was sind die Best Practices für NoSQL-Datenbanken, OODBs oder was auch immer andere Akronyme für sie?

Zum Beispiel habe ich oft gesehen, dass ein Feld "type" verwendet wird, um zu entscheiden, wie das DB-Dokument (in couchDB / mongoDB-Begriffen) vom Client, der Anwendung, interpretiert werden soll.

Verwenden Sie gegebenenfalls PHP als Referenzsprache. Lesen: Ich bin auch daran interessiert, wie solche Daten am besten auf der Client-Seite gehandhabt werden können, nicht nur strikt die DB-Struktur. Das bedeutet praktisch, dass ich auch nach Mustern wie "ORM" s für SQL DBs suche (Active Record, Data Mapper, etc).

Zögere nicht, Aussagen darüber zu machen, wie eine solche Datenbank und die neuen Funktionen von PHP 5.3 am besten zusammen funktionieren könnten.


"NoSQL" sollte mehr dazu dienen, den Datenspeicher so aufzubauen, dass er Ihren Anwendungsanforderungen entspricht, und nicht darauf, die App so zu erstellen, dass sie einer bestimmten Struktur folgt - das ist mehr wie ein herkömmlicher SQL-Ansatz .

Verlassen Sie eine relationale Datenbank nicht "nur weil"; mach es nur, wenn deine App es wirklich braucht.


Ich denke, dass derzeit die ganze Idee von NoSQL-Datenspeichern und das Konzept von Dokumentendatenbanken so neu und anders ist als die etablierten Ideen, die den relationalen Speicher vorantreiben, dass es derzeit (wenn überhaupt) nur wenige Best Practices gibt.

Wir wissen an dieser Stelle, dass die Regeln für das Speichern Ihrer Daten innerhalb von CouchDB (oder einer anderen Dokumentendatenbank) sich von denen für relationale unterscheiden. Zum Beispiel ist es eine Tatsache, dass Normalisierung und das Streben nach 3NF nicht etwas ist, wonach man streben sollte. Eines der üblichen Beispiele wäre das eines einfachen Blogs.

In einem relationalen Store hätten Sie jeweils eine Tabelle für "Posts", "Comments" und "Authors". Jeder Autor hätte viele Posts, und jeder Post hätte viele Kommentare. Dies ist ein Modell, das gut genug funktioniert und über jeden relationalen DB gut abbildet. Das Speichern der gleichen Daten in einer docDB würde jedoch sehr wahrscheinlich anders aussehen. Sie haben wahrscheinlich so etwas wie eine Sammlung von Post-Dokumenten, von denen jedes seinen eigenen Autor und eine Sammlung von Kommentaren enthält. Natürlich ist das wahrscheinlich nicht die einzige Möglichkeit, dies zu tun, und es ist ein Kompromiss (jetzt Die Suche nach einem einzelnen Post ist schnell - Sie machen nur eine Operation und erhalten alles zurück. Sie haben jedoch keine Möglichkeit, die Beziehung zwischen Autoren und Posts zu erhalten (da dies alles Teil des Post-Dokuments wird).

Ich habe auch Beispiele gesehen, die ein "type" -Attribut verwenden (in einem CouchDB-Beispiel). Klar, das klingt nach einem gangbaren Ansatz. Ist es der beste? Ich habe keine Ahnung. Natürlich würden Sie in MongoDB separate Sammlungen in einer Datenbank verwenden, was das Attribut type zu totalem Unsinn macht. In CouchDB aber ... vielleicht ist das das Beste. Die anderen Alternativen? Getrennte Datenbanken für jeden Dokumententyp? Das scheint ein bisschen langweilig, also würde ich mich selbst auf die "Typ" -Lösung konzentrieren. Aber das bin nur ich. Vielleicht gibt es etwas Besseres.

Mir ist klar, dass ich hier ziemlich viel herumgesprochen habe und sehr wenig gesagt habe, wahrscheinlich nichts, was du nicht schon gewusst hast. Mein Punkt ist dies jedoch - ich denke, es liegt an uns, mit den Werkzeugen, die wir haben, und mit den Daten, mit denen wir arbeiten, zu experimentieren, und im Laufe der Zeit werden die guten Ideen verbreitet und die Best Practices werden. Ich denke nur, dass du ein bisschen zu früh im Spiel fragst.





nosql