Ich bin neu mit nosql Konzept, also, wenn ich beginne, PouchDB zu lernen, fand ich diese Umwandlung Diagramm. Meine Verwirrung ist, wie PouchDB handle, wenn wir sagen, ich habe mehrere Tabelle, bedeutet es, dass ich mehrere Datenbanken erstellen müssen? Weil nach meinem Verständnis in Pouchdb eine Datenbank viele Dokumente speichern kann, aber ein Dokument eine Zeile in SQL bedeutet oder ich falsch verstanden werde?PouchDB Struktur
Antwort
... bedeutet es, dass ich mehrere Datenbanken erstellen müssen?
Nr
... ein Dokument eine Zeile in SQL bedeuten oder bin ich falsch verstanden?
Das stimmt. Die SQL-Tabelle definiert Spaltenüberschriften (Name und Typ) - das sind die JSON-Eigenschaftsnamen des Dokuments.
Also, alle Dokumente (Zeilen) mit den gleichen Eigenschaften (ein so genanntes "Schema") sind das Äquivalent Ihrer SQL-Tabelle. Sie können so viele verschiedene Schemata in einer Datenbank haben, wie Sie wollen (besuchen Sie json-schema.org für einige Inspirationen).
Wie Sie sie separat anfordern? Erstellen Sie CouchDB Ansichten! Sie können alle/einige "Zeilen" Ihrer Tabellendaten (Dokumente mit demselben Schema) mit einer Anfrage erhalten, wie Sie es von SQL kennen.
Um solche Ansichten einfach zu schreiben, ist die Eigenschaft type
sehr häufig für CouchDB-Dokumente. Ihr bekannter Name aus einer SQL-Tabelle kann Ihr Typ sein wie doc.type: "animal"
Ihre Ansichtsnamen sind vielleicht animalByName
oder animalByWeight
. Hängt von Ihren Bedürfnissen ab.
Die Antwort auf diese Frage scheint überraschend wenig dokumentiert zu sein. Während @llabball eindeutig eine anständige Antwort gab, glaube ich nicht, dass Ansichten immer der richtige Weg sind.
Wie Sie here im Abschnitt Wenn nicht Karte verwenden/reduzieren lesen können, erklärt Nolan, dass für einfachere Anwendungen, ist der Schlüssel zu Missbrauch ist_ids
, und die Macht der allDocs()
nutzen.
Mit anderen Worten, wenn Sie zwei verschiedene Typen hätten (zB Künstler und Alben), dann können Sie die ID jedes Typs voranstellen, um einen leicht durchsuchbaren Datensatz zu erhalten. Zum Beispiel _id: 'artist_name'
& _id: 'album_title'
, würde es Ihnen ermöglichen, Künstler in der Namensreihenfolge einfach abzurufen.
Das Verteilen der Daten führt zu einer besseren Leistung, da keine zusätzlichen Indizes und weniger Code erforderlich sind. Wenn Ihre Datenanforderungen jedoch komplexer sind, sind Ansichten der richtige Weg.
Manchmal ist ein Plan für mehrere Datenbanken eine gute Option, wie eine Datenbank pro Benutzer oder sogar eine Datenbank pro Benutzer-Feature. Werfen Sie einen Blick auf this conversation auf CouchDB Mailing-Liste.