CouchDB: uuid oder eigene ID?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

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.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
deets

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.
Benutzeravatar
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
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

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. :D
Machs gut,
Drache
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Mach lieber zusätzlich, zur _id noch ein eigenes ID fällt, mit eigenem Text. So habe ich das gelöst.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

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:
Antworten