La probabilité de Collision de ObjectId vs UUID dans un grand système distribué

Considérant le fait que l'UUID de la rfc 4122 (16 octets) est beaucoup plus grand qu'un MongoDB ObjectId (12 octets), j'essaie de trouver comment leur probabilité de collision comparer.

Je sais que c'est quelque chose autour de assez rare, mais dans mon cas, la plupart des identifiants seront générés à l'intérieur d'un grand nombre de clients mobiles, et non pas dans un ensemble limité de serveurs. Je me demande si dans ce cas, il y a lieu d'être préoccupé par.

Par rapport à la normale dans les cas où tous les codes sont générés par un petit nombre de clients:

  • Il pourrait prendre des mois pour détecter une collision depuis la création du document
  • Id est généré à partir d'un beaucoup plus grand client de la base de
  • Chaque client dispose d'un ID inférieure taux de génération de
  • Pourquoi êtes-vous permettant aux clients mobiles pour créer l'ObjectIds, ou tout Identifiant permanent si vous êtes inquiet que l'intégrité des données?
  • Les clients peuvent être en mode hors connexion et de stocker des informations qui ne peuvent pas être synchronisées pour un long moment. Je ne veux pas forcer un 100% en ligne, application mobile
  • la plupart des client bibliothèque implémentations de créer le _id valeur par défaut. Pas en disant que c'est une "bonne idée" pour vous connecter directement. Mais "ObjectId" génération est parfaitement valide.
  • Personnellement, je ne voudrais pas de construire ou de concevoir un système qui a permis au client de le faire. J'avais affecter les Id temporaires en mode hors connexion. Je considérerais pas différent que d'attendre qu'un client n'a pas à écrire directement à MongoDb, sans passer par une validation des données de la couche.
  • sais que la plupart des clients ne que par défaut. Un client en mode hors connexion peut encore créer, mais ils auraient besoin d'être validé avant de l'insérer dans la collection.
  • Je voudrais éviter de ne pas utiliser ObjectId depuis MongoDB optimise ce type de données. Parfois même, il exige d'eux le passé (Agrégation cadre?)
  • J'aime vraiment le contenu de @mnémosyne, si, pour pas grand-chose d'autre qu'elle ne peut le faire le monotone point de ce qui est inhérent à la conception de la spécification. En tant que tel j'ai également trouvé ce une bonne question à poser et très valable considération pour les autres à voir dans l'avenir. L'ensemble de point de explique la "collision facteur" est l'un aime plus que "très peu probable".
  • Tout cela m'a fait reconsidérer le rôle de l'Uuid pour les clients hors ligne. @WiredPrairie commentaire sur le temporel des id d'attente pour la validation de la couche semble être mieux l'avenir que de compter seulement sur les Uuid, mais également une douleur à mettre en œuvre... eh bien, la partition de la tolérance n'a jamais été un morceau de gâteau. Merci pour le "problème d'anniversaire" de mentionner.