Base 62 wird von tinyurl und bit.ly für die abgekürzten URLs verwendet. Es ist eine gut verstandene Methode zum Erstellen "eindeutiger", für Menschen lesbarer IDs. Natürlich müssen Sie die erstellten IDs speichern und bei der Erstellung nach Duplikaten suchen, um die Eindeutigkeit sicherzustellen. (Siehe Code unten in der Antwort)
Basis 62 Eindeutigkeitsmetriken
5 Zeichen in Basis 62 geben Ihnen 62 ^ 5 eindeutige IDs = 916.132.832 (~ 1 Milliarde) Bei 10.000 IDs pro Tag sind Sie für mehr als 91.000 Tage in Ordnung
6 Zeichen in Basis 62 geben Ihnen 62 ^ 6 eindeutige IDs = 56.800.235.584 (56+ Milliarden) Bei 10.000 IDs pro Tag sind Sie für mehr als 5 Millionen Tage in Ordnung
Basis 36 Eindeutigkeitsmetriken
6 Zeichen geben Ihnen 36 ^ 6 eindeutige IDs = 2.176.782.336 (2+ Milliarden)
7 Zeichen geben Ihnen 36 ^ 7 eindeutige IDs = 78.364.164.096 (78+ Milliarden)
Code:
public void TestRandomIdGenerator()
{
for (int i=0; i<5; i++) Console.WriteLine(RandomIdGenerator.GetBase62(6));
for (int i=0; i<5; i++) Console.WriteLine(RandomIdGenerator.GetBase36(8));
}
public static class RandomIdGenerator
{
private static char[] _base62chars =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
.ToCharArray();
private static Random _random = new Random();
public static string GetBase62(int length)
{
var sb = new StringBuilder(length);
for (int i=0; i<length; i++)
sb.Append(_base62chars[_random.Next(62)]);
return sb.ToString();
}
public static string GetBase36(int length)
{
var sb = new StringBuilder(length);
for (int i=0; i<length; i++)
sb.Append(_base62chars[_random.Next(36)]);
return sb.ToString();
}
}
Ausgabe:
z5KyMg
wd4SUp
uSzQtH
UPrGAT
UIf2IS
QCF9GNM5
0UV3TFSS
3MG91VKP
7NTRF10T
AJK3AJU7