Open stephane-klein opened 1 year ago
Ressource : j'ai publié ce POC en 2022 https://github.com/stephane-klein/nanoid-postgres-poc
J'ai aussi découvert ce projet pour avoir des NanoID généré via PostgreSQL en utilisant un lib Rust https://github.com/VADOSWARE/pg_idkit/issues/60#issue-2100726420 mais je n'ai pas encore testé.
Je souhaite, via cette issue, écrire un billet qui explique ma doctrine, mes interrogations concernant le choix du type que j'utilise pour les primary des tables PostgreSQL.
Question que je me pose :
where id = foobar
oùid
est de type :INTEGER
VARCHAR
pour NanoIDUUID
INTEGER
VARCHAR
pour NanoIDUUID
INTEGER
VARCHAR
pour NanoIDUUID
Todo pour chacune de ces questions :
Voici ci-dessous mes choix que je souhaite présenter dans le billet.
Je préfère avoir soit des "slug" sémantique, dans les urls, comme par exemple
users/stephane-klein/activities/
plutôt qu'unuuid
dans l'url.Quand je ne peux pas utiliser un slug "sémantique", je préfère utiliser un Nano ID d'une taille, par exemple, de 6 caractères, limité à des nombres et lettres minuscules, plutôt qu'un
uuid
.En attendant d'avoir poussé ces recherches, voici ma doctrine au 19 septembre 2023 :
INTEGER
nanoid VARCHAR(6)
, qui contient un NanoID qui contient 6 caractères, limité à des nombres et lettres minusculesid
de typeINTEGER
sur l'interface utilisateur, expose soit des slug, soit des NanoIDJ'essaie, autant que possible, de réaliser mes liaisons entre tables avec des champs de type
INTEGER
.Cette doctrine pourra évoluer en fonction de potentielles découvertes, feedback…