Datatable Kullanmadan Tabloları Hızlı Okumak
Datatable kullanmadan veritabanında yüklü miktardaki veriyi hızlı birşekilde çekip listelemenin navite kodlama ile bir yöntemi var mıdır ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Evet, "veritabanı kullanmadan veritabanındaki veriyi hızlı bir şekilde çekip listelemenin" bir yolu var: Cache'lemek.
- Listeleme yapacağınız sayfaya girildiğinde bir kontrol yapmalısınız: Bu liste cache'lenmiş bir json dosyasında mevcut mu?
- Liste henüz cache'lenmemişse veritabanına bağlanıp büyük veriyi çekeceksiniz ve bir json dosyasına yazıp kaydedeceksiniz.
- Liste cache'lenmişse veritabanına hiç bağlanmayıp doğrudan json dosyasını döndüreceksiniz.
Sayfaya ilk giren talihsiz kişi veritabanına bağlanılıp cache'lenmesini sağlayacağı için biraz bekleyecek. Ama sonraki kişiler veriyi doğrudan json dosyasından alacakları için daha hızlı sonuç alacaklar.
Tabi burada önemli noktayı kaçırmamak lazım: - Veritabanından anlık olarak doğru veri okumanız gerekiyorsa bu yöntemi kullanamazsınız. Çünkü herkes son cache'lediğiniz veriyi görür.
- Verinin ne zaman cache'leneceğini ayarlamalısınız. Mesela son cache'lemenizin üstünden 2 saat geçmişse yeniden cache'lemeniz gerekiyor olabilir. Veya cache'lemeyi tamamen ayrı bir sayfadan sağlayabilirsiniz. Mesela yönetim panelinden bu veritabanı tablosunu etkileyecek bir değişim yapıldığında yeniden cache'leme yapılmasını sağlayabilirsiniz. Veya tüm değişiklikler yapıldıktan sonra bir "Cache'le" butonuna basılmasıyla birlikte bu işlemi yaptırabilirsiniz. İşin algoritması, verinin değişim sıklığına veya canlı verinin görüntülenme mecburiyetine göre değişir.
Bu cache'leme işlemini daha da üst seviyeye taşıyıp bütün bir sayfayı cache'leyebilirsiniz. Mesela "Yeni Ürünler" sayfasına ilk girişte PHP ile bu sayfayı oluşturduktan sonra çıktıyı bir html dosyası olarak kaydedersiniz ve eğer böyle bir html dosyası varsa doğrduan bu dosyanın görüntülenmesini istersiniz. Böylece sayfa her istekte yeniden render edilmemiş olur.
Sözün özü, cache'leme mekanizmalarını araştırmalısınız. Eğer bir framework kullanıyorsanız (Codeigniter, Laravel... gibi) bu tip mekanizmalar zaten framework içinde mevcuttur ama birkaç düzenlemeyle aktive edilmesi gerekir.
şöyle bir şey olabilir;
bazı sorgulamalar için saklı yordamlar oluşturabilirsin, ardından da bu sorgulamalara belirli versiyonlar tanımlayabilirsin. eğer versiyon güncel ise, sorguyu es geçip daha önceden php ile önbelleğe aldığın o sorgunun json çıktısını alabilirsin. böylece o tabloda değişiklik yapıldığı zamanlarda sadece veritabanına bağlanıp sonuçları listelemiş olursun. önemli ölçüde performansı arttırır.
hatta biraz daha abartarak, veritabanında bir güncelleme yaptığında, o önbellek dosyasında aynı satır için o işlemi gerçekleştirirsen, versiyon ile bile uğraşmadan sürekli önbelleğini güncel tutabilirsin.
benim aklıma gelen bu, hızlı sonuç için önbellekten okuma.