programing

장고 세션

testmans 2023. 5. 5. 08:44
반응형

장고 세션

저는 장고에서 세션을 보고 있으며, 기본적으로 데이터베이스에 저장되어 있습니다.파일 시스템 및 캐시 세션의 이점은 무엇이며 언제 사용해야 합니까?

파일 시스템 백엔드는 시스템의 다른 부분에 데이터베이스를 사용하지 않을 경우에만 유용합니다.데이터베이스를 사용하는 경우 파일 시스템 백엔드에 권장할 내용이 없습니다.

memcache 백엔드는 데이터베이스 백엔드보다 훨씬 빠르지만 세션이 삭제되고 일부 세션 데이터가 손실될 위험이 있습니다.

만약 당신이 정말로 트래픽이 많은 웹사이트라면, 세션 손실에 대처할 수 있도록 조심스럽게 코드를 작성한 후 memcache를 사용하세요.데이터베이스를 사용하지 않는 경우 파일 시스템 캐시를 사용하지만 기본 데이터베이스 백엔드는 거의 모든 경우에 가장 안전하고 간단한 옵션입니다.

저는 장고 전문가가 아니기 때문에 이 답변은 일반적으로 세션 스토어에 대한 것입니다.제가 틀렸다면 반대표를 던지세요.

성능 및 확장성

세션 저장소 선택은 성능과 확장성에 영향을 미칩니다.이것은 매우 인기 있는 응용 프로그램이 있는 경우에만 큰 문제가 될 수 있습니다.

데이터베이스 및 파일 시스템 세션 저장소는 (일반적으로) 디스크로 백업되므로 많은 세션을 저렴하게 수행할 수 있지만(디스크의 속도가 느리기 때문에) 요청은 종종 데이터 읽기를 기다려야 합니다.메모리 캐시된 세션은 RAM을 사용하므로 동일한 수의 동시 세션을 지원하는 데 더 많은 비용이 들지만(RAM이 비싸기 때문에) 더 빠를 수도 있습니다. RAM이 빠르기 때문에 더 빠를 수도 있습니다.

파일 시스템 세션은 응용프로그램이 실행 중인 상자에 연결되어 있으므로 사이트가 커지면 여러 응용프로그램 서버 간에 로드 밸런싱을 수행할 수 없습니다.데이터베이스 및 memcached 세션을 사용하면 여러 응용프로그램 서버가 공유 세션 저장소와 통신할 수 있습니다.

단순성

세션 저장소를 선택하면 사이트 배포가 얼마나 쉬운지에도 영향을 미칩니다.기본값에서 벗어나 변경하면 복잡성이 다소 높아집니다.Memcached와 RDBMS는 둘 다 고유의 복잡성을 가지고 있지만, 어쨌든 애플리케이션은 RDBMS를 사용하게 될 것입니다.

매우 인기 있는 응용프로그램이 없는 한 단순성이 더 큰 관심사입니다.

보너스

다른 방법은 세션 데이터를 쿠키(ID뿐만 아니라 모든 쿠키)에 저장하는 것입니다.이는 세션 저장소가 사용자 수에 따라 자동으로 확장된다는 장점이 있지만 단점도 있습니다.사용자가 세션 데이터를 위조하지 않도록 주의해야 합니다.또한 전체가 모든 요청과 함께 전송되므로 각 세션을 작게 유지해야 합니다.

Django 1.1 이후에는 cache_db 세션 백엔드를 사용할 수 있습니다.

이렇게 하면 세션이 캐시에 저장되고(memcached와 함께 사용되는 경우에만) DB에 다시 기록됩니다.캐시에서 빠진 경우 DB에서 읽힙니다.

이것은 세션을 저장하기 위해 memcached를 사용하는 것보다 느리지만 세션에 지속성을 추가합니다.

자세한 내용은 DjangoDocs: 캐시된 세션 사용을 참조하십시오.

세션 백엔드를 선택할 때 고려해야 하는 한 가지 사항은 "세션 데이터를 수정하는 빈도"입니다.각 요청에 대해 세션 데이터를 수정하면 트래픽이 중간 정도인 사이트에서도 데이터를 저장하고 검색하기 위해 데이터베이스를 많이 사용하게 됩니다.

이전 작업에서는 memcache를 세션 백엔드로만 사용했는데 정말 잘 작동했습니다.관리 팀은 두 개의 특수한 memcached 인스턴스를 하나의 바위처럼 안정적으로 만들기 위해 많은 노력을 기울였지만, 초기 설정을 약간 조정한 후에는 세션 백엔드 작업을 중단할 수 없었습니다.

데이터베이스에 사용자가 아닌 DBA가 있는 경우 데이터베이스 지원 세션을 사용할 수 없습니다(프론트 엔드 문제일 뿐).django가 여러 데이터베이스의 데이터를 쉽게 병합하여 세션 및 사용자 메시지(django.contrib의 메시지)와 같은 프런트 엔드 관련 항목을 가질 수 있도록 지원할 때까지.auth도 db에 저장됩니다)는 별도의 db에 저장되므로 이 점에 유의해야 합니다.

언급URL : https://stackoverflow.com/questions/50568/django-sessions

반응형