Java Caching Solutions
Bu yüzden son yıllarda Second Level Caching uygulamalarda çok kullanılan ve aranılan bir özellik olmaya başladı. Bu yüzden Hibernate gibi populer O/R Mapping araçları Second Level Caching'i default olarak destekliyor. Eğer zaten Hibernate kullanıyorsanız sadece düşünmeniz gereken Hibernate'in altında hangi Cache implemantasyonunu kullanacağınıza karar vermeniz. Hibernate bu konuda oldukça esnek.
Eğer Hibernate kullanmıyorsanız dahi mevcut POJO aracınıza kendiniz de bir Second Level Cache tool'u entegre edebilirsiniz. Bu konuda en yaygın kullanılan 4 Cache Tool'u mevcut.
1) JBossCache : Cache araçları içindeki en yetenekli olanı. En önemli özelliği cluster (senkron/asenkron) desteğinin olması ve transactional çalışması. Cluster nodları arasındaki iletişim için JGroups kullandığı için oldukça performanslı. Cache datası konfigürasyonunuza göre memory'de veya disk'te saklanabiliyor. Uygulamanız cluster bir mimari üzerinde ise ve transaction bütünlüğü çok önemliyse JBossCache'ten şaşmayın. JBoss Application Server altyapısında da kullanıldığı için güvenilirliği oldukça yüksek.
2) EHCache : Cache araçları içerisindeki en hızlı ve en kolay uygulanabilir olanı. EHCache'in de memory ve disk tabanlı caching desteği mevcut. EHCache bir çok open-source ve lisanlı uygulama tarafından kullanılmakta. EHCache'in de cluster desteği mevcut.
3) OSCache : Quartz, Webwork(Strus ile birleşti yakın zamanda), XWork, SiteMesh, OSWorkflow gibi meşhur open-source toolları geliştiren www.opensyphony.com topluluğu tarafından geliştirildi. JBossCache kadar yetenekli olmasa da cluster (OSCache de JGroups kullanıyor) desteği mevcut. OSCache de gayet başarılı ve çok tutulan bir Cache çözümü.
4) SwarmCache : Basit, hızlı ama cluster desteği olan diğer güzel bir caching tool?u. SwarmCache de altyapısında JGroups kullanıyor.
Caching Strategies
- Read-only: This strategy is useful for data that is read frequently but never updated. This is by far the simplest and best-performing cache strategy.
- Read/write: Read/write caches may be appropriate if your data needs to be updated. They carry more overhead than read-only caches. In non-JTA environments, each transaction should be completed when Session.close() or Session.disconnect() is called.
- Nonstrict read/write: This strategy does not guarantee that two transactions won't simultaneously modify the same data. Therefore, it may be most appropriate for data that is read often but only occasionally modified.
- Transactional: This is a fully transactional cache that may be used only in a JTA environment.
Support for these strategies is not identical for every cache implementation. Table 1 shows the options available for the different cache implementations.
Cache | Read-only | Nonstrict Read/write | Read/write | Transactional |
EHCache | Yes | Yes | Yes | No |
OSCache | Yes | Yes | Yes | No |
SwarmCache | Yes | Yes | No | No |
JBoss TreeCache | Yes | No | No | Yes |
5 Yorum:
O makale biraz eski kalmış..
25 April 2006: ehcache-1.2 released.
After 10 months of development, ehcache-1.2 is released.
The 1.2 release of ehcache has many new features including:
* Flexible, extensible, high performance distributed caching. The default implementation supports cache discovery via multicast or manual configuration. Updates are delivered either asynchronously or synchronously via custom RMI connections. Additional discovery or delivery schemes can be plugged in by third parties.
Teşekkürler Uysal, gerekli düzeltmeyi yaptım. Sen hangisini tercih ederdin ?
Bırakın bir tanesini seçmeyi,
Bu alandaki son gelişmelerle alternatifler artmaya başladı.
1- ehcache version=1.3
license=apache
2- jcs version=1.3 license=apache
ehcahce ve jcs aynı koddan türemiş. benzer özellikleri var..
3- oscache version=2.4 license=apache
4- jboss cache version=2.0 license=LGPL
5- terracotta
version=2.3 license=modified MPL
hepsi son bir ay içinde yeni sürüm çıkartmışlar, ya da çıkarmak üzereler.. Özellik bakımından hepsi birbirne yakınlaşmış.
Bir tek terracotta yeni open source olduğu için farklı bir şeyler var..
Hibernate için lisansı LGPL de dahil (1-2-3-4) kullanılabilir.
Ancak LGPL apache lisansına göre daha kısıtlayıcıdır. (Hibernate de LGPL)
Hiç bir apache projesi LGPL ürün dağıtamaz mesela, bu yüzden Apache Roller gibi projeler hibernate'i bırakıp openJPA gibi apache lisanslı ürünlere geçiyorlar.. (dağıtamadıkları için kullanıcıların parçaları ayrı ayrı indirmeleri gerekiyor, bu da kurulumu zorlaştırıyor)
GPL 3 lisansının çıkmasıyla işler daha da karışacak.. Patentler konusunda düzenlemeler getiriyor GPL 3, (SUN patentlerini open source bir ürüne karşı kullanmayacağını taahhüt etti)
OpenSolaris'i tam olarak serbest bırakması için SUN'in GPL 3'ün finalize olmasını beklediği söyleniyor.
İşte böyle tercihler teknik değil, politik yapılır oluyor.
ehcache ve oscache kullandım, spring modules kullanınca birinin yerini diğerini koymak problem değil, her ikisinden de memnun kaldım.
Bu konuda yazmis oldugum bir makale
http://www.kurumsaljava.com/2008/11/28/web-aplikasyonlarinda-yuksek-performans-icin-caching-mekanizmalari/
Bloğunuz ve içerikleriniz harika...
Yorum Gönder
Kaydol: Kayıt Yorumları [Atom]
<< Ana Sayfa