Ben Django oturumları bakıyorum ve varsayılan olarak onlar veritabanında saklanır. Hangi dosya sistemleri ve önbellek oturumları faydaları vardır ve bunları ne zaman kullanmalıyım?
Django Sessions
Dosya sistemi arka uç sisteminizde başka bir bölümünde bir veritabanını kullanmak için gidiyoruz değil bakarak sadece değer. Eğer bir veritabanı kullanıyorsanız, bu durumda dosya sistemi arka uç tavsiye ilgisi yoktur.
memcache arka uç veri tabanı için çok daha hızlıdır, ancak bir oturumun riski siliniyordur ve oturum verilerinin bir kısmını kaybetmiş olmanın çalıştırın.
Eğer o zaman bir oturum kaybetme ile başa çıkabilir dikkatlice gerçekten, gerçekten yüksek trafik web sitesi ve kod iseniz Memcache'ı kullanın. Bir veritabanı dosya sistemi önbelleği kullanmak kullanmıyorsanız, ancak varsayılan veritabanı destekli hemen her durumda en iyisi, en güvenli ve en kolay seçenek ise.
Bu cevap genellikle seans mağazalarında hakkındadır yüzden hiçbir Django uzmanıyım. Yanılıyorsam downvote.
Performans ve Ölçeklenebilirlik
oturumu mağazanın seçimi performans ve ölçeklenebilirlik üzerinde bir etkisi vardır. Eğer çok popüler bir uygulama varsa, bu sadece büyük bir sorun olmalıdır.
(Diskler ucuz olduğu için) Ucuza oturumları bir sürü böylece Hem veritabanı ve dosya sistemi oturumu mağazalar (genellikle) diskleri ile desteklenmektedir, ancak istekleri genellikle (diskler yavaş olduğu için) okunacak veri için beklemek zorunda kalacak. Memcached oturumları RAM kullandığından, (RAM pahalı olduğu için) eşzamanlı oturumlar aynı sayıda desteklemek için daha fazla mal olacak, ama (RAM hızlı olduğu için) daha hızlı olabilir.
Dosya Sistemi oturumları uygulamanın çalıştığı kutusuna bağlıdır, bu nedenle sitenizin büyük alırsa Birden uygulama sunucuları arasındaki dengeyi yüklenemiyor. Veritabanı ve memcached oturumları paylaşılan bir oturum deposuna konuşurken birden fazla uygulama sunucuları atalım.
Basitlik
oturumu mağazanın seçimi de sitenizi dağıtmak için ne kadar kolay etkileyecektir. Varsayılan uzak değiştirilmesi bazı karmaşıklığı mal olacak. Memcached ve RDBMSs hem kendi karmaşıklığını var ama başvurunuz muhtemelen yine bir RDBMS kullanarak olacak.
Eğer çok popüler bir uygulama yoksa, basitlik büyük endişe edilmelidir.
Bonus
Diğer bir yaklaşım saklamaktır tanımlama oturum verileri (tümü değil, sadece bir kimlik). Bu oturum mağaza otomatik kullanıcı sayısına sahip ölçekler avantajına sahiptir, ama çok dezavantajları vardır. Siz (veya çerçeve) oturum verilerini dövme kullanıcıların durdurmak için dikkatli olmak gerekir. Her şey her isteği ile gönderilecektir çünkü aynı zamanda küçük her oturumu tutmak gerekir.
bir oturum arayüzü seçerken dikkat edilmesi gereken bir şey "oturum verileri modifiye ne sıklıkta" dir? Oturum verileri her istek üzerine değiştirilirse ılımlı trafik ile bile siteleri saklamak ve veri almak için birçok veritabanı geziler yaparak, yaşayacaktır.
önceki çalışmada biz sadece oturumu arka uç olarak memcache kullanılan ve gerçekten iyi çalıştı. Bizim idari ekip kaya gibi istikrarlı iki özel memcached örneklerini yapımında gerçekten büyük çaba sarf ama ilk kurulum ile twiddling bit sonra, biz oturumu arka uçları operasyonların herhangi kesmeleri yoktu.
Veritabanı seni olmayan bir DBA varsa, (bir ön uç madde sadece olmak üzere) bir veritabanı destekli oturumu kullanmaya izin verilmeyebilir. Django destekler kadar ayrı bir db oturumları ve kullanıcı mesajları (django.contrib.auth iletiler de db depolanır) gibi önyüzü özgü şeyler var, böylece kolayca birkaç veritabanlarından verileri birleştirme, sen tutmalıyız Bu akılda.
Django 1.1 itibariyle Eğer cached_db oturumu arka ucunu kullanabilirsiniz.
Bu önbellekte oturumu (sadece memcached kullanın) depolar ve geri DB yazar. o önbellek düştüğünü, bu DB'den okunacaktır.
Bu sadece oturumu depolamak için memcached kullanarak daha yavaş olmasına rağmen, oturuma kalıcılığını ekler.
Daha fazla bilgi için, bkz: Django Dokümanlar: önbelleğe alınmış Oturumları kullanma