From: | Francisco Olarte <folarte(at)peoplecall(dot)com> |
---|---|
To: | "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com> |
Cc: | Edwin Quijada <listas_quijada(at)hotmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: hash |
Date: | 2016-07-27 18:27:25 |
Message-ID: | CA+bJJbx0udvXTd-DeYy9nQALsVnFo-n-W-iq405TqvOovoUxMw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2016-07-27 14:12 GMT+02:00 Guillermo E. Villanueva <guillermovil(at)gmail(dot)com>:
> Hola Edwin, con la prueba que hice me quedé tranquilo, el día que lleguen a
> mas de 50 millones de registros yo y mis hijos ya estaremos jubilados jaja.
> No reemplazo nada, simplemente trunco el md5(). Tengo un trigger que hace lo
> siguiente:
> new.columnahash := right(md5(new.columnaid),13);
Ten en cuenta que las matematicas son muy putillas, y despues de 50
millones de unicos te pueden venir 3000 colisiones.
De todas formas la probabilidad de colision ahi es la clasica paradoja
del cumpleaños, y con 3 digitos hexadecimales y 50 millones de
intentos esta en un 25% ( Aqui mi codigo, que seguro tiene algn
problema, y que calcula la probabilidad de NO colision, que como casi
todo el mundo sabe es la facil:
$ perl -e '$x=16**13; $p=1; for (1..50_000_000) { $p*=$x-$_; $p/=$x; }
print "$p\n"'
0.757633315718648
Seguro que tiene errores de redondeo y cosas asi, y creo que lo que
calculo es para 50M+1, pero bueno, sus haceis una idea )
Yo probaria a usar base 64, parece que no pero cambiando 16 por 64 en
ese codigo da un resultado de 0.99999999631153 ).
Francisco Olarte.
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | eenriquez | 2016-07-28 13:32:32 | exportar datos concatenados |
Previous Message | Alberto Cardenas Cardenas | 2016-07-27 15:51:16 | Re: Estadisticas de base de datos y archivo de configuracion |