0

내 응용 프로그램의 각 사용자가 특정 페이지를 마지막으로 방문한 날짜를 추적하고 싶습니다. 이를 수행하는 한 가지 방법은 내 데이터베이스의 사용자 테이블에 열을 추가하고 사용자가 페이지를 방문 할 때마다 업데이트하는 것입니다. 다른 방법은이 데이터를 Memcached에 각 사용자별로 저장하는 것입니다.언제 Memcached와 데이터베이스에 열을 추가해야합니까?

나는 내가 Memcached가 솔루션을 선호했지만,하지 않는 이유 합법적 인 것 같다 것을 깨달았다 :

  • 사용자 테이블이 이미 열이 많이있다, 나는에 추가하지 않으 그건 불필요하게.
  • 그것이 마이그레이션을 생성하여 DB에 테이블을 추가하는 것보다 Memcached가 사용하기 쉽게, 등

그래서 여기에 적절한 선택인가? 그리고 왜?

답변

1

Memcached는 제한 수명주기와 함께 임의의 데이터를 저장하는 데 사용할 수 있지만 데이터베이스 대체로 사용해서는 안됩니다.

이 특정 비즈니스 논리에 대해 격리 된 데이터베이스 테이블을 만드는 것이 좋습니다. 이 기능은 많은 쓰기 기능을 제공하므로 사용자 테이블과 같은 다른 핵심 기능을 가진 다른 테이블을 잠그지 않는 것이 중요합니다. 당연히이 기능은 데이터베이스 I/O에 영향을 미칩니다. Memcached는 배치 프로세스에서 처리 할 데이터 대기열을 저장하는 데 이상적입니다. Memcached's protocol을 따르는 Memcached가 큐

아주 기본적인 개요, 응용 프로그램에 쉽게 영향을받는 사용자의 대기열 목록을 유지하고 설정/특정 사용자와 관련된 메타 데이터를 교체 할 수 있습니다.

/* Application handling Memcached Queue */ 

[ User is in Queue ? ]________ no 
|        | 
| yes      [ Append user to queue list ] 
|        | 
[ Replace user data ]   [ Set user date ] 

A는 매일 또는 매시간, 프로세스는 데이터베이스에 사용자의 메타 데이터를 큐 목록을 소화하고 쓸 수 있어야합니다.

관련 문제