İyi de oturumun sonlandığını ya da sonlanması gerektiğini nereden çıkardınız? Bir demoyu herkes aynı anda kullanabilir, tablolar sıfırlanır ve bundan herkes etkilenir. Siz giriş yapar bir değişiklik yaparsınız, ben de görürüm bu değişikliği. Görmüyor muyuz demo örneklerinde? İnsanlar bir sürü içerikler giriyorlar, random klavye tuşlarına basıp girişler yapıyorlar, 3-5 dakika ya da yarım saat sonra bir bakıyoruz herşey sıfırlanmış. Eğer kullanıcı bazlı ise, verileri mongoda saklarsınız, belli zaman aralıklarında mongoyu boşaltırsınız. Veri mongoda varsa gösterir yoksa orijinal kaydı gösterirsiniz. Bunun da maliyeti sandığınız kadar yüksek değildir. Ama konuya geniş açıdan bakmaya gerek yok, arkadaşın yazdığı çerçeveden baksak yeterli. 3-5 dakikada bir veritabanını güncellersiniz, demoya giren herkes temiz veriyi görür, olur biter.
"Scriptin veritabanında bulunan
tabloları boşaltıp, taslak verileri giren bir betik yazmışlardır. Bu betiği de her dakika çalışacak şekilde cronjoba veya mysql scheduled events e eklemişlerdir."
Sizin bahsettiğiniz şekilde yapmak demek her dakika ilgili tabloyu silmek "DROP TABLE tablo1;"
ve içeriğini standart verilerle doldurmak "CREATE TABLE tablo1 SELECT * FROM tablo1_yedek;"
demek.
Şu anda demoyu görüntüleyen 2 kullanıcı var diyelim. Siz bu 2 kullanıcı için 2 tablo mu oluşturacaksınız? Kullanıcının session'ı sonlandığında bunu tespit edip ilgili tabloyu silmeniz gerekir. Bu durumu yakalamak zor ve cost'u yüksek olan bir işlem.
Ayrı tablolalar değil de belirli bir tabloya her kullanıcı için bir satır eklediğinizi ve her dakika güncellediğinizi (UPDATE) düşünelim. Yine benzer bir cost'la karşı karşıya kalınır. Çünkü session'ın sonlandığını yakalayıp tablodan ilgili satırı "silmeniz" gerekmekte.
Her dakika veritabanına bu kadar sorgu yapmak belirli bir kullanıcı sayısından sonra sistemi fazlasıyla yorar.
Böyle durumlarda cost'u yani maliyeti client tarafına yüklemek en verimli olanıdır. Bunu sunucuya yüklerseniz ay sonu faturanız da ona göre şişecektir. Amazon kullanıyorsanız geçmiş olsun.