JAVA ile verileri önbellekte tutma ve performans yükseltme

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
Verileri önbellekte tutmak için bir araştırma yaptım. Bunun için hash map yani 2'li değişken sistemini uygun gördüm. Bu sistem bildiğiniz üzere değişken ve değer şeklinde yer alıyor. Kullanıcı değişkeni çekerek değere ulaşabiliyor, sonradan değer ekleyebiliyor, değeri güncelleyebiliyor veya değeri silebiliyor.

Bunu şunun için kullanabiliriz. Örneğin sürekli veritabanından veri çekmek yerine bu sistemi kullanırız, önbelleğe alır. Örnek olarak kullanıcı paralarını bu şekilde çekeriz. Buraya kadar her şey güzel.

Peki ya şunu nasıl yapabiliriz? Bir değişken için birden fazla değişken ve değer eklemek gerekebiliyor. Bunun için ne kullanılıyor? Örnek olarak 1. alan için X, Y ve Z koordinatını kaydediyoruz. Ayrıca bir de açıklama metni var. Toplam 4 değişken demek. Bunun yanı sıra birçok alan bu şekilde olacak. Bunları nasıl önbellekte depolayabiliriz?

Aklıma çok boyutlu diziler geldi fakat sayı olarak girildiği için kafa karışabilir. Örneğin "Regions[0]['Name']" şeklinde yapmak mümkün mü? Bunun dışında nasıl yöntemler önerirsiniz?
 
Cache'te tutulacak alanlar için ayrı bir class oluşturulup HashMap bunu kullanacak şekilde olabilir.

Java:
class CacheVars {
 public float x,y,z;
 public string desciption;
}

HashMap<string, CacheVars> cache = new HashMap<string, CacheVars>();

Eğer web tabanlı büyük bir uygulama ise redis, couchbase gibi harici çözümler de düşünülebilir. Büyük bir veri tutulacaksa uygulama sunucusu içinde tutmak ayrı bir bellek yönetimi gerektirecek bir şey. Java'nın GC'si ne kadar düzgün çalışır, ne kadar optimize olur tartışmalı bir konu.
 
Cache'te tutulacak alanlar için ayrı bir class oluşturulup HashMap bunu kullanacak şekilde olabilir.

Java:
class CacheVars {
 public float x,y,z;
 public string desciption;
}

HashMap<string, CacheVars> cache = new HashMap<string, CacheVars>();

Eğer web tabanlı büyük bir uygulama ise redis, couchbase gibi harici çözümler de düşünülebilir. Büyük bir veri tutulacaksa uygulama sunucusu içinde tutmak ayrı bir bellek yönetimi gerektirecek bir şey. Java'nın GC'si ne kadar düzgün çalışır, ne kadar optimize olur tartışmalı bir konu.
Yani şöyle mi? Sınıf özel bir değişken olacak. Ben her bir değişken için sınıfı mı çekeceğim?
 
Normal Map kullanımı gibi. Herhangi bir değeri herhangi bir değişken ile ilişkilendirebilirsiniz. Class'tan üretilmiş bir nesne ile de eşleştirebilirsiniz. Bu sayede bir anahtar değere ait birden fazla değişkeni Cache'de tutabilirsiniz. Bu şekilde kullanırsanız Regions.get("0").description Regions.get("0").x gibi erişebilrsiniz. Tek anahtar değere ait birden fazla değer tutmuş oluyoruz yani bu yöntemle.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı