2010-07-27 2 views
7

Ich habe mich mit dem Ordnance Survey Code-Point Open Datensatz von UK Postleitzahlen/Koordinaten beschäftigt. Da Couch.io eine frei gehostete CouchDB-Instanz anbot, dachte ich, ich würde meine Geo-Daten in eine von denen einbringen und dabei etwas über CouchDB lernen.Für welche Art von Anwendung wäre CouchDB am nützlichsten/leistungsstärksten?

Die Idee war, dass, da CouchDB gut im Umgang mit großen Datensätzen sein soll (die Postleitzahldaten sind etwa 1,7 Millionen Datensätze) und nativ mit REST/JSON funktioniert, würde es gut mit Client-Seite jQuery zur Verwendung mit Google Maps-Anwendungen.

Mein ursprüngliches Ziel war einfach, einen AJAX-Aufruf mit einer Postleitzahl als Parameter zu machen und ein einzelnes JSON-Objekt mit lat/lon-Eigenschaften zurückzubekommen, das ich in meinem Skript (mit einem Marker für diese Postleitzahl) konsumieren könnte).

Ich habe das erfolgreich gemacht, aber aus einem relationalen DB-Hintergrund stammend war es viel schwieriger als ich dachte; Wenn ich mehr über CouchDB lese und ein wenig damit spiele, habe ich den Eindruck, dass es nicht das richtige Werkzeug für diesen Job wäre, wenn ich es tatsächlich für ein reales Projekt verwende.

Bin ich der Meinung, dass dynamische Abfragen für CouchDB eine Schwäche darstellen? Ist es eher darauf ausgerichtet, aus großen Datenmengen große Ansichten zurückzugeben, die sich nicht allzu oft ändern? Was könnten einige Beispiele für "gute" und "schlechte" Anwendungen von CouchDB sein, wenn es darum geht, seine Stärken zu nutzen?

Antwort

5

Ich bin der Hauptcouchio-hosting-Typ. Freut mich, dass Sie CouchDB genießen.

Mein Gefühl ist im Grunde, relationale Datenbanken sind besser bei ständig wechselnden, einmaligen Abfragen von großen Datenmengen. Es dauert immer noch, bis sich all diese Daten durchgesetzt haben. Weder SQL noch NoSQL ist eine Wunderwaffe dort. Im Allgemeinen sind die NoSQL-Datenbanken jedoch besser, wenn Sie bereits wissen, welche Fragen Sie stellen werden. Mit anderen Worten, es ist keine Frage, wie viel die Daten ändert, aber wie viel die Abfragen ändern.

Das ist die Theorie. Ist CouchDB für Ihr spezifisches Projekt gut geeignet? Mein Gefühl ist, dass es nichts falsch ist, viele viele Indizes auf dem Basisdatensatz zu machen. Der Vorteil von Nur-Index-Abfragen ist, dass die Abfragen sehr schnell ablaufen. Insbesondere CouchDB muss nur neue Daten neu indizieren, auch für Abfragen wie Durchschnittswerte oder XOR-Prüfsummen.

Also, auch wenn Sie hundert verschiedene Arten von Abfragen haben, die Sie ausführen könnten, wenn Sie bereits wissen, was diese Abfragen sind, hey sie einfach aufschreiben. Wenn Sie jedoch nie aufhören werden, brandneue Fragen zu stellen, würde CouchDB es schwer haben, mitzuhalten.

+0

Dank dafür, es unterstützt, was ich dachte (auch wenn ich es vielleicht nicht sehr deutlich habe). –

+0

Sagen wir, Sie haben einen Logger für eine Ressource. Auf die Ressourcen wird von vielen Benutzern jede Sekunde zugegriffen. Der Logger muss die aktuelle Anzahl der Benutzer, die auf die Ressource zugreifen, und die durchschnittliche Zeit, zu der die Ressource von allen Benutzern verwendet wird, berechnen. Gegenwärtig kann MySQL nicht mit der Anzahl der Schreibvorgänge Schritt halten. Wäre CouchDB eine bessere Lösung? – Cory