Comments on: Qu’est-ce qu’un UUID et à quoi ça sert ? http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/ Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 12:15:31 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Krysztof von Murphy http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6760 Krysztof von Murphy Fri, 08 Mar 2013 21:56:50 +0000 http://sametmax.com/?p=5179#comment-6760 Dans les clés primaires de table, l'UUID ça marche, oui, mais c'est un cauchemar pour déboguer. Si je cherche la PK 1234 dans plusieurs tables ou que je crée des requêtes avec ça, je m'en sors. Mais avec des UUID qui tiennent à peine dans les colonnes sur l'écran ? Je pleure... (Cas réel : le CRM de SAP) (on va dire que c'est un progrès par rapport aux tables sans clés primaire technique de R/3, même éditeur...) Bref, faut vraiment en avoir besoin. Dans les clés primaires de table, l’UUID ça marche, oui, mais c’est un cauchemar pour déboguer. Si je cherche la PK 1234 dans plusieurs tables ou que je crée des requêtes avec ça, je m’en sors. Mais avec des UUID qui tiennent à peine dans les colonnes sur l’écran ? Je pleure…
(Cas réel : le CRM de SAP) (on va dire que c’est un progrès par rapport aux tables sans clés primaire technique de R/3, même éditeur…)
Bref, faut vraiment en avoir besoin.

]]>
By: Sam http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6745 Sam Fri, 08 Mar 2013 14:36:33 +0000 http://sametmax.com/?p=5179#comment-6745 Les usages sont différents. uuid5 génère un uuid à partir d'une donnée. C'est juste un hash sha1 qui prend en compte un name space. Lui passer deux fois la donnée donne deux fois le même résultat: <pre lang="python">>>> uuid5(uuid.NAMESPACE_URL, 'http://sametmax.com') UUID('4c29cbcb-4c6f-5195-b0a8-1636fa52c4a0') >>> uuid5(uuid.NAMESPACE_URL, 'http://sametmax.com') UUID('4c29cbcb-4c6f-5195-b0a8-1636fa52c4a0')</pre> - uuid4() est purement aléatoire. Chaque appel donnera quelque chose de différent. Les usages sont différents.

uuid5 génère un uuid à partir d’une donnée. C’est juste un hash sha1 qui prend en compte un name space. Lui passer deux fois la donnée donne deux fois le même résultat:

>>> uuid5(uuid.NAMESPACE_URL, 'http://sametmax.com')
UUID('4c29cbcb-4c6f-5195-b0a8-1636fa52c4a0')
>>> uuid5(uuid.NAMESPACE_URL, 'http://sametmax.com')
UUID('4c29cbcb-4c6f-5195-b0a8-1636fa52c4a0')

- uuid4() est purement aléatoire. Chaque appel donnera quelque chose de différent.

]]>
By: JeromeJ http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6740 JeromeJ Fri, 08 Mar 2013 12:55:26 +0000 http://sametmax.com/?p=5179#comment-6740 Si on a uuid5 de dispo sur notre machine, c'est plus mieux de choisir ça non ? Si on a uuid5 de dispo sur notre machine, c’est plus mieux de choisir ça non ?

]]>
By: Sam http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6728 Sam Thu, 07 Mar 2013 19:37:13 +0000 http://sametmax.com/?p=5179#comment-6728 Les tirets sont seulement pour faciliter la lecture/dictée/comparaison visuelle (et identification de version) de l'UUID. Quand on stocke l'uuid, c'est plutôt sous forme de raw bytes ou de int. Raisons de ne pas choisir md5(rand()) : - c'est un standard. Quand on parle d'uuid v4, c'est la même chose quel que soit le langage (format, longueur de l'uuid, taux de collision, etc) - c'est explicite (quand on voit uuid4(), on sait ce qu'on va faire avec, alors qu'un md5() peut servir à plein de choses) - on a detecté des collisions dans md5, certes minimes, mais suffisantes pour emmerder quelqu'un qui gère des bases de données gigantesques avec des milliards d'insertion secondes (ex: google qui utilise les uuid pour ses clés dans big table) - ça évite de faire des conneries car si on s'y connait pas, choisir la bonne fonction pour rand() c'est risquer de se planter. La crypto et la génération peusdo aléatoire, c'est compliqué. Les tirets sont seulement pour faciliter la lecture/dictée/comparaison visuelle (et identification de version) de l’UUID. Quand on stocke l’uuid, c’est plutôt sous forme de raw bytes ou de int.

Raisons de ne pas choisir md5(rand()) :

- c’est un standard. Quand on parle d’uuid v4, c’est la même chose quel que soit le langage (format, longueur de l’uuid, taux de collision, etc)
- c’est explicite (quand on voit uuid4(), on sait ce qu’on va faire avec, alors qu’un md5() peut servir à plein de choses)
- on a detecté des collisions dans md5, certes minimes, mais suffisantes pour emmerder quelqu’un qui gère des bases de données gigantesques avec des milliards d’insertion secondes (ex: google qui utilise les uuid pour ses clés dans big table)
- ça évite de faire des conneries car si on s’y connait pas, choisir la bonne fonction pour rand() c’est risquer de se planter. La crypto et la génération peusdo aléatoire, c’est compliqué.

]]>
By: le hollandais volant http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6727 le hollandais volant Thu, 07 Mar 2013 19:21:31 +0000 http://sametmax.com/?p=5179#comment-6727 Mh… Mais pourquoi ne pas utiliser quelque chose comme md5(rand()) ? En choisissant une fonction rand() aussi aléatoire que celui pour UUID. Le UUID est bien joli avec ses tirets dedans, mais y’a une raison à leur présence dedans ? Mh… Mais pourquoi ne pas utiliser quelque chose comme md5(rand()) ? En choisissant une fonction rand() aussi aléatoire que celui pour UUID.

Le UUID est bien joli avec ses tirets dedans, mais y’a une raison à leur présence dedans ?

]]>
By: Sam http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6722 Sam Thu, 07 Mar 2013 14:02:48 +0000 http://sametmax.com/?p=5179#comment-6722 J'ai pourtant éditer les bytes que je pensaient responsable de l'echec critique, mais bon, visiblement ça marche pas mieux. Si quelqu'un trouve une solution simple, qu'il fasse tourner. J’ai pourtant éditer les bytes que je pensaient responsable de l’echec critique, mais bon, visiblement ça marche pas mieux. Si quelqu’un trouve une solution simple, qu’il fasse tourner.

]]>
By: Glandos http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6721 Glandos Thu, 07 Mar 2013 13:51:58 +0000 http://sametmax.com/?p=5179#comment-6721 @Sam: Merci pour la correction ! Je voulais renvoyer une commande style <code>wget http://sametmax.com/feed/ -O - -o /dev/null | xmllint --valid --noout -</code> mais maintenant que le flux a changé… Je précise qu'avant de râler, j'ai téléchargé le RSS avec wget, et j'ai fait une validation avec Netbeans (c'était le seul outil que j'avais sous la main à ce moment). Et ça avait également échoué. Google Reader et Liferea sont donc sûrement de meilleurs lecteurs, plus tolérants sur les erreurs… @Sam: Merci pour la correction !
Je voulais renvoyer une commande style wget http://sametmax.com/feed/ -O - -o /dev/null | xmllint --valid --noout - mais maintenant que le flux a changé…
Je précise qu’avant de râler, j’ai téléchargé le RSS avec wget, et j’ai fait une validation avec Netbeans (c’était le seul outil que j’avais sous la main à ce moment). Et ça avait également échoué.
Google Reader et Liferea sont donc sûrement de meilleurs lecteurs, plus tolérants sur les erreurs…

]]>
By: Anucunnilinguiste http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6709 Anucunnilinguiste Thu, 07 Mar 2013 00:29:50 +0000 http://sametmax.com/?p=5179#comment-6709 @Sam : Merci, mais ça dépend fortement de mon humeur ;) Aujourd'hui, il faisait beau. Enfin, je ne voudrais pas que l'on subodore que je ne sois seulement un trou du cul, un trouble-fête, un agitateur voire pire un salafiste, <strong>"j'ai beaucoup changé depuis le massacre de la rave de Villemont" ;) *</strong> *http://www.allocine.fr/film/fichefilm_gen_cfilm=15558.html @Sam : Merci, mais ça dépend fortement de mon humeur ;)

Aujourd’hui, il faisait beau. Enfin, je ne voudrais pas que l’on subodore que je ne sois seulement un trou du cul, un trouble-fête, un agitateur voire pire un salafiste, “j’ai beaucoup changé depuis le massacre de la rave de Villemont” ;) *

*http://www.allocine.fr/film/fichefilm_gen_cfilm=15558.html

]]>
By: Sam http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6708 Sam Wed, 06 Mar 2013 23:07:46 +0000 http://sametmax.com/?p=5179#comment-6708 Je note le premier commentaire constructif d'@Anucunnilinguiste depuis qu'il a rejoint notre blog. Mais ça valait le coup d'attendre, c'est une très bonne lecture. Ca mérite un tampon tient. Je note le premier commentaire constructif d’@Anucunnilinguiste depuis qu’il a rejoint notre blog. Mais ça valait le coup d’attendre, c’est une très bonne lecture. Ca mérite un tampon tient.

]]>
By: Anucunnilinguiste http://sametmax.com/quest-ce-quun-uuid-et-a-quoi-ca-sert/#comment-6702 Anucunnilinguiste Wed, 06 Mar 2013 22:05:11 +0000 http://sametmax.com/?p=5179#comment-6702 <span class="mention"></span>Quelques informations supplémentaires sur les UUID qui me semblent importantes : http://blog.ptsecurity.com/2012/10/random-number-security-in-python.html http://bugs.python.org/issue15206 http://programmers.stackexchange.com/questions/130261/uuid-collisions Quelques informations supplémentaires sur les UUID qui me semblent importantes :

http://blog.ptsecurity.com/2012/10/random-number-security-in-python.html

http://bugs.python.org/issue15206

http://programmers.stackexchange.com/questions/130261/uuid-collisions

]]>