Soll ich die ID der Dokumente in einer CouchDB generieren oder sollte CouchDB diese generieren? Was sind die Vor- oder Nachteile dieser Ansätze? Gibt es Auswirkungen auf die Leistung bei diesen Optionen?
Es gibt keinen Unterschied in Bezug auf CouchDB. Frederick hat recht, dass sequenzielle IDs etwas schneller sind. Wenn Sie /_uuids?count=10
abfragen, werden Sie feststellen, dass die UUIDs (standardmäßig) sequenziell sind.
Aber selbst mit zufälligen IDs, sobald Sie die Komprimierung ausführen, befinden sich alle intern in der .couch
-Datei in der "richtigen" Reihenfolge und zu diesem Zeitpunkt gibt es keinen Unterschied. Auf lange Sicht sorge ich mich normalerweise nicht darum.
Die Hauptsache ist, dass Sie meistens sequenzielle IDs verwenden sollten. Als diesen Artikel und dieses bisschen couchdb Buch zu erklären, mit zufälligen IDs führt zu einer viel weniger effizienten Struktur intern, sowohl Geschwindigkeit und in Bezug auf den Raum verwendet auf Scheibe.
Selbst generierte IDs sind fast unmöglich zu handhaben, wenn Sie zwei oder mehr getrennte Instanzen Ihrer App haben. Weil die Synchronisation zwischen den verschiedenen Instanzen nicht sofort erfolgt. Eine Lösung hierfür kann darin bestehen, dass ein Server dediziert ist, um die IDs zu generieren (oder die Verfügbarkeit zu prüfen), zum Beispiel mithilfe einer SQL-Datenbank, und als Gate für die Dokumenterstellung fungiert.
Wenn Sie andererseits nur einen Server haben und nie mehr benötigen, gibt es einen Vorteil, den ich für selbst erzeugte Uids interessant finde: da sie eindeutig sein müssen, können Sie sie in URLs verwenden. Nimm zum Beispiel den Slug des Titels eines Blogposts als _id
.
Leistungsmäßig sind die generierten IDs der CouchDB ziemlich lang. Wenn Ihre eigenen IDs also kürzer sind, sparen Sie erheblichen Speicherplatz (vorausgesetzt, Sie haben eine Menge Dokumente).
Beide Antworten sagen über PROS von sequentiellen IDs. Hier ist ein großes Problem durch sequentielle IDs aufgetreten.
Vorhersagbarkeit anderer IDs in Dokumenten mit einer einzigen ID.
Aus diesem Grund können wir keine sequentiellen IDs in Anwendungs-URLs als IDs verwenden, da andere IDs mit einer ID vorhersagbar sind, und die Verwendung als URL-Authentifizierung ebenfalls nicht möglich ist (wie bei File-Sharing-Diensten).
Tags und Links couchdb