Warum sollte ich eine dokumentbasierte Datenbank anstelle einer relationalen Datenbank verwenden?
Warum sollte ich verwenden, Dokument-basierte Datenbank wie CouchDB anstatt der Verwendung der relationalen Datenbank.
Gibt es typische Arten von Anwendungen oder Domänen, in denen das Dokument basiert, Datenbank ist dafür besser geeignet als das relationale Datenbank?
InformationsquelleAutor der Frage Bartosz Blimke | 2009-01-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich Sie sollten nicht 🙂
Die zweite offensichtlichste Antwort ist, die Sie verwenden sollten, wenn Sie Ihre Daten nicht relational. Dies äußert sich meist in keine leichte Art und Weise zu beschreiben, Ihre Daten als eine Reihe von Spalten. Ein gutes Beispiel ist eine Datenbank, wo Sie speichern tatsächlich Papier-Dokumente, z.B. durch Scannen von Büro-mail. Die Daten der gescannten PDF-Datei, und Sie haben einige meta-Daten, die immer vorhanden ist (gescannt, gescannt, Art des Dokuments) und eine Reihe von möglichen Metadaten-Felder, die es irgendwann (Kundennummer, Lieferantennummer, Bestellnummer, halten Sie auf die Datei, bis Sie OCRed Volltext, etc). Normalerweise müssen Sie nicht im Voraus wissen, welche Metadaten-Felder, die Sie hinzufügen werden, die innerhalb der nächsten zwei Jahre.
Dinge wie CouchDB arbeiten ist viel schöner, für diese Art von Daten als relationale Datenbanken.
Ich auch persönlich Liebe die Tatsache, dass ich nicht brauchen keine client-Bibliotheken für CouchDB außer ein HTTP-client, welcher heutzutage bei fast jeder Programmiersprache.
Den wahrscheinlich am wenigsten offensichtliche Antwort: Wenn Sie spüren keine Schmerzen mit einem RDBMS, bei ihm bleiben. Wenn Sie haben immer zu arbeiten, um Ihre RDBMS, um Ihren job zu erledigen, eine Dokument-orientierte Datenbank könnte einen Blick Wert sein.
Für eine ausführlichere Liste überprüfen dieser Eintrag von Richard Jones.
InformationsquelleAutor der Antwort max
CouchDB (aus Ihrer website)
Einer Dokumenten-Datenbank-server, zugänglich mittels eines RESTful JSON API. In der Regel relationale Datenbanken sind nicht einfach der Zugriff erfolgt über REST-services, erfordern aber eine viel komplexere SQL-API. Oft sind diese API (JDBC, ODBC, etc.) sind ziemlich Komplex. REST ist ganz einfach.
Ad-hoc und schema-frei mit einem flachen Adressraum. Relationale Datenbanken mit komplexen, festen schema. Definieren Sie Tabellen, Spalten, Indizes, Sequenzen, views und andere Sachen. Couch erfordert nicht diese Ebene der komplexen, teuren, zerbrechlichen advanced planning.
Verteilt, mit robusten, inkrementellen Replikation mit bidirektionaler Konflikterkennung und-management. Einige SQL-kommerzielle Produkte bieten. Da der SQL-API und die festen Schemata, diese ist Komplex, schwierig und teuer. Für die Couch, es erscheint einfach und preiswert.
Abfrage-fähig und index-in der Lage, mit einem Tisch orientierten reporting-engine, die Javascript verwendet als Abfragesprache. So hat SQL und relationalen Datenbanken. Nichts neues hier.
So. Warum CouchDB?
InformationsquelleAutor der Antwort S.Lott
Für dumm zu speichern und für andere-Server-Daten.
In den letzten paar Wochen habe ich das spielen mit einem lifestream app, die Umfragen meine feeds (delicious, flickr, github, twitter,...) und speichert Sie in couchdb. Die Schönheit von couchdb ist, dass es lässt mich immer die original-Daten in Ihrer ursprünglichen Struktur mit no-overhead. Ich habe eine 'Klasse' - Feld für jedes Dokument, speichern Sie den source-server, und schrieb ein javascript-render-Klasse, die für jede Quelle.
Verallgemeinern, Wann immer Sie Ihre server kommuniziert mit einem anderen server eine schema-weniger Speicher ist am besten, da Sie keine Kontrolle über das schema. Als bonus, couchdb verwendet die native Protokolle von Servern und clients JSON - Repräsentation und HTTP-REST-für den transport.
InformationsquelleAutor der Antwort daonb
Rapid application development in den Sinn kommt.
Wenn ich ständig weiterentwickelnden mein schema, ich bin ständig frustriert durch die Pflege des Schemas in MySQL/SQLite. Ich habe zwar nicht allzu viel getan, mit CouchDB noch, tun ich mag, wie einfach es ist, sich zu entwickeln, das schema während der RAD-Prozess.
Einen Fall, wo Sie vielleicht nicht möchten, verwenden Sie eine nicht-relationale Datenbank ist, wenn Sie haben eine Menge von viele-zu-viele-Beziehungen; ich habe noch in meinen Kopf zu kriegen, wie gute MapReduce-Funktionen, um diese Art von Beziehungen, insbesondere wenn Sie brauchen, um Metadaten in die verknüpfte Beziehung. Ich bin mir nicht sicher, aber ich glaube nicht, dass CouchDB-Map-Funktionen Ihr eigen nennen können Abfragen auf die Datenbank, da das verursachen könnten Endlosschleifen.
InformationsquelleAutor der Antwort pixelcort
Verwenden ein Dokumenten-basierte Datenbank, wenn Sie nicht benötigt zum speichern von Daten in Tabellen mit einheitlicher große Felder für jeden Datensatz. Stattdessen müssen Sie eine Notwendigkeit der Speicherung wird jeder Datensatz als ein Dokument, das bestimmte Merkmale hat. Eine beliebige Anzahl von Feldern beliebiger Länge können dynamisch Hinzugefügt werden, um ein Dokument zu jeder Zeit, ohne die Notwendigkeit, "ändern der Tabelle" ersten. Felder im Dokument können auch mehrere Stücke von Daten.
InformationsquelleAutor der Antwort smdelfin