UUIDs y los objetos persistentes

Chema Cortes pych3m4 en gmail.com
Jue Nov 15 15:37:44 CET 2007


El 15/11/07, Amm-Python <python en ammsoft.com> escribió:
> No estoy seguro de que mi respuesta sea lo que buscas, pero te explico
> mi experiencia.
> [...]
>
> Yo los utilizo por defecto en casi todas las tablas, asignándoles el
> índice primario y vinculando las tablas mediante ese campo. Para
> generarlos encontré esta función, es muy simple pero parece que
> funciona:

Básicamente, esta función es la uuid.uuid1()

> La que lleva python 2.5. creo que es esta:
> http://zesty.ca/python/uuid.py
>
> No la conocía, yo todavía uso el python 2.4.2, pero creo que la
> incorporaré a mis proyectos.
>
> Muchas bases de datos llevan una función que genera dicho valor
> automáticamente. Por ejemplo en Oracle es SYS_GUID(), en MySql UUID(),
> creo que en Postgres es la misma.
>
> Por lo que puedes poner que se genere por defecto al hacer los INSERT.

El uuid de mysql es básicamente la uuid.uuid4() (o sea, genera un uuid
aleatorio), pero parece que en mysql/innodb da problemas de
rendimiento con la generación de índices.

En postgres se emplean, sobre todo, los OIDs en las tablas de sistema.
Los OIDs identifican cada registro de una tabla con un código de
4bytes, lo que podría ser insuficiente en tablas muy grandes. No se
debería emplear para clave primaria y, de hecho, se puede eliminar
completamente de una tabla.

Por otro lado, postgresql no sería postgresql si no se pudieran añadir
nuevos tipos de datos:
<http://code.google.com/p/polarrose-postgresql-uuid/>


> > - ¿qué tan baja es la probabilidad de repetir dos
> > identificadores? Asumo que en una organización pequeña es
> > imposible que se repitan los uuid; pero con internet es
> > complicado hacerse una idea de lo que es o no "posible". Ya
> > sé que son identificadores de 128bits, pero no tengo clara
> > cuál es la garantía de unicidad del algoritmo utilizado
> > (reconozco que no he entrado de lleno a analizarlo).
>
> > - ¿qué son los "namespaces" (uuid3 y uuid5)? Más bien parecen
> > una especie de "seeds" a la hora de generar los hashes (md5 y
> > sha-1), pero la especificación RFC-1422 no entra en
> > explicaciones. ¿Existe algún criterio para usar un namespace
> > u otro? En un primer momento pensaba en usar NAMESPACE_OID
> > para los registros en una base de datos y NAMESPACE_URL para
> > los documentos. ¿Sería éso correcto?

Me sigue intrigando el tema de los "namespaces".
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es