Comment générer des identifiants uniques entiers comme Facebook Twitter

Après la recherche, et d'autres sites, je n'ai pas réussi à venir avec des preuves concluantes à la façon dont Facebook, Twitter et Pinterest générer leurs ID. La raison de ce qui est nécessaire pour éviter les url des collisions. Se déplaçant à une tout autre code d'identification de la prévenir de cela parce qu'il ne sera pas trillions de dossiers.

  • Facebook.com/username/posts/362095193814294
  • Pinterest.com/pin/62487513549577588
  • Twitter.com/#!/nom d'utilisateur/statut/17994686627061761

Si vous regardez Pinterest comme un exemple, les quelques premiers chiffres se rapportent à l'id d'utilisateur et le dernier 6 chiffres représentent l'enregistrer id qui pourrait éventuellement être un auto incrément.

Pour créer un ID, mais pas unique, j'ai pu utiliser: base_convert(user_id.save_id, 16, 10). Le problème ici est qu'il n'est pas unique, ex: base_convert(15.211, 16, 10) vs base_convert(152.11, 16, 10). Ces deux sont les mêmes. Il suffit juste de la fusion de deux ensembles de nombres seront toujours produire les résultats. Jeter uniqid() dans le mélange essentiellement à corriger les doublons, mais cela ne semble pas être une grande pratique.

Mise à jour: Twitter semble utiliser ce: https://github.com/twitter/snowflake

Des suggestions sur la génération d'un IDENTIFIANT unique, comme les exemples ci-dessus?

source d'informationauteur stwhite