Veri erişimi ve kalıcılık / depolama katmanları, önbellekleme için karşı konulmaz doğal yerlerdir. G / Ç'leri yapıyorlar, önbellekleme yapmak için onları kullanışlı ve kolay bir yer haline getiriyorlar. Neredeyse her DAL veya kalıcılık katmanına, olgunlaştıkça önbellekleme işlevi verileceğini, en başından beri bu şekilde tasarlanmadığı takdirde görüyorum.
Sorun niyet . DAL ve kalıcılık katmanları nispeten düşük seviyeli yapılarla ilgilidir - örneğin, kayıtlar, tablolar, satırlar ve bloklar. "İşletme" veya uygulama katmanı nesnelerini göremiyorlar veya daha üst seviyelerde nasıl kullanıldığı konusunda çok fazla fikir sahibi değiller. Bir avuç satır veya bir düzine bloğun okunduğunu veya yazıldığını gördüklerinde, temsil ettikleri açık değildir. "Şu anda analiz ettiğimiz Jones hesabı", uygulamanın yalnızca bir kez ihtiyaç duyduğu ve tekrar yönlendirmeyeceği bazı temel vergi oranı referans verilerinden çok farklı görünmüyor. " Bu katmanda veri veridir.
DAL / kalıcılık katmanında önbellekleme, "soğuk" vergi referansı verisinin burada oturuyor olması, anlamsız bir şekilde 12.2 MB önbellek işgal etmesi ve aslında yalnızca bir dakika içinde yoğun bir şekilde kullanılacak bazı hesap bilgilerinin yerinin değiştirilmesi. En iyi önbellek yöneticileri bile, daha üst düzey veri yapıları ve bağlantıları hakkında yetersiz bilgi edinmekte ve hangi işlemlerin yakında gerçekleşeceği hakkında çok az bilgi edinmekte ve tahmin algoritmalarına geri dönmektedir .
Buna karşılık, uygulama veya işletme katmanı önbelleklemesi neredeyse hiç düzgün değil. İş kodunu daha karmaşık hale getiren önbellek yönetimi işlemlerini veya ipuçlarını diğer iş mantığının ortasına yerleştirmeyi gerektirir. Ancak takas: Makro düzeyindeki verilerin nasıl yapılandırıldığı ve hangi işlemlerin gerçekleştiği hakkında daha fazla bilgi sahibi olmak, en iyi ("bekar" ya da "Bélády Min") önbellekleme verimliliğini tahmin etmek için çok daha iyi bir fırsata sahip.
Önbellek yönetimi sorumluluğunun işletme / uygulama koduna dahil edilip edilmemesi mantıklı bir çağrıdır ve uygulamalara göre değişir. Pek çok durumda, DAL / kalıcılık katmanlarının onu "mükemmel derecede doğru" olarak elde edemeyeceği biliniyorsa, tradeoff oldukça iyi bir iş yapabiliyor, bunu mimari olarak "temiz" ve çok daha yoğun bir şekilde test edilebilir şekilde yapıyorlar. ve bu düşük seviyeli yakalama işletme / uygulama kodunun karmaşıklığını artırmaktan kaçınır.
Düşük karmaşıklık, daha yüksek doğruluk ve güvenilirliği teşvik eder ve pazara daha kısa sürede ulaşır. Bu genellikle büyük bir tradeoff olarak kabul edilir - daha az mükemmel önbellekleme, ancak daha iyi kalite, daha zamanında iş kodu.