Hier ist das Problem, das ich versuche zu lösen:Wie implementieren Sie Sortierung und Paging auf verteilten Daten?
Ich muss in der Lage sein, eine ausgelagerte, sortierte Tabelle der Daten anzuzeigen, die über mehrere Datenbank-Shards gespeichert ist.
Paging und Sortierung sind wohlbekannte Probleme, die die meisten von uns lösen können, wenn die Daten aus einer einzigen Quelle stammen. Aber wenn Sie Ihre Daten über Shards aufteilen oder eine DHT- oder verteilte Dokumentendatenbank verwenden oder was auch immer Sie für NoSQL bevorzugen, werden die Dinge komplizierter.
Hier ist ein einfaches Bild von einem wirklich kleinen Datensatz:
Splitter | Daten
1 | A
1 | D
1 | G
2 | B
2 | E
2 | H
3 | C
3 | F
3 | I
Sortiert in Seiten (Page Size = 3):
Seite | Daten
1 | A
1 | B
1 | C
2 | D
2 | E
2 | F
3 | G
3 | H
3 | Ich
Und wenn wir die Benutzerseite 2, wir würden zurückkehren zeigen wollte:
D
E
F
Wenn die Größe der Tabelle in Frage ist so etwas wie 10 Millionen Zeilen , oder 100 Millionen, können Sie nicht einfach alle Daten auf einen Web-/Anwendungsserver ziehen, um sie zu sortieren und die richtige Seite zurückzugeben. Und Sie können natürlich nicht jeden einzelnen Shard sortieren und sein eigenes Stück der Daten pagen lassen, weil die Shards nichts voneinander wissen.
Um die Dinge zu komplizieren, können die Daten, die ich präsentieren muss, nicht zu weit veraltet sein, so dass die Vorausberechnung einer Menge nützlicher Sortierungen im Voraus und das Speichern der Ergebnisse für späteren Abruf nicht praktikabel ist.
1 und 3 sind nicht machbar, aber 2 ist interessant. Ich werde heute mit dieser Idee herumspielen und sehen, was ich daraus machen kann. –
Ich habe einen Prototyp von 2 arbeiten und es sieht aus wie eine gute Lösung. Das Sortieren nach Feldern mit geringer Kardinalität fügt einige Komplikationen hinzu, und es ist ein wenig langsam aufgrund der wiederholten Zählungsabfragen, aber es verwendet sehr wenig Systemressourcen. –
Schön zu hören! Für mich war das nur eine theoretische Übung, ich bin froh, dass es bei der Umsetzung geklappt hat. –