2009-06-29 12 views
3

Ich komme aus einem RDBMS-Hintergrund, und ich habe hier eine Anwendung, die eine gute Skalierbarkeit und geringe Latenz erfordert. Ich möchte CouchDB ausprobieren. Ich muss jedoch erkennen, wenn eine bestimmte INSERT-Operation aufgrund einer eindeutigen Schlüsseleinschränkung fehlschlägt. Unterstützt CouchDB dies? Ich habe mir die Dokumente angesehen, aber ich konnte nichts Relevantes finden.Unterstützt CouchDB eine Schlüsseleinschränkung?

+0

Sie sind sich der Tatsache bewusst, dass selbst das Projekt selbst angibt, dass es nicht für die Produktion bereit ist und dass es signifikante Änderungen geben kann? http://wiki.apache.org/couchdb/Frequently_asked_questions#is_couchdread_ready_for_production – jitter

+0

Ja, wenn ich online nachschaue, habe ich das gesehen, aber ich bin bereit, diesen Weg zu gehen, weil ich nicht das gesamte System darauf baue, aber nur eine bestimmte Komponente, die diese Art von Skalierbarkeit benötigt. – thomas55

Antwort

2

Die _id für jedes Dokument ist eindeutig (innerhalb derselben Datenbank), aber für andere Felder im Dokument gibt es keine Einschränkungen.

Insbesondere gibt es keine Einschränkungen, die auf zwei oder mehr Dokumente angewendet werden.

Sie können validation documents einrichten, um Validierungsregeln für Dokumente einzurichten, aber sie sind wiederum dokumentenbasiert.

1

Wie das obige Poster sagt, gibt es keine Einschränkungen für andere Felder als das Dokument _id. Die _id kann automatisch von couchdb generiert werden oder Sie können Ihre eigenen erstellen. (Für meine Zwecke habe ich mein eigenes erstellt, da ich wusste, dass ich die Einzigartigkeit des Schlüssels garantieren konnte). Wenn Sie auf der niedrigsten API-Ebene eine PUT-Anforderung einer vorhandenen Dokument-ID versuchen, wird sie mit einem HTTP 409-Fehler zurückgewiesen - es sei denn, Sie geben die richtige Revision (_rev-Eigenschaft) des vorhandenen Dokuments ein.

Ich würde mit Couchdb nichts Missionskritisches laufen lassen, aber der Code ist aus Apache-Inkubation und recht funktional. Eine Reihe von Menschen betreiben Websites damit.