19 Ocak 2011 Çarşamba

Hibernate Cache Algoritmaları

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