2016-06-27 8 views
0

Ich habe auf die eindeutige ID (UID) Generation für Aadhar (an Indian equivalent to Social Security Number)Generierung von Zufallszahl als Benutzerkennung

suchen Sie erzeugen eine 11-stellige Zufallszahl. Ich arbeite auch an einer Anwendung, wo ich eine eindeutige ID für Benutzer bereitstellen muss, die während ihrer gesamten Lebensdauer gültig sein muss (erwartete Anzahl von Benutzern 40-60 Milliarden).

Wenn ich über das Internet nach ähnlichen Schemata suche, fand ich, dass der einfachste Weg ist, jede Ziffer zufällig zu erzeugen und zu verketten. Also meine Fragen sind:

  • erzeugen jede Ziffer zufällig richtige Art und Weise solche IDs
  • Gibt es etablierte Technik für das gleiche zu generieren?
  • Auf welche Überlegungen muss man beim Entwurf eines solchen Schemas achten? Ich frage dies, da ich denke, dass das Zufallszahlenerzeugungsschema keine Eindeutigkeit gewährleistet. Sagen wir mal in einem bestimmten Zeitrahmen), dann braucht jede Generation Verifikation. Selbst in diesem Fall sollte sich das System meines Erachtens anpassen können, um zu gewährleisten, dass die zweite generierte Zahl eindeutig ist oder aus einer anderen Verteilung stammt.

Antwort

0

Das Fahrrad nicht neu erfinden. Schauen Sie sich UUID an. Abhängig von der Sprache, die Sie verwenden werden, sollte es eine Implementierung dafür geben.

+0

Aber UUID ist keine gute Nummer für die Benutzer als ID. Sie müssen sich daran erinnern, es in Formularen usw. erwähnen. Das macht UUID umständlich. – krammer

+0

Sie haben nicht gesagt, dass der Benutzer sich an die ID erinnern soll. Mit der UUID können Sie jedem neuen Datensatz einfach eine neue ID zuweisen, ohne in die Datenbank oder einen Speicher zu schauen. Wenn Sie etwas benötigen, mit dem der Benutzer arbeiten kann, würde ich empfehlen, sequentielle Nummern in der Basis 32 zu verwenden. –

1

Ich würde einfach 100 Milliarden von Zahlen in einer Datenbanktabelle von 000 000 000 001 bis 999 999 999 999 speichern. Löschen Sie die Extremwerte wie 000 ... 001 oder 666 usw. Dann generieren Sie eine Zufallszahl in einer anderen Spalte (Dies wird die Sortierreihenfolge sein). Wenn Sie eine neue Nummer benötigen, können Sie sie mit einer Transaktion belegen, so dass Sie sicherstellen können, dass eine Nummer nur an eine Person geht.

Ich würde die Nummer nicht im laufenden Betrieb generieren ... Sie sollten immer überprüfen, ob die Nummer bereits existiert. Am Ende ist die Chance hoch, dass eine bestehende Nummer generiert wird. Der Erzeugungsprozess wird also immer länger dauern.

+0

Danke. Ich nehme an, dass ich eine Kopie im Cache behalten und sicherstellen müsste, dass die Änderungen zurückgeschrieben werden, wenn die Anwendung geschlossen wird/abstürzt oder mehrere Server vorhanden sind? – krammer