Video - Play! Framework ile etkin önbellek yönetimi

26 views
Skip to first unread message

Fehmi Can SAĞLAM

unread,
Feb 26, 2012, 4:12:29 PM2/26/12
to Play Framework Türkiye
Merhaba,

Bu videoda[1] Play! Framework önbelleğini etkin yönetebilmek adına bir yöntem öneriyorum ve veritabanı istatistiklerini 5 dakikada bir yenilenecek şekilde önbellekte tutan bir örnek veriyorum. Yöntemin eksiklerini ya da hatalarını gidermek üzere yorumlarınızı okumaktan memnun olurum.

[1]: http://fehmicans.net/blog/2012/02/26/play-framework-ile-etkin-onbellek-yonetimi/

Volkan YAZICI

unread,
Feb 27, 2012, 12:07:33 PM2/27/12
to Play Framework Türkiye
Elinize sağlık, Play'de caching'i anlamak adına çok güzel bir guide.
Benim nacizane iki yorumum olacak:

1) Çözünürlük biraz daha yükseltilebilinir, özellikler kodları okuması
zor oluyor.

2) CacheManager'da her bir model için ayrı ayrı metodlar oluşturmak
yerine,

public class CountCache {
public static void listen(Model model, String key);
public static Long get(String key);
}

gibi daha generic bir arayüz kullanabilirdik, diye düşünüyorum.

On Feb 26, 11:12 pm, Fehmi Can SAĞLAM <fehmican.sag...@4primes.com>
wrote:
> [1]:http://fehmicans.net/blog/2012/02/26/play-framework-ile-etkin-onbelle...

Fehmi Can SAĞLAM

unread,
Feb 27, 2012, 12:15:00 PM2/27/12
to play-fra...@googlegroups.com

On Mon Feb 27 19:07:33 2012, Volkan YAZICI wrote:
> Elinize sağlık, Play'de caching'i anlamak adına çok güzel bir guide.

Teşekkürler.

> Benim nacizane iki yorumum olacak:
>
> 1) Çözünürlük biraz daha yükseltilebilinir, özellikler kodları okuması
> zor oluyor.
>

Bu kez montaja vakit ayıramadığım için böyle oldu:( Kusura bakmayın. Bu
arada kodlar Github'da mevcut:
https://github.com/canavar/kolay/blob/master/app/cache/CacheManager.java

> 2) CacheManager'da her bir model için ayrı ayrı metodlar oluşturmak
> yerine,
>
> public class CountCache {
> public static void listen(Model model, String key);
> public static Long get(String key);
> }
>
> gibi daha generic bir arayüz kullanabilirdik, diye düşünüyorum.

Bu örneği biraz daha açabilir misiniz? Özellikle modeller içinde statik
metodlar yer aldığı için bu tür yapılar biraz sıkıntı oluyor.
Implementasyon kafamda canlanmadı açıkçası.

Volkan YAZICI

unread,
Feb 28, 2012, 2:52:10 AM2/28/12
to play-fra...@googlegroups.com
On Monday, February 27, 2012 7:15:00 PM UTC+2, Fehmi Can Sağlam wrote:

On Mon Feb 27 19:07:33 2012, Volkan YAZICI wrote: 

> 2) CacheManager'da her bir model için ayrı ayrı metodlar oluşturmak

> yerine,
>
>    public class CountCache {
>      public static void listen(Model model, String key);
>      public static Long get(String key);
>    }
>
>    gibi daha generic bir arayüz kullanabilirdik, diye düşünüyorum.

Bu örneği biraz daha açabilir misiniz? Özellikle modeller içinde statik
metodlar yer aldığı için bu tür yapılar biraz sıkıntı oluyor.
Implementasyon kafamda canlanmadı açıkçası.

Şöyle bir şey karaladım ve çalışıyor gibi: https://gist.github.com/1930442
Siz ne düşünüyorsunuz?

Fehmi Can SAĞLAM

unread,
Feb 28, 2012, 4:29:28 AM2/28/12
to play-fra...@googlegroups.com
Şahane.

İki yöntemi birleştirerek yeni bir gist hazırladım:
https://gist.github.com/1931497

Buradaki motivasyonum şuydu:

1. İstatistikler önbellekte tutulmalı çünkü Cache implementasyonum
zaman içerisinde değişebilir.(Memcache, Hazelcast, Redis...)

2. Yöntem yalnızca count() metodu için değil, query alan count() metodu
ve geliştiricinin ekleyebileceği diğer static metodlar(MappedSuperClass
içine eklenecek ve runtime'da enhance edilecek countByModifier,
countByCreator metodları gibi) için de çalışabilmeli.

Son hali oldukça hoşuma gitti. Volkan hocam tekrar teşekkürler.
Aklınıza gelen başka geliştirme var mı?

Volkan YAZICI

unread,
Feb 28, 2012, 6:56:35 AM2/28/12
to Play Framework Türkiye
Bence güzel olmuş.
Bu kadar takladan sonra, "Cache'leyemiyom ben ya!" diyen adama da
selam olsun.

On Feb 28, 11:29 am, Fehmi Can SAĞLAM <fehmican.sag...@4primes.com>
wrote:

Fehmi Can SAĞLAM

unread,
Feb 28, 2012, 7:04:22 AM2/28/12
to play-fra...@googlegroups.com
Bir tane Callable parametre alan constructor ekleyip gisti güncelledim.
Böylece yapılacak işi parametre olarak da verebiliyoruz.

Fehmi Can SAĞLAM

unread,
Feb 28, 2012, 7:07:57 AM2/28/12
to play-fra...@googlegroups.com
Akşam da JPA üzerinden veritabanı güncellendiğinde Cache'i güncel
tutmanın yolları konusunda bir screencast hazırlamaya çalışacağım. Bu
kez montaja vakit ayırabilirim sanıyorum:)

Engin Tekin

unread,
Feb 28, 2012, 6:01:12 PM2/28/12
to Play Framework Türkiye
Merhabalar,

Videonuzu izledim, gist'in son haline de baktim.

Aslinda Volkan Bey'in yazdigi ornekte duzgun ama ikisinin birlesimi
olan gist'in anlasilabilirligi azalmis bence.

Sahsen tercih etmek durumunda kalsam callable'li ornek daha anlasilir
oldugu icin o halini tercih ederdim.

On 28 Şubat, 14:07, Fehmi Can SAĞLAM <fehmican.sag...@4primes.com>
Reply all
Reply to author
Forward
0 new messages