Veritabanından bilgi çekerken filtreleme vs JS fonksiyonları

Gustave Le Boon

Hectopat
Katılım
28 Kasım 2019
Mesajlar
351
İyi akşamlar. MongoDB kullanıyorum. Sayfanın giriş kısmında tüm ürünleri çekiyorum. Bu ürünleri çektikten sonra, aynı sayfanın farklı bir kısmında çekilen ürün listesinin içinde olan bazı ürünlere ihtiyacım oluyor. Bu kısımda direkt JS fonksiyonu olan filter fonksiyonunu kullanmak mı daha performanslı olur yoksa veritabanına yeni bir filtreli sorgu ile ürünleri almak mı?
 
Duruma göre değişir. Sizin durumunuzda, bütün ürünleri çektiğiniz için, ön yüzde state management yapılarından birini kullanarak, sayfalar arası geçişte bu ürün verilerini elde tutabilir ve duruma göre Array.filter() fonksiyonunu kullanabilirsiniz.

Trafik arttıkça, Memory Cache yapılarından birine geçmeniz veya bütün ürünleri sürekli çekmek yerine, gerekli miktarda veriyi sayfalama tarzı yapılar kurarak çekmeniz daha doğru olacaktır.
 
Direkt DB seviyesinde yapman daha mantikli eger dogru indexlediysen.
Gereksiz yere throughput harciyorsun.

Performans olarak en mantiklisi urunleri cachelemek ve disk IO hic yapmamak.
 
Direkt DB seviyesinde yapman daha mantikli eger dogru indexlediysen.
Gereksiz yere throughput harciyorsun.

Performans olarak en mantiklisi urunleri cachelemek ve disk IO hic yapmamak.
Mesela eklediğim son ürünleri sayfada göstermek istiyorum. Bunun için veritabanına sorgu atmak yerine, yeni bir dizi oluşturup for döngüsü ile ile son ürünleri o diziye pushlamak daha mantıklı sanırım.
 
Mesela eklediğim son ürünleri sayfada göstermek istiyorum. Bunun için veritabanına sorgu atmak yerine, yeni bir dizi oluşturup for döngüsü ile ile son ürünleri o diziye pushlamak daha mantıklı sanırım.
O sirada DB nin guncellenip guncellenmedigini kontrol etmen gerekmiyor mu?
Ayrica gelen liste eklenme zamanina gore sort edilmis mi geliyor ki?
DB den gelen son urun == en guncel urun mu?
 
O sirada DB nin guncellenip guncellenmedigini kontrol etmen gerekmiyor mu?
Ayrica gelen liste eklenme zamanina gore sort edilmis mi geliyor ki?
DB den gelen son urun == en guncel urun mu?
Sort ile bir işlem yapmadım şu an deneme aşamasında olduğu için. Gelen ürünleri direkt reverse ediyorum. Reverse olduğu için eklediğim son ürün en güncel ürün oluyor. Bu olumsuz bir etki yaratır mı?
 
Son düzenleme:
Sort ile bir işlem yapmadım şu an deneme aşamasında olduğu için. Gelen ürünleri direkt reverse ediyorum. Reverse olduğu için eklediğim son ürün en güncel ürün oluyor. Bu olumsuz bir etki yaratır mı?

Acikcasi ben anlamadim bu kismi. Mongo sana sort edilmis urun listesi veriyor olmali, son elemaninin en gunceli oldugundan eminsen. Bence bu sorun cunku explicit sekilde sort etmiyorsan urunleri her defasinda sana gelen listenin eklenme zamanina gore sorted oldugundan emin olamazsin.

Filtrelemeyi DB seviyesinde yapmadiktan sonra; her defasinda tum urunleri cekip in-memory filtering yaptiktan sonra Mongo'ya zaten ihtiyacin yok. Redis kullan, tum urunleri in-memory tut, memory kullanimin degismez ve Disk kullanimini elimine etmis olursun.
 
Acikcasi ben anlamadim bu kismi. Mongo sana sort edilmis urun listesi veriyor olmali, son elemaninin en gunceli oldugundan eminsen. Bence bu sorun cunku explicit sekilde sort etmiyorsan urunleri her defasinda sana gelen listenin eklenme zamanina gore sorted oldugundan emin olamazsin.

Filtrelemeyi DB seviyesinde yapmadiktan sonra; her defasinda tum urunleri cekip in-memory filtering yaptiktan sonra Mongo'ya zaten ihtiyacin yok. Redis kullan, tum urunleri in-memory tut, memory kullanimin degismez ve Disk kullanimini elimine etmis olursun.
Teşekkür ettim. İlk başta ürünleri kaydederken tarih eklememiştim o yüzden öyle tricky bir şey yapmıştım. Şu an sort ile işlem yapıyorum. Redis hakkında bir bilgim yok araştıracağım.
 

Geri
Yukarı