FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009
-
7 janv. 2008 à 12:27
Utilisateur anonyme -
23 juin 2009 à 02:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Très intéressant, mais j'arrive pas a le faire marcher :
Copier collé dans l'exécution SQL de phpmyadmin et erreur sur la 2eme ligne, et c'est pas la seul.
yopai_v
Messages postés47Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention21 avril 2010 30 nov. 2008 à 08:51
2 petits avertissements pour les néophytes en .NET/Mysql qui tomberaient sur cette source.
L'ambiguïté potentielle (pour quelqu'un qui lirait un peu vite sans chercher à comprendre, ce qui n'est pas une bonne chose) de la phrase "un GUID est un code unique, qui peut servir d'identifiant dans une table (comme un champ auto_increment)." : cela ne veut pas dire que l'on peut stocker un GUID dans un champ auto_increment. Soit on utilise un champ INT auto_increment, soit un "bête" champ VARCHAR(32) dans lequel on va stocker explicitement les GUID que l'on génère.
Sur le plan théorique, j'ai une réserve à l'encontre de cette source : il me semble plus judicieux de faire générer le GUID par l'applicatif que par la base de données. D'une part parce que les routines existent déjà, censées fournir un meilleur GUID qu'un simple random; d'autre part parce que c'est l'applicatif qui "sait" ce qu'est un GUID. Et il est toujours mieux, si vous voulez construire une application robuste et lisible, de concentrer la gestion d'un objet dans la partie du système qui "sait" ce qu'est l'objet.
Il ne s'agit bien sûr que d'une réserve théorique, et il se peut que cette source trouve son utilisation justifiée dans un contexte donné. Mais un avertissement me semblait nécessaire pour éviter qu'un débutant en .NET/Mysql ne tombe sur cette source et utilise cette solution pour générer un GUID là où un appel .NET aurait suffi et aurait été préférable (appel qu'il serait intéressant d'expliciter ici, si quelqu'un connaît la fonction à appeler).
maitredede
Messages postés153Date d'inscriptionvendredi 9 août 2002StatutMembreDernière intervention18 septembre 2009 8 janv. 2008 à 11:19
Il y a effectivement plusieurs algo de calcul de Guid. Certains sont fait à partir d'une adresse MAC, d'autres à partir de la date/heure...
La probabilité de conflits sur une génération aléatoire reste faible.
D'autant plus que, sans modules complémentaires, il n'est pas possible de récupérer une adresse MAC depuis mysql...
Après, tu peux coder un module qui fait appel à l'OS pour générer des Guid...
FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009 7 janv. 2008 à 12:27
Afin d'assurer une forte probabilité d'unicité, il me semble qu'un GUID est calculé d'après l'adresse MAC. Ce qui n'est visiblement pas le cas avec cette source !
23 juin 2009 à 02:59
Copier collé dans l'exécution SQL de phpmyadmin et erreur sur la 2eme ligne, et c'est pas la seul.
30 nov. 2008 à 08:51
L'ambiguïté potentielle (pour quelqu'un qui lirait un peu vite sans chercher à comprendre, ce qui n'est pas une bonne chose) de la phrase "un GUID est un code unique, qui peut servir d'identifiant dans une table (comme un champ auto_increment)." : cela ne veut pas dire que l'on peut stocker un GUID dans un champ auto_increment. Soit on utilise un champ INT auto_increment, soit un "bête" champ VARCHAR(32) dans lequel on va stocker explicitement les GUID que l'on génère.
Sur le plan théorique, j'ai une réserve à l'encontre de cette source : il me semble plus judicieux de faire générer le GUID par l'applicatif que par la base de données. D'une part parce que les routines existent déjà, censées fournir un meilleur GUID qu'un simple random; d'autre part parce que c'est l'applicatif qui "sait" ce qu'est un GUID. Et il est toujours mieux, si vous voulez construire une application robuste et lisible, de concentrer la gestion d'un objet dans la partie du système qui "sait" ce qu'est l'objet.
Il ne s'agit bien sûr que d'une réserve théorique, et il se peut que cette source trouve son utilisation justifiée dans un contexte donné. Mais un avertissement me semblait nécessaire pour éviter qu'un débutant en .NET/Mysql ne tombe sur cette source et utilise cette solution pour générer un GUID là où un appel .NET aurait suffi et aurait été préférable (appel qu'il serait intéressant d'expliciter ici, si quelqu'un connaît la fonction à appeler).
8 janv. 2008 à 11:19
La probabilité de conflits sur une génération aléatoire reste faible.
D'autant plus que, sans modules complémentaires, il n'est pas possible de récupérer une adresse MAC depuis mysql...
Après, tu peux coder un module qui fait appel à l'OS pour générer des Guid...
7 janv. 2008 à 12:27