Re: RE: [pgsql-es-ayuda] Identificador único con md5()

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>
Cc: Fernando Hevia <fhevia(at)ip-tel(dot)com(dot)ar>, 'Lista Ayuda Pgsql' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: RE: [pgsql-es-ayuda] Identificador único con md5()
Date: 2010-02-25 02:23:01
Message-ID: 20100225022301.GK3790@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Sebastián Villalba escribió:
> On Wed, 24 Feb 2010 17:27:57 -0300, Alvaro Herrera wrote
> > Fernando Hevia escribió:
> >
> > > De ninguna manera podés garantizar que ese mecanismo te de identificadores
> > > únicos.
> > > ¿Porqué no usas un serial?
> >
> > Si quieres identificadores únicos que no sigan un orden correlativo
> > quizás te sirva esto:
> >
> > http://wiki.postgresql.org/wiki/Pseudo_encrypt
>
> Efectivamente necesito algo así, que no siga patrón correlativo o determinado.
> El único requisito es que la longitud debe ser de 7. Por un antojo el
> "substring(md5(CURRENT_TIME::time)from 7 for 7)" lo hago a partir de la
> séptima posición, porque se me ocurrió hacerlo así, pero sin contar con ningún
> fundamento teórico.

Supongo que lo que puedes hacer si te interesa asegurar unicidad es
convertir el número de la función de Verite en un string de 7
caracteres. Claro que tendrías que modificarla, porque con una cadena
de largo 7 en hex tienes a lo más 268.435.456 cadenas distintas (16^7),
pero la función de Verite retorna 2^32 valores distintos (4 mil millones
y fracción)

Lo otro que podrías hacer es usar 24 dígitos en vez de 16, con lo que
tienes espacio para 4500 millones de valores; cubrirías todo el espacio
de Verite y un poco más. Ahí el único trabajo que tendrías sería
inventar cómo mapear un número de 32 bits a un string ...

--
Alvaro Herrera Vendo parcela en Valdivia:
http://valdivia.vivastreet.cl/loteos-lotes+valdivia/parcela-en-cabo-blanco--valdivia/19288372
"Sallah, I said NO camels! That's FIVE camels; can't you count?"
(Indiana Jones)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Silvio Quadri 2010-02-25 10:10:45 Re: problema arranque postgres y programa java
Previous Message Horacio Miranda 2010-02-25 02:08:38 Re: Problema de Concurrencia de usuarios