CouchDB generiert standardmäßig automatisch eine uuid, über die man direkt ein Dokument abrufen kann. Aber diese uuid hat man nicht immer zur Hand, weshalb man eigentlich nur über einen View an die Dokumente kommt.
Man kann aber auch eigene IDs vergeben, aber eben mit der Gefahr, dass man eine ID doppelt hat und eventuell ein vorhandenes Dokument überschreibt. Die Datenbank überprüft das nicht.
Zwei Fragen: was ist sinnvoller? Und was ist schneller?
Ich bin mir nicht sicher, ob der direkte Zugriff auf die ID wirklich so schnell ist. Verwendet man einen View wird ja ein B-Tree erzeugt. Für die ID wird das meines Wissens nach nicht gemacht, weshalb die Datenbank linear durch alle Dokumente laufen muss.
CouchDB: uuid oder eigene ID?
Nein, das muss sie nicht. Ich kann dir nicht sagen, was genau sie macht, aber da wird 100%ig ein Index hinter liegen. CouchDB ist ja zB dazu gedacht, selbst-gehostete Webanwendungen aus HTML + JS zu beinhalten - und da greift man via Pfaden auf die verschiedenen Resourcen zu. Das waere ja kreuzlahm, wenn es denn linear in der Anzahl der Dokumente ist.
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
also ich verwende als Dokumentennamen nur handvergebene Namen, also Text statt uuid. Die kann man sich a) merken und man kommt b) über "jump to" (oder wie der Punkt auch heißt) schnell hin.
Von der Performance macht das IMHO null Unterschied (was mich auch wundern würde, siehe deets Anmerkung).
Bist du sich, dass CouchDB nicht meckert, wenn du ein Dokument doppelt anlegen willst? Kann gerade nicht testen, weil auf diesem Rechner kein CouchDB läuft.
Gruß, noisefloor
also ich verwende als Dokumentennamen nur handvergebene Namen, also Text statt uuid. Die kann man sich a) merken und man kommt b) über "jump to" (oder wie der Punkt auch heißt) schnell hin.
Von der Performance macht das IMHO null Unterschied (was mich auch wundern würde, siehe deets Anmerkung).
Bist du sich, dass CouchDB nicht meckert, wenn du ein Dokument doppelt anlegen willst? Kann gerade nicht testen, weil auf diesem Rechner kein CouchDB läuft.
Gruß, noisefloor
Das Konzept von Couchdb ist simpel wie auch wirkungsvoll.
Du musst mit der ID auch eine Revisionsnummer übergeben,
sonst wird die Änderung nicht angenommen.
Ergo, kannst du eine sinnvolle id erzeugen, dann mach das,
sonst nimm die uuid wie eine AutoIncrement hin.
Couchdb ist anders cool als andere Datenbanken.
Machs gut,
Drache
Du musst mit der ID auch eine Revisionsnummer übergeben,
sonst wird die Änderung nicht angenommen.
Ergo, kannst du eine sinnvolle id erzeugen, dann mach das,
sonst nimm die uuid wie eine AutoIncrement hin.
Couchdb ist anders cool als andere Datenbanken.

Machs gut,
Drache
Das Problem ist weniger die Datenbank selbst sondern die Verwendung von "Document Mapping". Das Document Object macht mir etwas zu schaffen.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol: