2016-07-31 15 views
0

Ich schreibe eine REST-API zu Datenbank-Service (Mongodb, Django). Meine Frage ist, wie Leseoperationen über API gehandhabt werden? Eine einfache Lösung ist es, die Datenbank mit Skip- und Limit-Parametern bei jedem API-Aufruf abzufragen, so dass ich die Datenbank abfragen und die Ergebnisse zurückgeben kann. Aber ist es nicht ineffizient, bei jedem API-Aufruf (Paginierung) eine Abfrage zu machen? Oder soll ich cursor_id beim ersten Aufruf im Backend einmal abfragen und speichern und verwenden um Daten für nachfolgende API-Aufrufe zu holen?Datenbank Leseoperationen als Webservice

danke.

Antwort

1

Gehen Sie mit Ihrer einfachen Lösung: nur die richtige Seitennummer an die db abfragen. Verwenden Sie den mitgelieferten skip() und limit() Methoden, oder wenn Sie in this thread there is a work around avoiding skip() function

Generell viel über Effizienz, Pflege, würde ich nicht empfehlen, in Speicher eine ganze db Sammlung/table (noch Mongo aber jede db) zu laden.
Das könnte mit einem winzigen Datensatz funktionieren, aber was ist, wenn Ihre Sammlung 200.000 Dokumente enthält? Wirst du sie in einer Variablen halten? Sie verschwenden den CPU-Speicher duplizieren Ihre db.
Abgesehen davon finden Sie Inkonsistenz Daten zwischen dem, was in der db geladen ist und was haben Sie im Speicher.
Wie oft wird Ihre API nach der Seitenzahl 2000 suchen? Normalerweise werden Sie nach der ersten Ergebnisseite suchen.