Auftreffwahrscheinlichkeit von ObjectId vs UUID in einem großen verteilten system

Wenn man bedenkt, dass eine UUID rfc 4122 (16 bytes), die ist viel größer als eine MongoDB ObjectId (12 bytes), ich bin versucht, herauszufinden, wie Ihre Kollisions-Wahrscheinlichkeit zu vergleichen.

Ich weiß, dass ist etwas, um Recht unwahrscheinlich, aber in meinem Fall die meisten ids generiert werden, die innerhalb einer großen Anzahl von mobilen clients, die nicht in einem beschränkten Satz an Servern. Ich Frage mich, ob in diesem Fall, es ist ein berechtigtes Anliegen.

Im Vergleich zu den normalen Fall, wo alle ids generiert werden, indem eine kleine Anzahl von clients:

  • Es könnte Monate dauern, um eine Kollision erkennen, da die Erstellung von Dokumenten
  • - IDs generiert werden, die von einem sehr viel größeren Kundenstamm
  • Jeder Kunde hat eine niedrigere ID-generation rate
  • Warum sind Sie die mobilen clients zum erstellen der ObjectIds, oder einer permanenten Id, wenn Sie sich sorgen um die Integrität der Daten?
  • Die clients offline, und speichern von Informationen, die möglicherweise nicht synchronisiert werden für eine lange Zeit. Ich will nicht zu zwingen, eine 100 - % - online-mobile app
  • die meisten client - Bibliothek-Implementierungen erstellen der _id Wert standardmäßig. Nicht sagen, dass es eine "gute Idee", eine direkte Verbindung herzustellen. Aber "ObjectId" generation ist durchaus gültig.
  • Persönlich würde ich nicht bauen, oder entwerfen Sie ein system, das erlaubt Kunden, dies zu tun. Ich würde zuweisen von temporären Ids wenn man offline ist. Ich würde überlegen, nicht anders als erwartet ein client nicht direkt schreiben, MongoDb, ohne Umweg über einen Daten-Validierung Schicht.
  • wissen die meisten Kunden, die standardmäßig. Ein offline-client könnte noch erstellen, aber Sie müssen überprüft werden, vor dem einfügen in die collection.
  • Ich möchte vermeiden, nicht mit ObjectId da MongoDB optimiert diese Daten geben. Manchmal ist es sogar erforderlich, Sie die Vergangenheit (Aggregation framework?)
  • Ich mag den Inhalt von @mnemosyn, wenn für nicht viel anderes, als es macht den monotonic zeigen Sie, dass ist inhärent in der Gestaltung der spec. Als solche fand ich auch diese eine faire Frage, und eine sehr gültige Gegenleistung für andere in der Zukunft sehen. Die Gesamt-Punkt sagt "die Kollision Faktor" ist wie ein viel mehr als "ziemlich unwahrscheinlich".
  • All dies machte mich zu überdenken, die Rolle der UUIDs für offline-clients. @WiredPrairie Kommentar auf die zeitliche ids warten auf Validierung Ebene besser zu sein scheint für die Zukunft gerüstet ist, als nur unter Berufung auf UUIDs, aber auch so ein Schmerz zu implementieren... naja, partition Toleranz war noch nie ein Stück Kuchen. Vielen Dank für das "Geburtstags-problem" zu erwähnen.

Schreibe einen Kommentar