Technische Entscheidungen · Middle · Frage 9 von 14
Ein Aktivitätslog hat 50 Mio. Zeilen, und OFFSET wird auf tiefen Seiten langsamer. Die UI hat nur die Buttons „Älter“ und „Neuer“. Wie paginierst du?
- 1
OFFSETbehalten, aber jede Seite cachen - 2Die Tiefe auf die ersten 1.000 Seiten begrenzen
- 3Keyset-Paginierung über
(created_at, id)
Antwort zeigen
Richtige Antwort: Keyset-Paginierung über (created_at, id)
Erklärung
Keyset-Paginierung springt über einen Index, die Tiefe beeinflusst das Tempo also nicht, und mehr als Vor/Zurück-Buttons braucht sie nicht. Caching passt zu einer Liste, die sich selten ändert, aber ein Log wächst ständig, gecachte Seiten verschieben sich also. Eine Tiefengrenze passt zu Suchergebnissen, bei denen niemand tief geht, würde hier aber alte Einträge verbergen, die Menschen eventuell brauchen.