Hibernate Cache Algoritmaları
Veritabanıyla çok fazla alış veriş içerisinde olan uygulamalar yoğun veritabanı trafiği nedeniyle performans düşüklüğü gösterirler. Bu sorunu çözmek için en iyi çözüm yolu cache algortimaları kullanmaktır.
Hibernate web uygulamalarının performansını arttırmak için yapılması gerekenler
Cache daha önce yaptığımız sorgular sonucu ulaşılan verileri tutmaktadır genel olarak. Böylece aynı veriye tekrar ulaşmak istediğimizde bu veri cache’den getirilerek bu veriye daha hızlı ulaşmamızı sağlanır. Ancak farklı bir veriye ulaşmak istediğimizde tekrar veritabanıyla bağlantı kurulmak zorundadır.
Hibernate iki farklı cache sunmaktadır. Bunlardan birincisi 1. Seviyede cache diğeri ise 2. Dereceden cachedir.
Birinci Seviye Cache: Session nesnesiyle ilişkilidir. Hibernate default olarak bu cache yöntemini kullanır.Bir transection’un birden fazla kez gerçekleştirilmesinin önüne geçer. Kullanıcının yaptığı değişiklikleri her seferinde veritabanına bağlanıp gerçekleştirmek yerine bütün değişikliklertransaction sonunda gerçekleşir.
İkinci Seviye Cache : Session Factory Nesnesiyle ilişkilidir.Veritabanına bağlantı sonucu getirilen veriler tek kullanıcı için geçerli olmak yerine tüm kullanıcılar için geçerli oluyor. Dolayısıyla cache’de bulunan bilgiler için database transaction gerçekleştirmemiz gerekmez.Burada query level cache de kullanılabilirdi.
Cache Yöntemleri
Hibernate 4 farklı cache yöntemini destekler. Bunlar;
EHCache (Easy Hibernate Cache)OSCache (Open Symphony Cache)
Swarm Cache
JBoss Tree Cache
Ehcache
Bu yöntem hızlıdır. Kullanımı kolaydır. Read/only ve read/write cache desteklidir.Hafıza bazlı ve disk bazlı cache desteklidir. Kümelemeyi (clustering) desteklemez.Oscache
Bu yöntem güçlüdür(powerful). Esnektir. Read only ve read write hafıza desteklidir. Hafıza bazlı ve disk bazlı cache destekler. Gruplama için temel destek sağlar (JavaGroups veya JMS ile).
SwarmCache
Gruplama bazlı cache’dir. Read only ve nonstrict read/write cache desteklidir. Okuma işlemlerinin yazma işlemlerinden daha fazla olduğu uygulamalar için daha iyidir.
JBoss Tree Cache
Güçlü bir yöntem. transaction-capable caching mimarisine ihtiyaç duyduğumuz durumlar için çok etkilidir.
Hiçbir cache sağlayıcısı tüm cache özelliklerini bir arada sağlamaz.
Read-Only: Okumanın çok sık olduğu ama hiç update yapılmadığı durumlar için çok etkin bir özellik. Bu özellik çok basit. Gruplamayı kullanmak açısından çok güvenli
Read-Write: Verilerimizi update etmek için bu özellikten faydalanırız.Bu özelliği gruplama için kullanmak istersek locking desteğinin olması gerekmektedir.
Nonstrict Read-Write: Verilerimizi çok sık update ettiğiz durumlarda bu özellik çok işimize yaramaktadır.
Kaynak: http://www.javabeat.net/articles/37-introduction-to-hibernate-caching-1.html
Hiç yorum yok:
Yorum Gönder