[WD12] GUID dans base MySQL

Le
Fredo G-MDI
Bonjour à tous !

Je souhaiterai générer moi-même mes ID dans mes tables d'une base de données
MySQL. L'applicatif se synchronisera avec des postes nomades (saisie de
commandes, etc chez le client) c'est pour cela que j'aimerai créer des GUID
sur ma base pour les synchronisations futures des postes nomades avec la
base réelle. Quelle est la meilleure solution, code ou algo ou autre pour
générer mes GUID ?

Merci à tous pour vos réponses
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patrice
Le #14491891
t'as raison, c'est une api qui mérite d'etre connue

mais; perso, je reste avec mes bonnes vieilles clé primaire générées par
avec mes chtites mimine
et ca fait pas mal au cerveau :)


"Gilles" news:
patrice a couché sur son écran :
> et comment tu le construit ton guid ?

Et si t'as envie de te faire mal au cerveau ou que tu estimes que le
code Microsoft n'est pas assez performant :

http://tools.ietf.org/html/rfc4122

Mon petit doigt me dit que tu vas préférer l'appel API ;)




patrice
Le #14491871
chaque terminal genere ses GUID via une clé autoincrementale
Par contre dans le fichier maitre de fusion, la clé primaire est composée du
numéro unique du terminal,suivi du guid généré par le terminal.

Le numéro unique peut être le numéro de serie du terminal ou pour pc,
pré-saisi en config

"Fredo G-MDI" news:48735d19$0$21248$
Bonjour à tous !

Je souhaiterai générer moi-même mes ID dans mes tables d'une base de


données
MySQL. L'applicatif se synchronisera avec des postes nomades (saisie de
commandes, etc chez le client) c'est pour cela que j'aimerai créer des


GUID
sur ma base pour les synchronisations futures des postes nomades avec la
base réelle. Quelle est la meilleure solution, code ou algo ou autre pour
générer mes GUID ?

Merci à tous pour vos réponses




patrice
Le #14491851
dans un fichier, une clé autoincrémental fourni des numéros uniques
alors effectivement, c'est pas un GUID mais plutot un LUID
qui est donc valide tant qu'on reste sur le terminal
d'où la nécessité de le préfixer par le numéro unique du terminal pour
générer un guid

"Gilles" news:
patrice a émis l'idée suivante :
> chaque terminal genere ses GUID via une clé autoincrementale
> Par contre dans le fichier maitre de fusion, la clé primaire est


composée du
> numéro unique du terminal,suivi du guid généré par le terminal.

Jusqu'à preuve du contraire, un GUID est unique, et n'a rien
d'incrémental.




Fredo G-MDI
Le #14491821
J'ai trouvé ce bout de code mais l'utilisation d'assemblage .NET dans mes
projets ne me plait guère car il faut que le framework soit installé :
// Utiliser l'assemblage mscorlib.dll
DotNetguid est un Guid dynamique = GUID::NewGuid();
id est une chaîne = DotNetGUID:ToString();

Si vous avez d'autres ID ? xD

"Gilles"
Il se trouve que patrice a formulé :
dans un fichier, une clé autoincrémental fourni des numéros uniques
alors effectivement, c'est pas un GUID mais plutot un LUID
qui est donc valide tant qu'on reste sur le terminal
d'où la nécessité de le préfixer par le numéro unique du terminal pour
générer un guid



Ca n'a rien de très universel et c'est source de problème car il faudra
écrire un bout de code pour unifier le terminal, code qui peut changer si
on modifie le hardware si on s'est basé la dessus pour son unicité.
Si c'est une unicité humaine, numéro d'inventaire ou autre, tot ou tard il
y aura une bourde.

Le Guid c'est standard, c'est universel, pourquoi vouloir des bidouilles
propriétaires. Et il n'y a aucun risque d'erreur.




Fredo G-MDI
Le #14491801
Merci Gilles pour ta réponse ! C'est d'une vraie synchro dont j'ai besoin.
Il faut que je génère des GUID, j'aimerai ne pas avoir à utiliser des
assemblages .NET

"Gilles"
Fredo G-MDI avait énoncé :
Bonjour à tous !

Je souhaiterai générer moi-même mes ID dans mes tables d'une base de
données MySQL. L'applicatif se synchronisera avec des postes nomades
(saisie de commandes, etc chez le client) c'est pour cela que j'aimerai
créer des GUID sur ma base pour les synchronisations futures des postes
nomades avec la base réelle. Quelle est la meilleure solution, code ou
algo ou autre pour générer mes GUID ?



Tu veux générer tes GUID où?
La synchro se fait dans quel sens?
C'est réellement une synchro ou un vidage de données des postes nomades
vers une base centrale?

MySQL dispose de la fonction UUID() pour générer des guid.

Si c'est un vidage, il te faut simplement générer les UUID lors des
insertions de lignes (et gérer à la main les liaisons lors d'insertions de
lignes enfants)

Si c'est une vrai synchro, et que tu as besoin sur tes applis nomades non
connectées à MySQL de générer des GUID, alors il te faut générer des GUID
en Windev. A moins que ça existe en V12, à priori ca n'existe pas (à ma
connaissance.)

cet article indique deux lignes de code pour utiliser le framework.NET
http://www.codyx.org/snippet_generer-guid-identifiant-unique_224_l_windev_26.aspx

ou ici en Com+

http://wdportal.dukain.nl/index.php?option=com_content&view=article&idP:greating-a-guid




patrice
Le #14491791
et comment tu le construit ton guid ?

"Gilles" news:
Il se trouve que patrice a formulé :
> dans un fichier, une clé autoincrémental fourni des numéros uniques
> alors effectivement, c'est pas un GUID mais plutot un LUID
> qui est donc valide tant qu'on reste sur le terminal
> d'où la nécessité de le préfixer par le numéro unique du terminal pour
> générer un guid

Ca n'a rien de très universel et c'est source de problème car il faudra
écrire un bout de code pour unifier le terminal, code qui peut changer
si on modifie le hardware si on s'est basé la dessus pour son unicité.
Si c'est une unicité humaine, numéro d'inventaire ou autre, tot ou tard
il y aura une bourde.

Le Guid c'est standard, c'est universel, pourquoi vouloir des
bidouilles propriétaires. Et il n'y a aucun risque d'erreur.




patrice
Le #14491761
Attention toutefois de bien stocker le résultat en binaire sur 16 octets.



"Gilles" news:
patrice a couché sur son écran :
> et comment tu le construit ton guid ?

Et si t'as envie de te faire mal au cerveau ou que tu estimes que le
code Microsoft n'est pas assez performant :

http://tools.ietf.org/html/rfc4122

Mon petit doigt me dit que tu vas préférer l'appel API ;)




Fredo G-MDI
Le #14491751
Merci à vous deux !!

"patrice" news: 48736b80$0$11989$
Attention toutefois de bien stocker le résultat en binaire sur 16 octets.



"Gilles" news:
patrice a couché sur son écran :
> et comment tu le construit ton guid ?

Et si t'as envie de te faire mal au cerveau ou que tu estimes que le
code Microsoft n'est pas assez performant :

http://tools.ietf.org/html/rfc4122

Mon petit doigt me dit que tu vas préférer l'appel API ;)








Fredo G-MDI
Le #14491741
"patrice" news: 48736b80$0$11989$
Attention toutefois de bien stocker le résultat en binaire sur 16 octets.



"Gilles" news:
patrice a couché sur son écran :
> et comment tu le construit ton guid ?

Et si t'as envie de te faire mal au cerveau ou que tu estimes que le
code Microsoft n'est pas assez performant :

http://tools.ietf.org/html/rfc4122

Mon petit doigt me dit que tu vas préférer l'appel API ;)









Stockez-vous ces clés primaires en chaine dans la base ou vous les
transformez en entier?
patrice
Le #14491731
comme déliré susditement, je n'utilise pas ces guid mais une clé composé
d'un entier sur 4 qui provient d'une clé autoincremental et d'un numéro
unique du terminal (taille variable selon application)
"Fredo G-MDI" news:48737cba$0$22392$
"patrice" news: 48736b80$0$11989$
> Attention toutefois de bien stocker le résultat en binaire sur 16


octets.
>
>
>
> "Gilles" > news:
>> patrice a couché sur son écran :
>> > et comment tu le construit ton guid ?
>>
>> Et si t'as envie de te faire mal au cerveau ou que tu estimes que le
>> code Microsoft n'est pas assez performant :
>>
>> http://tools.ietf.org/html/rfc4122
>>
>> Mon petit doigt me dit que tu vas préférer l'appel API ;)
>>
>>
>
>

Stockez-vous ces clés primaires en chaine dans la base ou vous les
transformez en entier?




Publicité
Poster une réponse
Anonyme