PoolByte

Cursor sayfalama: Büyük listelerde tutarlı gezinme

· PoolByte Technology

Cursor sayfalama: Büyük listelerde tutarlı gezinme

Binlerce kaydı olan bir yönetim ekranında ilk sayfa hızlı, ileri sayfalar yavaş olabilir. Yeni kayıtlar eklenirken kullanıcı bazı satırları iki kez görebilir veya atlayabilir. Sayfalama yöntemi, yalnız “sonraki” düğmesinin tasarımı değil, sonuçların hangi sırayla ve hangi sınırla alınacağı kararıdır.

OFFSET kolaydır, fakat sınırı vardır

OFFSET yaklaşımı belirli sayıda satırı atlayarak sonraki bölümü ister. Derin sayfalarda atlanan kayıtların da işlenmesi gerekebilir. Sonuç sırası ayrıca açık ve belirleyici olmalıdır. PostgreSQL LIMIT ve OFFSET dokümanı, sıralama ve büyük OFFSET değerleriyle ilgili davranışı açıklar.

Az sayıda kaydı olan ve doğrudan sayfa numarasına gitmenin önemli olduğu bir ekranda OFFSET yeterli olabilir. Sürekli yeni kayıt gelen bir işlem geçmişinde ise başka bir yaklaşım daha uygun olabilir. Her listeyi değiştirmek yerine gerçek kullanım örüntüsünü ve sorgu planını değerlendirin.

Cursor bir sonraki konumu tarif eder

Cursor sayfalama, son görülen konuma göre devam etme mantığı kullanır. Örneğin sıralama tarihi ile benzersiz kimlik birlikte bir devam noktası oluşturabilir. Tarihleri eşit iki kayıt olduğunda ikinci alan, sıralamanın belirsizleşmesini önler. İlgili indeksin bu sorgu biçimini desteklemesi de önemlidir.

İstemcinin gördüğü token, iç veritabanı tasarımını veya gizli bilgileri taşımamalıdır. Token değiştirildiğinde başka bir müşterinin kayıtlarına erişim oluşmamalıdır. Google API sayfalama rehberi, sayfa token’larının opak olması ve sonraki isteklerin parametreleri konusunda yararlı kurallar verir. Yetkilendirme her istekte ayrıca yapılır.

Filtre değişince eski konum geçerli kalmaz

Kullanıcı “yalnız açık talepler” filtresine geçerse önceki listenin devam token’ını kullanmamalıdır. Sıralama yönü, arama ifadesi ve müşteri kapsamı da devam noktasının anlamını etkiler. Token’ı bu bağlamla ilişkilendirin; uyuşmayan isteği sessizce yanlış listeye çevirmeyin.

Liste gösterilirken satırlar silinebilir veya sıralama alanı değişebilir. Cursor kullanmak bütün eşzamanlı değişiklikleri otomatik olarak dondurmaz. Kullanıcının bir raporun sabit anlık görüntüsüne mi, güncel akışa mı ihtiyacı olduğunu belirleyin. Rapor dışa aktarma ile ekranda gezinme aynı tutarlılık beklentisine sahip olmayabilir.

Kontrol listesi

  • Aynı tarihli çok sayıda kayıtta eksik veya çift satır kontrolü.
  • Sayfalar arasında yeni kayıt ekleme ve mevcut kaydı silme.
  • Filtre ve sıralama değişiminde konumun sıfırlanması.
  • Geçersiz, süresi dolmuş veya başka kapsama ait token.
  • Liste sonundaki boş sonucun doğru gösterilmesi.
  • Büyük veri kümesinde sorgu süresi ve okunan satır sayısı.

Toplam kayıt sayısını her istekte hesaplamak da ayrı bir maliyet yaratabilir. Arayüz gerçekten kesin toplam gerektiriyor mu, bunu sorgulayın. İndeks rehberiyle birlikte değerlendirilmiş bir sayfalama tasarımı, veri büyüdüğünde liste deneyiminin neden değiştiğini anlamayı kolaylaştırır.