Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie Ihre eigene TinyURL

Die Tiny-URL-Leute verwenden gerne zufällige Token, weil Sie dann nicht einfach die Tiny-URL-Links trollen können. "Wo geht Nummer 2 hin?" "Oh cool!" "Wo geht Nummer 3 hin?" "Noch cooler!" Sie können zufällige Zeichen eingeben, aber es ist unwahrscheinlich, dass Sie auf einen gültigen Wert treffen.

Da der Schlüssel eher spärlich ist (4 Werte mit jeweils 36* Möglichkeiten ergeben 1.679.616 eindeutige Werte, 5 ergibt 60.466.176), ist die Wahrscheinlichkeit von Kollisionen gering (tatsächlich ist dies ein gewünschter Teil des Designs) und ein guter SQL-Index wird dies tun Suche trivial sein (tatsächlich ist es die primäre Suche nach der URL, also optimieren sie um sie herum).

Wenn Sie die Suche wirklich vermeiden und einfach die automatische Inkrementierung verwenden möchten, können Sie eine Funktion erstellen, die eine Ganzzahl in eine Zeichenfolge scheinbar zufälliger Zeichen mit der Fähigkeit zur Rückkonvertierung umwandelt. Aus "1" wird also "54jcdn" und aus "2" wird "pqmw21". Ähnlich der Base64-Kodierung, aber ohne aufeinanderfolgende Zeichen.

(*) Ich mag es tatsächlich, weniger als 36 Zeichen zu verwenden – Einzelfälle, keine Vokale und keine ähnlichen Zeichen (1, l, I). Dies verhindert versehentliche Schimpfwörter und erleichtert es auch jemandem, den Wert mit jemand anderem zu sprechen. Ich bilde sogar ähnliche Zeichen einander ab und akzeptiere "0" für "O". Wenn Sie vollständig maschinenbasiert arbeiten, könnten Sie Groß- und Kleinbuchstaben und alle Ziffern verwenden, um noch mehr Möglichkeiten zu haben.