Leider sind 8 Ziffern zur Basis 36 ein bisschen wenig. Es gibt nur 2 Millionen mögliche IDs. Wenn Sie also 1,4 Millionen zufällig generieren, haben Sie eine halbe Chance auf eine Kollision.
Sie könnten einen PRNG mit einer großen Periode verwenden und seinen aktuellen Zustand über eine Bijektion auf Ihren ID-Raum abbilden. Ein 41-Bit-LFSR wäre zwar nicht unknackbar, könnte aber einigermaßen in Ordnung sein, wenn das, was Sie schützen wollen, nicht allzu wertvoll ist. Man könnte etwas verteilen, ohne ständig auf die DB zugreifen zu müssen, indem man verschiedene Knoten mit einer anderen Position für den Start des Zyklus versieht.
Das Problem bei jeder derartigen deterministischen Methode ist natürlich, dass sie, wenn sie einmal kaputt ist, komplett kaputt ist, und man kann sich nicht mehr auf irgendwelche IDs verlassen. Daher ist es wahrscheinlich der richtige Weg, die Nummern aus einer Datenbank zu ziehen und sie in Stapeln von tausend Stück oder so zu verteilen.
Hätte man einen größeren ID-Raum, könnte man sicherere Techniken verwenden, z. B. könnte die ID aus etwas bestehen, das die Quelle identifiziert, einer inkrementellen Seriennummer für diese Quelle und einem HMAC, der einen eindeutigen Schlüssel für die Quelle verwendet.