Offset tabanlı ve cursor tabanlı sayfalama (pagination) arasındaki fark nedir?
Cevap
Offset pagination
GET /posts?limit=20&offset=40SELECT * FROM posts ORDER BY created_at DESC LIMIT 20 OFFSET 40;Basit ve "5. sayfaya git" gibi rastgele erişime izin verir. Sorunları:
- Performans:
OFFSET 100000için veritabanı 100.000 satırı okuyup atar; derin sayfalar yavaşlar. - Tutarsızlık: kullanıcı sayfalar arasında gezerken yeni kayıt eklenirse kayıtlar kayar; aynı öğe iki kez görünür ya da atlanır.
Cursor (keyset) pagination
Son görülen kaydın sıralama anahtarı "cursor" olarak döndürülür, sonraki sayfa ondan sonrasını ister.
GET /posts?limit=20&cursor=eyJjIjoiMjAyNi0xMC0xOVQxMDowMDowMFoiLCJpZCI6OTgxfQSELECT * FROM posts
WHERE (created_at, id) < ('2026-10-19T10:00:00Z', 981)
ORDER BY created_at DESC, id DESC
LIMIT 20;- Index üzerinden doğrudan konumlanır; sayfa derinliğinden bağımsız hızlıdır.
- Ekleme/silmede kayma olmaz.
- Eşitlikleri çözmek için sıralamaya benzersiz bir sütun (
id) eklenmelidir. - Cursor genelde base64 ile kodlanmış opak bir değerdir; istemci içeriğine güvenmemelidir.
| Offset | Cursor | |
|---|---|---|
| Belirli sayfaya atlama | Var | Yok |
| Derin sayfa performansı | Kötü | İyi |
| Eşzamanlı yazmada tutarlılık | Zayıf | Güçlü |
| Uygun yer | Admin tabloları, küçük veri | Sonsuz kaydırma, feed, büyük veri, public API |
Yanıtta next_cursor (veya has_more) döndürülür; null ise son sayfadır.
İlgili API Tasarımı soruları
- HTTP 401 ile 403 durum kodları arasındaki fark nedir?
- JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?
- Idempotency nedir? Hangi HTTP metotları idempotent'tir?
- OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?
- Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.
- gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.