Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD12] GUID dans base MySQL

12 réponses
Avatar
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

10 réponses

1 2
Avatar
patrice
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" a écrit dans le message de
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 ;)




Avatar
patrice
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" a écrit dans le message de
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




Avatar
patrice
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" a écrit dans le message de
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.




Avatar
Fredo G-MDI
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" a écrit dans le message de 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.




Avatar
Fredo G-MDI
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" a écrit dans le message de news:

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




Avatar
patrice
et comment tu le construit ton guid ?

"Gilles" a écrit dans le message de
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.




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



"Gilles" a écrit dans le message de
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 ;)




Avatar
Fredo G-MDI
Merci à vous deux !!

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



"Gilles" a écrit dans le message de
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 ;)








Avatar
Fredo G-MDI
"patrice" a écrit dans le message de
news: 48736b80$0$11989$
Attention toutefois de bien stocker le résultat en binaire sur 16 octets.



"Gilles" a écrit dans le message de
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?
Avatar
patrice
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" a écrit dans le message de
news:48737cba$0$22392$
"patrice" a écrit dans le message de
news: 48736b80$0$11989$
> Attention toutefois de bien stocker le résultat en binaire sur 16


octets.
>
>
>
> "Gilles" a écrit dans le message de
> 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?




1 2