2008-11-18 4 views
7

쇼핑 카트 항목과 같은 정보에 대한 일반적인 합의가 세션에 저장하는 것임을 알고 있습니다. 그러나 다른 사용자가 변경할 수있는 사용자에게 속한 객체는 어떻습니까? 예를 들어, 이베이 (eBay)와 같은 사이트를 예로 들어 보겠습니다. 현재 입찰 금액이 포함 된 세션의 사용자 "항목"을 저장하고 다른 사용자가 들어 와서 해당 항목에 대한 입찰을하면 세션의 항목뿐 아니라 데이터베이스의 항목도 모두 업데이트해야합니다. 그렇지 않니?세션 중 장바구니 저장

다른 사용자가 수행하는 작업이 세션 값에 영향을 주거나 데이터베이스에 모든 것을 저장하고 매번 검색 할 때마다 세션에 저장하고 새로 고침하는 유일한 옵션입니다 (말하자면 입찰가를 모든 페이지의 측면 패널에 표시하십시오).

답변

6

나는 데이터베이스에 모두 저장하고 매번를 검색합니다. 데이터 캐싱의 변동성에 따라 몇 초가 걸릴 수 있습니다. 가장 큰 문제는 두 가지를 일관성있게 유지하는 것입니다.

난 당신이 데이터를 매번 검색 할 생각으로이 같은 비용이 아니라고 생각합니다. 키를 기반으로 데이터베이스를 찾는 경우 데이터베이스가 매우 효율적입니다. 성능 문제가로드 (예 : 부하 테스트)에 나타날 때까지 단순함 (DB에 저장하고 검색) 측면에서 오류가 있습니다.

소수의 경우에만 작업자 프로세스/서버가 두 개 이상있는 경우를 제외하고 응용 프로그램 캐시를 사용할 수 있고 DB와 캐시가 동기화 상태를 유지할 수 있습니다.

4

개인적으로 데이터베이스에 저장합니다. 첫째, 데이터가 훨씬 안전하고 웹 팜이 필요한 경우 쉽게 공유 할 수 있기 때문입니다. 또한 모든 페이지에 데이터가있을 필요는 없습니다. 사용자가 장바구니로 이동할 때. 데이터베이스에 저장하는 또 다른 장점은 나중에 사람들이 장바구니에 추가하는 물건을 분석 할 수는 있지만 실제로 구입하지 않는 것입니다.