Ich denke, nachdem Sie auf ein paar Seiten zu diesem Thema durchgelesen haben, hängt alles davon ab, mit welchen Arten von Daten Sie es zu tun haben.
RDBMSes stellen einen Top-Down-Ansatz dar, bei dem Sie, der Datenbankentwickler, die Struktur aller Daten in der Datenbank bestätigen. Sie definieren, dass eine Person einen ersten, letzten, zweiten Namen und eine Privatadresse usw. hat. Sie können dies mithilfe eines RDBMS erzwingen. Wenn du keine Spalte für den HomePlanet einer Person hast, eine Möchtegern-Person, die ein anderes HomePlanet als die Erde hat; Sie müssen zu einem späteren Zeitpunkt eine Spalte hinzufügen oder die Daten können nicht im RDBMS gespeichert werden. Die meisten Programmierer machen solche Annahmen in ihren Apps sowieso, also ist das keine dumme Sache, die man annehmen und durchsetzen kann. Dinge zu definieren kann gut sein. Wenn Sie jedoch in Zukunft weitere Attribute protokollieren müssen, müssen Sie sie hinzufügen. Das Beziehungsmodell geht davon aus, dass sich Ihre Datenattribute nicht wesentlich ändern.
"Cloud" -Datenbanken mit etwas wie MapReduce, in Ihrem Fall CouchDB, machen nicht die obige Annahme, und betrachten Sie stattdessen Daten von unten nach oben. Daten werden in Dokumenten eingegeben, die eine beliebige Anzahl unterschiedlicher Attribute aufweisen können. Es geht davon aus, dass Ihre Daten nach ihrer Definition unterschiedliche Arten von Attributen aufweisen. Es heißt: "Ich weiß nur, dass ich dieses Dokument in der Datenbank Person habe, das ein HomePlanet-Attribut von" Eternium "und einen Vornamen von" Lord Nibbler ", aber keinen Nachnamen hat." Dieses Modell passt Webseiten: Alle Webseiten sind ein Dokument, aber die tatsächlichen Inhalte/Tags/Schlüssel des Dokuments variieren so weit, dass Sie sie nicht in die starre Struktur einfügen können, von der das DBMS ausgeht. Aus diesem Grund hält Google das MapReduce-Modell für roxors soxors, weil die Datenmenge von Google so vielfältig ist, dass sie von Anfang an auf Mehrdeutigkeit ausgelegt werden muss und aufgrund der massiven Datenmengen die parallele Verarbeitung nutzen kann (MapReduce ist trivial). . Das Dokumentendatenbankmodell geht davon aus, dass sich die Attribute Ihrer Daten stark ändern oder "Lücken" aufweisen und viele dünn besetzte Spalten enthalten, die möglicherweise gefunden werden, wenn die Daten in einer relationalen Datenbank gespeichert sind. Während Sie ein RDBMS verwenden könnten, um solche Daten zu speichern, würde es sehr schnell hässlich werden.
Um Ihre Frage dann zu beantworten: Sie können nicht "relational" überhaupt denken, wenn Sie eine Datenbank betrachten, die das MapReduce-Paradigma verwendet. Weil es eigentlich keine erzwungene Beziehung hat. Es ist ein konzeptioneller Buckel, den du einfach überwinden musst.
Ein guter Artikel, den ich in das lief vergleicht und kontrastiert die beiden Datenbanken ziemlich gut MapReduce: A Major Step Back, die argumentiert, dass MapReduce Paradigma Datenbanken rückwärts ein technologischer Schritt, und sind zu RDBMSes minderwertig. Ich muss der These des Autors widersprechen und würde einwenden, dass der Datenbank-Designer einfach den für seine Situation richtigen auswählen müsste.
Es ist unwahrscheinlich, dass Sie jemals relationales DB-Wissen gelernt haben. Es ist eines dieser Themen, das viele Fehlinformationen darüber hat, wie legitimiert wird. Hast du jemals ein Chris Date Buch gelesen? Wenn Sie es getan hätten, würden Sie wahrscheinlich nicht versuchen, CouchDB zu benutzen. Du würdest es besser wissen. – Breton
Das heißt, stellen Sie sich vor, Sie haben eine einzige Tabelle namens "Dokumente" mit so vielen automatisch generierten Spalten, wie Sie brauchen, und ich denke, Sie haben eine gute Annäherung an das, worum es geht: Eine Domain-spezifische DB (Think Blogs) – Breton
@ Brenton - Hey, Hey! Erhalten Sie Ihre Fakten richtig. Das ist C J Date für dich. :) –