2012-03-30 7 views
1

Derzeit verwende ich eine Webanwendung, die stark auf kurze URLs angewiesen ist, die mit dem ursprünglichen Inhalt verknüpft sind. Diese URLs müssen so kurz wie möglich sein.Erstellen kurzer URLs in einem verteilten Datenspeicher

Im Moment verwende ich einen einfachen MySQL-Datenspeicher zum Speichern dieser Objekte und eine inkrementierende Counter -> Base 62-Konvertierung, um kurze URLs zu erzeugen, die mit der Zeit wachsen werden. Wir müssen in eine stärker verteilte und skalierbare Umgebung wechseln.

Was ist der beste Weg, kleine, eindeutige kurze URLs für den Inhalt in einem verteilten Datenspeicher zu generieren? Um genau zu sein, planen wir entweder Mongo oder DynamoDB zu verwenden.

Antwort

4

Ich würde vorschlagen, dass Sie einen Blick auf Jon Skeet Beschreibung des HiLo Algorithmus haben sich hier: What's the Hi/Lo algorithm?

Für den speziellen Anwendungsfall von Mongo finden http://dllhell.net/2010/07/23/on-sequences-with-mongodb-and-norm/

+0

Ich begann auf einem Netzwerkdienst arbeiten, laufen würde auf jedem Knoten in der verteilten App (den App-Servern) würde der Code eine ID vom Dienst anfordern, der Dienst würde einen Bereich zuweisen, sagen wir 4501-5000, und diese verwenden und dann von einem Atomspeicherspeicher weitere holen ... obwohl ich nicht sicher war, ob dies der beste Ansatz war. – tarnfeld

+0

Das ist die Grundidee, ja. –

+0

Oh cool! Zur Referenz - https://github.com/tarnfeld/snowey :-) Momentan habe ich eine Redis-Implementierung (für den atomaren Speicherbereich), aber ich arbeite gerade an der dynamodb. – tarnfeld