세션 스토리지 및 데이터베이스 스토리지가 독점적이라고 가정합니다. 그렇지 않습니다. 그러나 그들이 있다고 가정하여 시작합시다.
세션 스토리지의 장점은 세 가지입니다.
- 데이터베이스에 데이터를 명시 적으로 삽입 할 필요가 없습니다. 세션 변수를 설정하기 만하면됩니다. 기능적으로 간단하고 위험이 적습니다.
- 컨테이너 / 프레임 워크를 통해 사용자 방문 및 장바구니 수명주기를 관리 할 필요가 없습니다.
- 일반적으로 오래된 유휴 세션의 자동 정리가 수행됩니다.
세션 저장의 단점 :
- 복제를 조사하지 않는 한 세션 선호도
- 디스크에 대한 세션 상태의 복제 또는 수동 지속성을 조사하지 않으면 장애 조치가 발생하지 않아 복잡해질 수 있습니다.
- 모든 세션은 메모리에 저장해야합니다. 복제를 사용하면 증폭됩니다.
데이터베이스 스토리지의 장점 :
- 세션 선호도 나 상태 복제에 대해 걱정할 필요가 없습니다. 모든 요청을 라운드 로빈 할 수 있습니다.
- 응용 프로그램의 메모리 오버 헤드가 줄어 듭니다.
- 주문이 완료되면 어쨌든 데이터베이스의 모든 것이 종료되므로 데이터가 이미 있으므로 완료가 쉬워 질 수 있습니다.
데이터베이스 스토리지의 단점 :
- 버려진 장바구니-일부 익명 사용자가 장바구니에 상품을 추가하고 사라졌습니다. 어떤 종류의 만료 프로세스가 없으면 해당 데이터는 영구적으로 유지됩니다.
- 사용자를 추적하고 주어진 요청에 대해 기존 또는 새로운 브라우징 세션을 나타내는 지 알아낼 수있는 방법을 찾아야합니다. (예, 쿠키를 사용하는 경우 쉽지만 두 명의 사용자가 같은 ID로 끝나지 않도록하려면 어떻게해야합니까?)
- 더 많은 코드
사용중인 플랫폼에 대해서는 언급하지 않았습니다. 요청 / 응답주기 수명 동안 세션 데이터가 메모리에만 존재하는 데이터베이스 기반 세션을 사용하여 데이터베이스에서로드하고 데이터베이스에 다시 저장하는 접근법을 찾고 싶습니다. 이것은 과거에 나에게 도움이되었습니다.
데이터베이스 기반 세션의 장점 :
- 서버 선호도가 필요하지 않습니다.
- 앱 서버 메모리에서 쉬움
- 유휴 / 폐기 된 세션 데이터가 정리됩니다.
- 사용자 첫 방문, 반복 방문, 세션 종료의 수명주기가 모두 파악되었습니다.
- 쉬운 코딩
데이터베이스 기반 세션의 단점 :
- 구성-컨테이너는 PHP, Java EE (Tomcat, Jetty, JBoss 등), node.js + express.js 또는이를 지원하지 않는 컨테이너인지 여부를 조사하고 올바른 구성을 제공해야합니다.
- 요청 당 2 개의 데이터베이스 작업을 추가하므로이를로드 테스트해야 할 수도 있습니다.
누군가가 앞서 언급 한 세 번째 가능성이 있습니다. 쿠키 나 html 로컬 스토리지에 모든 것을 포함 시켜서 세션 사용을 완전히 건너 뛰고 클라이언트 측 스토리지를 사용할 수 있습니다.
나는 그것의 장단점을 당신에게 연습으로 남겨 둘 것이지만, 나는 당신에게 html5 저장을 위해 브라우저 호환성이 신중하게 검토해야 할 것이라는 힌트를 줄 것이다.
나는 당신을 위해 사실을 설명했습니다. 바라건대 이것이 상황에 맞는 올바른 결정을 내리는 데 도움이되기를 바랍니다.