2010-07-31 12 views

Antwort

29

Speicher für Spaltenfamilien wie Bigtable und Cassandra haben sehr begrenzte Abfragefunktionen. Die Anwendung ist verantwortlich für die Pflege von Indizes, um ein komplexeres Datenmodell abzufragen.

Mit Dokumentendatenbanken können Sie den Inhalt abfragen, nicht nur den Schlüssel. Es verwaltet auch die Indizes für Sie und reduziert so die Komplexität Ihrer Anwendung.

Domain-driven design evangelisiert die Verwendung von Aggregaten und Wertobjekten. As Ayende points out, (komplexe) Aggregate sind sehr natürliche Kandidaten, die als einzelnes Dokument gespeichert werden, anstatt sie über mehrere Tabellen oder Spaltenfamilien zu normalisieren. Dies reduziert die Komplexität Ihrer Persistenzschicht. Es ist auch weniger wahrscheinlich, dass verwandte Daten über mehrere Knoten verteilt sind, da alle Daten in einem einzigen Dokument enthalten sind.

Wenn Ihre Anwendung polymorphe Objekte speichern muss, sind auch Dokumentendatenbanken ein guter Kandidat. Natürlich könnte dies auch in Cassandra gespeichert werden, aber Sie werden nicht so viele Abfragefunktionen haben. Zumindest nicht aus der Box.

Stellen Sie sich eine Dokumentendatenbank als luxuriösen Sportwagen vor. Es braucht keinen professionellen Fahrer (sprich: komplexe Anwendung), um Sie von A nach B zu bringen, es verfügt über Funktionen wie Klimaanlage und bequeme Sitze und es wird die High-Scalability-Strecke in einer akzeptablen Zeit überholen. Wenn Sie jedoch einen Rundenrekord auf der High-Scalability-Spur setzen möchten, brauchen Sie einen professionellen Fahrer und ein hoch optimiertes Auto (z. B. Cassandra), die Funktionen wie Klimaanlage fehlt.

+1

Hey, was für eine schöne Beschreibung! Das Einzige, was ich hinzufügen möchte, ist, dass CouchDB das Honda Accord der Datenbanken sein will, nicht der Ferrari. Ich denke jedoch, dass es sich um unterschiedliche Metaphern handelt, die nur zufällig zusammenhängen. – JasonSmith

9

Ein weiteres Merkmal von CouchDB ist, dass Sie diese Aggregationen erstellen, nicht als Dokumente manuell gespeichert, sondern als Ansichten (die aus den gespeicherten Daten abgeleitet werden, und automatisch aktualisiert.)

Das ist wie elektrische Fensterheber, beheizbare Sitze oder die tretende Stereoanlage.

+0

Stoßen frech von Natur aus natürlich – JasonSmith