MVC İle Big Datalı Sayfalama Yapmak
-
Bu konuda her yerde karşımıza https://www.nuget.org/packages/PagedList.Mvc çıkıyor. Ama tüm veriyi select edip daha sonra eldeki verilerle sayfalama yapıyor. 500 - 1500 kayıtta hadi önemli değilde 100K kayıtta problem haliyle.
Bu işi düzgün yapan sistem var mıdır?
-
Hocam Entity framework için basit bi sayfalama kodum var ama big dataya nasıl uyarlanır bilmem.
public static IQueryable<T> ToPagedQuery<T>(this IQueryable<T> query, int pageSize, int pageNumber ) { int skipcnt = pageSize * (pageNumber - 1); if (skipcnt <= 0) skipcnt = 0; return query.Skip(skipcnt).Take(pageSize); } -
Hocam, MVC bilmiyorum.
Klasik bir sayfalama örneği yazabilir misin MVC için.
-
Bu yukarıdakini kullanınca
var x=db.Person.Where(o=> o.yas>10)
var ikincisayfa=x.ToPagedQuery(20,2)
gibi alabiliyorum.
Fonksiyonun içini bigdata için değiştirebilirsen çok faydasını görürsün
-
holy hocam hem senin bu kodu kullanıp hemde geneksel bir prosedur yazarak bişeyler yapmak gerekli anladığım kadarıyla.
SELECT * FROM Product ORDER BY Id ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
sonucu yazarım buraya
-
datatables.net var belki isine yarar hocam
-
Olayı şu şekilde bitirdim.
Önce spyi oluşturdum.
create proc [dbo].[spCustomerList] @sayfadakiKayitSayisi nvarchar(50), @sayfaNumarasi nvarchar(50), @addsql nvarchar(500), as exec (' Declare @ilkkayit int Declare @sonkayit int set @ilkkayit = ('+@sayfaNumarasi +'- 1) * '+@sayfadakiKayitSayisi +'+ 1 set @sonkayit = @ilkkayit + '+@sayfadakiKayitSayisi+' - 1 ;WITH sayfalama AS ( SELECT row_number() over (order by c.Id ) as SatirSayisi, c.* from Customer(nolock) c where 1=1 '+ @addsql +' ) SELECT * FROM sayfalama WHERE SatirSayisi between @ilkkayit and @sonkayit ')Daha sonra Buradan gelen verilerle eşleştirmeli bir Model yazdım.
Verileri modele attıktan sonra telerik kendo grid var(harika bişey) toplam datayı kaçıncı sayfada olduğunun bilgisini falan ajaxla gönderdim (grid ajax destekli)
ortaya gayet hızlı bişey çıktı güzelde oldu
Zaten yüzyıllardır var olan bir sistemdi yeni bir şey katmadım pek ama asp.net mvc bu konuda zayıf kalmış bence çok gereksiz yere bayyaa bi uğraştım.
-
verilerin büyüklüğü nedir acaba ? çok büyük veriler ise geleneksel veritabanı kullanmamanı öneririm indexleme yapan solr, sphinx veya elastic search tarzı şeylere bakmanı öneririm belirli verileri bunun içine atarsan çok hızlı sayfalama yapabilirsin misal şua 30gb dan büyük bir veritabanı içinde bu tarz arama sorgularından saniseler içinde çıktı alabiliyoruz ve veriler çok sık değişmişyorsa cache alyapısınıda kullanabilirsin.
