Wie generiert der Google URL Shortener einen 5-stelligen Hash ohne Kollisionen?

9

Wie kann der Google URL-Verkürzer einen eindeutigen Hash mit fünf Zeichen ohne Kollisionen generieren? Es scheint, als ob es sich um Kollisionen handelt, bei denen verschiedene URLs den gleichen Hash generieren.

%Vor%

Was ist auch interessant, ist die gleiche URL, erzeugt jedes Mal einen völlig anderen Hash:

%Vor%

Wenn Sie also etwas rechnen, indem Sie Kleinbuchstaben, Großbuchstaben und Ziffern verwenden, ist die Gesamtzahl der Kombinationen 62 ^ 5 = 916,132,832 , bei denen eindeutig Kollisionen auftreten.

Wie macht Google das?

    
Justin 03.11.2011, 01:56
quelle

2 Antworten

7

Sie verfügen über eine Datenbank, in der alle zuvor generierten URLs und die längere URL aufgezeichnet werden, auf die sich jede dieser URLs bezieht. Es ist einfach sicherzustellen, dass neu generierte URLs nicht bereits in dieser Tabelle vorhanden sind. Ein wenig schwierig zu skalieren (sie haben sicherlich mehrere Server, so dass jeder einen Eimer mit Werten zugewiesen werden muss, aus denen er an die Benutzer ausgeben kann). Wenn sie jemals 916,132,832 URLs generieren, fügen sie einfach ein anderes Zeichen hinzu.

    
Robert Levy 03.11.2011, 02:04
quelle
-2
  1. Es speichert die bisher verwendeten langen URLs. Das bedeutet, wenn jemand eine kurze URL erstellt, wenn der Ort, auf den er verweist, bereits eine kurze URL hat, gibt er ihnen die bereits vorhandene kurze URL.

  2. Tatsächlich wäre es ineffizient, ein System zu haben, das für die Erstellung von "Hashes" basierend auf einem gegebenen Datensatz vorgesehen ist. Vielmehr ist die kurze URL einfach eine zufällige Menge von Zeichen, die bereits als zehn Ziffern identifiziert wurden, plus 26 Kleinbuchstaben plus 26 Großbuchstaben = 916132832 Permutationen (keine Kombinationen). Zufällige kurze URLs sind der effizienteste Weg, um es zum Laufen zu bringen, und deshalb sind sie immer unterschiedlich (obwohl ich denke, dass es eine andere Komponente im Algorithmus geben könnte wie die Tageszeit, aber ich denke nicht, dass es das wert ist. ... Es macht keinen Sinn, es so komplex zu machen, all diese Rechenleistung auszugeben, nur um eine alberne 5-stellige Zeichenkette zu erstellen, die jeder Affe per Knopfdruck auf einem Permutationsrechner tun kann.

Confused One 09.12.2011 20:21
quelle

Tags und Links