¿Cómo crear identificadores de usuario aleatorios sin repeticiones en MySQL?

Con un rango tan pequeño, si debe elegir uno u otro (y no una combinación de ambos), probablemente sea mejor mantener una lista de números no utilizados. Bueno, realmente depende de lo que espere que su límite superior de uso sea proporcional a los valores totales posibles.

Si espera baja densidad, probablemente sea su mejor opción generar un número aleatorio y compararlo con los existentes. Su tasa de colisión será lo suficientemente baja como para no afectar realmente el rendimiento.

Si espera una alta densidad, mantener la lista de números no utilizados y hacer una selección aleatoria es la mejor opción porque la alternativa puede ser francamente horrible. Pensando en el peor de los casos, cuando solo queda un número, usar el enfoque de baja densidad significaría que tienes que generar y tirar la mitad de los números en el rango para tener un 50% de posibilidades de encontrar el no utilizado.

El mejor enfoque es cambiar los enfoques a medida que el rango se llena; con un 50% de uso, probablemente encontrará un número utilizable dentro de dos generaciones de números aleatorios; pero en algún momento de plenitud (cuando los números restantes son pocos), es mejor cambiar.

Pero el mejor enfoque es no usar números aleatorios para los valores de identificación; Los ejemplos anteriores se complican aún más al tener que lidiar con condiciones de carrera en las que varios clientes de bases de datos podrían estar compitiendo por la misma identificación de empresa no utilizada.

Respuesta 1

La solución más simple sería definir company_idcomo una columna de identificador que se incrementa automáticamente:

create table USER_DATA (
  company_id int not null auto_increment,
  .... other columns here
  primary key (company_id)
);

Esto es extremadamente eficiente, lo que parece importarle. Además, es un enfoque estándar generar una serie de números únicos garantizados, lo que facilitará la vida de todos a largo plazo. Es cierto que company_idse incrementa monotónicamente en lugar de asignarse aleatoriamente, pero ¿cuál es exactamente el beneficio de las ID aleatorias? Literalmente, a nadie le importa si una ID es un número aleatorio.

Respuesta: 2

Estoy tratando de implementar una aplicación Spring Boot de compilación local en Azure App Service. Tenga en cuenta que soy nuevo en el uso de Azure. El Servicio de aplicaciones que creé usando Azure Portal tiene las siguientes características: ...

Cuando intento acceder a un objeto File en Java usando Eclipse, el sistema envía una FileNotFoundException cada vez que se accede al archivo. He creado el archivo manualmente y lo coloqué dentro de Eclipse ...

Tengo un EntryListener experimental en un Hazelcast Map que llama a .size () en cada entrada. Quiero saber si esta es una mala idea y si podría ser un problema de rendimiento, ya que es un clúster ...

Estoy tratando de hacer cuando se hace clic en el botón de form1 abrir form2. Suena muy simple, pero no pude encontrar ninguna forma de hacerlo. Estoy usando Java Intellij. Cuando uso netbeans y swing estaba haciendo esto con: ...