tek bir veriyi veritabanında saklamak

Başlatan Ali_54, 15 Şubat 2014, 12:46:15

Ali_54

Merhabalar başlığı nasıl yazacağımdan emin olamadım.

SQL de satır ve sutunlar halinde veritabanı tabloları oluşturarak verilerimizi depolarız. bende zaten böyle yapıyorum. Ancak şunu merak ediyorum. elime bir değişken var. bu veriyi bir yerlerde saklamak istiyorum. Veritabanında Sadece bir değişken için tablo açıp, sutun tanımlayıp, bir adet kayıt yapmak çok saçma. (bir değişken sadece bir satır! devamı da yok).

Dersenizki uygulama dizinine bir tane degisken.txt atarsın değişkeni ordan okur, yine aynı yere yazarsın. Ama bu performansı düşürür çünkü RAM den çalışmıyorsunuz. Durmadan HDD ye yazıp okuyorsunuz. Registry de tutulabilir mi bilmiyorum. En etkili yol ne olur sizce?
1 harf öğretenin 4 gün kölesi olurum.

esensoy

istediğin bir yere kaydedersin,
programın başında 1 kere okuyup ramdeki bir değişkene aktarırsın, sonra hep oradan okumaya devam edersin,
uygun yerlerde yada zamanlarda da nerede tutuluyorsa oraya güncelleme yaparsın
En tehlikeli an "zafer" anıdır.

Ali_54

Haklısınız böylece RAM de çalışıyor olurum. Ancak ben eksik bilgi vermişim. Ama kodum PHP. sizin öneriniz masaüstü programda mantıklı olur.

Sayfaya her istek geldiğinde txt okuması iyi çözüm değil bence
1 harf öğretenin 4 gün kölesi olurum.

barisertekin

#3
StaticDatalar Tablosu

ID int,
VariableName varchar(50),
Data varchar(50),
Type varchar(50)


İstediğiniz kadar değişkeni adıyla birlikte saklayın. Bulmak isterseniz de Select Data,Type from StaticDatalar where VariableName = 'ToplamUyeAdeti';

ToplamUyeAdeti gibi veriler her seferinde count edilmemek için Üye insert delete sorgularıyla birlikte yeniden hesaplanıp bu static tablolara yazılırlar.

Tek bir değişken için değil aynı zamanda bu gibi işler için de kullanabilirsiniz.

Edit : Kod tarafında tipe göre cast etmek zor olabilir. Şöyle bir kod dene çalışır mı bilmiyorum.

Select CONVERT(Type,Data) from StaticDatalar where VariableName = 'ToplamUyeAdeti'

Ali_54

sql de object veri tipini duymamıştım. değişken tipini tutmaya mı yarıyor? yoksa içeriği mi
1 harf öğretenin 4 gün kölesi olurum.

barisertekin

#5
Kodu düzenledim bende duymadım hiç :) Yöntemi değiştirdim.

Datayı ve Tipini tutarsak okurken o tipe göre cast edip okuyabiliriz.

muhittin_kaplan

Xml olarak kaydedin,
Text olarak kaydedin veya
Registry girdisi olarak kaydedin

Ali_54

Başta da yazmıştım.

text yada xml okuma yazma performansını düşürür. Registry  hızını bilemiyorum.
1 harf öğretenin 4 gün kölesi olurum.

Yuunus

#8
neden tablo disinda bir yerde tutmak istiyorsunuz, avantaji nedir, cokmu yer kapliyor? zaten db icinde degisken saklayabileceginiz bir yer yok, su olabilir: eger degiskenizin degismiyorsa bir function tanimlayip default olarak donus degerinize bu degiskeni atayabilir sonra bu function tablo gibi sorgulayip degeri okuyabilirsiniz.Tabi ben bunlari yazarken pgsql icin dusundum sizin db nedir bilmiyorum.

yada degiskeniniz degisiyorsa function tamamen update edilerek yeni deger yuklenmis olur.

t43

php de global değişkenler var orada tanımlarsan her session ve request de ulaşabilirsin.sen silene kadar veya server restart edilene kadar kaybolmaz ki linux ise sistem daha iyi.

muhittin_kaplan

ali veritabanında da hızlı olmazki,
aç kaydet kapat.

registry de aynı olur, ama program açıkken bir değişkende tutar (ram), programdan çıkarken son halini kaydedersin, açılışta değişkene yüklersin tekrar

Ali_54

program açıkken aynen dediğiniz gibi yapardım. progrm açılırken bir değişken tanımlayıp ona yüklerdim. ama php kullanıyorum demiştim. php dosyaları sürekli açılıp kapanan dosyalar. clientlar tarafından eşzamanlı 100lerce kez çağrılabiliyor.  t43 ün dediği olay aklıma gelmemişti. Performansı optimize etmek için bunlara kafa yordum. yanıt verenlere teşekkürler.

not:
RAM den okumakla HDD den okuma yapma arasında bazen çok yüksek hız farkı vardır. Ufak işlemlerde bu farkı hissetmezsiniz bile. Ama yüksek hızlı data giriş çıkışında HDD de farkedilir yavaşlama olur düşüncesindeyim. RAM ROM performansı farkı gibi..
1 harf öğretenin 4 gün kölesi olurum.

barisertekin

Alıntı Yapphp dosyaları sürekli açılıp kapanan dosyalar.

O zaman cache'te tut. Hem de ram'de olmuş olur.