Ich möchte eine sortierte Liste in einer Datenbank speichern. Ich möchte die folgenden Vorgänge effizient ausführen.
- Einfügen (x) - Fügen Sie den Datensatz x in die Tabelle ein
- Löschen (x) - Löscht den Datensatz x aus der Tabelle
- Vorher (x, n) - Die 'n' Datensätze vor dem Datensatz x in der sortierten Liste zurückgeben.
- Nach (x, n) - Die 'n' Datensätze zurückgeben, die dem Datensatz x in der sortierten Liste folgen.
- First (n) - Gibt die ersten n Datensätze aus der sortierten Liste zurück.
- Last (n) - Gibt die letzten n Datensätze aus der sortierten Liste zurück.
- Compare (x, y) - Wenn zwei Datensätze x und y aus der Tabelle gegeben sind, finde, ob x> y ist.
Die einfache Methode, die ich mir vorstellen könnte, besteht darin, eine Art "Rang" -Attribut in der Tabelle zu speichern und durch Sortieren nach diesem Attribut abzufragen. Bei dieser Methode wird das Einfügen / Ändern eines Datensatzes mit Rang jedoch zu einer kostspieligen Operation. Gibt es eine bessere Methode?
Insbesondere möchte ich die Tabelle mit Amazon SimpleDB implementieren. Eine allgemeine Antwort für eine relationale Datenbank sollte jedoch ebenfalls hilfreich sein.
Update beim Ladeprofil:
Da ich dies für eine Webanwendung plane, hängt es von der Anzahl der Benutzer ab, die die App verwenden.
Wenn es 100.000 aktive Benutzer gibt (Superoptimismus: P), dann wäre meine sehr ungefähre Schätzung pro Tag
500.000 Auswahlen, 100.000 Einfügen und Löschen, 500.000 Aktualisierungen
Ich würde erwarten, dass der Tisch insgesamt auf 500.000 wächst.
Ich bin auf der Suche nach Updates, Insert und Compare-Operationen zu optimieren. Der Rang der Gegenstände wird sich ständig ändern und ich muss die Tabelle auf dem neuesten Stand halten.