Es ist eine nicht-relationale Datenbank, Open-Source, verteilte (inkrementelle, bidirektionale Replikation), schemafrei. Eine CouchDB-Datenbank ist eine Sammlung von Dokumenten; Jedes Dokument besteht aus einer Reihe von String- "Schlüsseln" und entsprechenden "Werten" (das können Zahlen, Strings, Listen, Datumsangaben usw. sein). Sie können Indizes, Abfragen, Ansichten haben.
Wenn sich eine relationale DB auf Sie beschränkt (Sie finden Schemas zu starr, können die DB-Engine nicht über eine sehr große Anzahl von Servern verteilen, usw.), ist CouchDB eine Überlegung wert (es ist eine der interessantesten der viele nicht-relationale DBs, die in diesen Tagen entstehen).
Aber wenn all Ihre Arbeit glücklich in eine relationale Datenbank passt, möchten Sie das wahrscheinlich für die Produktionsarbeit fortsetzen (auch wenn das "Herumspielen" mit einer nicht-relationalen Datenbank immer noch Ihre Zeit wert ist, nur für den persönlichen Gebrauch) Wachstum und Erbauung, das ist ganz anders als die Übertragung riesiger Produktionssysteme von einer relationalen DB! -).
Um aus wikipedia
zu zitierenEs ist kein relationales Datenbankverwaltungssystem. Anstatt Daten in Zeilen und Spalten zu speichern, verwaltet die Datenbank eine Sammlung von JSON-Dokumenten. Die Dokumente in einer Sammlung müssen kein Schema gemeinsam haben, aber Abfragemöglichkeiten über Ansichten behalten.
CouchDB bietet ein anderes Modell für die Datenspeicherung als eine traditionelle relationale Datenbank, da es Daten nicht als Zeilen in Tabellen darstellt, sondern Daten als "Dokumente" im JSON-Format speichert.
Dieser Unterschied im Datenspeichermodell unterscheidet CouchDB von Produkten wie MySQL und SQL Server.
Hinsichtlich des programmatischen Zugriffs auf CouchDB wird eine REST-API verfügbar gemacht, auf die Sie zugreifen können, indem Sie HTTP-Anfragen aus Ihrem Code senden
Ich hoffe, dass dies etwas hilfreich war, obwohl ich anerkenne, dass es meiner minimalen Vertrautheit mit dem Produkt nicht entspricht.
Ich bin weit von einem Experten entfernt (alles, was ich getan habe, ist es, mit ihm herumzuspielen ...), aber ich denke darüber nach, es zu benutzen:
Wenn ich eine App entwerfe, habe ich normalerweise eine Reihe von App-Servern hinter einem Load Balancer. Oft habe ich Sticky-Sitzungen, so dass jeder Benutzer während dieser Sitzung zum selben App-Server zurückkehrt. Was ich denke, ist eine Couchdb-Instanz, die an jeden App-Server gebunden ist.
Auf diese Weise können Sie diese lokale Couchdb verwenden, um auf Benutzereinstellungen, Produktdaten zuzugreifen ... welche Daten Sie auch haben, die nicht perfekt auf dem neuesten Stand sein müssen.
Also ... jetzt haben Sie Daten über diese lokalen CouchDBs. CouchDB erlaubt die Replikation. Also, jeden festen Zeitraum, verschmelzen die Daten zurück (alle X Sekunden?) In seine Kollegen, um sie auf dem neuesten Stand zu halten.
Als Ganzes sollten Sie sich keine Gedanken über Konflikte machen müssen b / c jeder Anwendungsserver hat seine eigene CouchDB und Benutzer sind mit dem Anwendungsserver verbunden, und Sie haben eventuell Konsistenz, weil Sie Replikation haben.
Beantwortet das Ihre Frage?
Ein gutes Beispiel ist, wenn Sie sagen, dass Sie mit Personendaten auf einer Website oder in einer Anwendung umgehen müssen. Wenn Sie sich dazu entschließen, die Daten zu gestalten und die Informationen der einzelnen Personen getrennt zu halten, ist das ein guter Fall für CouchDB, das Daten in Dokumenten statt in relationalen Tabellen speichert. In einer Produktionsbereitstellung können meine Nutzer möglicherweise Ad-hoc-Daten zu etwa 10% der Personen und einige andere lustige Details zu weiteren ausgewählten 5% hinzufügen. In einem relationalen Kontext könnte dies zu einer Menge Redundanz führen, aber nicht für CouchDB.
Und es geht nicht nur um die Tatsache, dass CouchDB nicht relational ist: Wenn Sie sich zu sehr darauf konzentrieren, fehlt Ihnen der Punkt. CouchDB ist an das Web angeschlossen, alles, was Sie brauchen, um zu beginnen, ist HTTP zum Erstellen und Ausführen von Abfragen (GET / PUT / POST / DELETE ...), und es ist RESTful, plus die Tatsache, dass es portabel und großartig für Peer-to-Peer-Sharing ist . Es kann auch Web-Anwendungen in so genannten "CouchApps" bereitstellen, wobei CouchDB die Bilder, CSS, Markups als Daten speichert, die unter speziellen Dokumenten gespeichert sind, die Design-Dokumente genannt werden.
Tags und Links database couchdb schemaless