2011-01-15 4 views
4

Ich denke CouchDB ist wirklich cool und möchte es mehr verwenden. Aber ich würde auch gerne im Voraus wissen, ob es irgendwelche Arten von Datenabfragen gibt, die leicht auf MySQL durchgeführt werden können, aber in CouchDB unmöglich oder sehr umständlich durchzuführen sind.Welche Arten von Datenabfragen sind auf CouchDB (im Gegensatz zu SQL) zu schwer zu machen? Ich suche konkrete Beispiele

Bitte antworten Sie mit konkreten Antworten oder Beispielen, anstatt nur zu sagen: "CouchDB ist für Dokumente und MySQL ist für relationale Daten." Ich weiß nicht wirklich, was diese Aussage bedeutet, denn es scheint, dass Sie Dinge tun können, die funktional äquivalent zu relationalen MySQL-Joins mit CouchDB-Ansichten sind.

Zum Beispiel habe ich gelesen, dass das Paginieren durch einen Datensatz in CouchDB ein wenig peinlich ist. Das ist die Art von Antwort, nach der ich suche.

Antwort

4

Ein Problem, das ich gerade habe, ist die Anzeige eines AJAX Grids mit Inhalten aus einer CouchDB Datenbank. Die entsprechende SQL-Anfrage wäre:

SELECT * FROM the_table 
WHERE {filter_col} = {filter_value} [ AND ... ] 
ORDER BY {order_col} 
LIMIT {n} OFFSET {m} 

Es ist eine ziemlich einfache Anfrage auf einer traditionellen SQL-Datenbank zu laufen, aber Filterung durchführen zu müssen, Bestellung und Paging alle zusammen in der gleichen Zeit ist jenseits dem, was CouchDB Indizierung verwalten - zumindest ohne eine wahnsinnige Anzahl unterschiedlicher Ansichten zu erzeugen.

1

Es hängt alles von der Motivation ab, Datenspeicher zu wechseln. Welche Probleme oder architektonischen Herausforderungen versuchen Sie mit MySQL zu lösen, die CouchDB lösen kann? Wenn am Ende des Tages kein Unterschied in der Funktionalität oder Leistung besteht, kann das Refactoring zum Ändern der Datenbankplattformen nicht gerechtfertigt werden.

Werfen Sie einen Blick auf einige ORM-Frameworks, die, wenn sie korrekt implementiert sind, die Backend-Datenbanken leicht austauschen können.

+0

Ich denke, meine Frage ist in einem gewissen Sinne, was sind die entscheidenden Unterschiede in der Funktionalität zwischen MySQL und CouchDB? Gibt es einige Dinge, die ich bei MySQL für selbstverständlich halte, die ich (unangenehm) feststellen werde, dass CouchDB schlecht darin ist? – dan

+0

Gut für den Anfang, es ist schrecklich bei der Speicherung von relationalen Daten ...;) – coreyward

+0

Noch einmal hängt es davon ab, wie diese große Anwendung MySQL verwendet. Wenn es nichts anderes als ein flacher Datenspeicher ist, dann wahrscheinlich kein Problem. Die erste Zeile auf der CouchDB-Website lautet jedoch "Hinweis: Die Version 1.0.0 enthält einen kritischen Fehler, der in der Standardkonfiguration zu Datenverlust führen kann". Dies deutet darauf hin, dass das Projekt im Vergleich zu MySQL ziemlich unausgereift ist. Was ist der alte Ausdruck? Implementiere niemals Version 1.0 von irgendetwas. – tawman

2

Couchdb hat harte Zeit mit Volltextsuchen (es sei denn, externe Software wird verwendet), obwohl MySQL ist nicht besonders gut, Couch ist noch schlimmer.

CouchDB ist keine gute Arbeit, wenn Ihr Datenmodell mehrere und komplexe Beziehungen zwischen Objekten schon sagt, nach allem zu tun, gehen, es ist ein Dokument-basierten System, nicht relationalen DBMS.

Andere als das, IMO Couch Regeln.

EDIT: Vor allem, wenn Sie sich entspannen müssen, natürlich! :)