2011-01-12 3 views
0

각 사용자 활동을 추적하는 활동 모델이 있습니다. 이 모델에는 id, user_id, media_id, type, created_at, updated_at 열이 있습니다.활동 모델/테이블에 대한 설계 질문

저는 특히 노래보기에 관심이 있습니다. 예를 들어. 사용자가 노래를 클릭하면 노래가 재생됩니다. 동시에 이런 일이 발생하면 내 앱은 사용자가 노래 페이지를 볼 때마다이 작업을 만듭니다.

이것은 사용자 활동에 대한 일종의 기록을 유지할 수 있음을 의미합니다. 응용 프로그램/사이트가 많은 인기를 얻는 경우 즉 향후

Foobar listened to Song A 2 hours ago 
Foobar listened to Song A yesterday 
Foobar listened to Song B 2 days ago 
etc 

, 어떤면에서이 데이터베이스 성능에 영향을 미칠 것인가? 나는이 테이블이 노래를 보는 각 사용자를 위해 매우 빨리 자신을 채울 것을 염려합니다. 동영상 당 약 100k ++의 조회수를 가진 youtube의 동영상을 보는 것을 도울 수 없습니다.

걱정해야합니까? 아니면 인덱스를 추가하고 db가 메모리 및 디스크 공간 측면에서 확장 될 수 있는지 확인하는 것입니다.

답변

1

필자는 결코 필요없는 데이터를 저장하기 때문에 활동 모델이 너무 많다고 생각합니다.

 table 
------------------------ 
user_id  int 
media_id  int 
listened_at TIMESTAMP 

당신이 정말보기 당 많은 안타를 얻을 경우이 media_id

의 맥락에서해야하기 때문에 나는 종류를 생략하고있어, 간단한 데이터베이스이 처리 할 수 ​​없습니다. 심지어 devent 데이터베이스 클러스터 에 문제가있을 수 있습니다. 그러나 나는 초기 단계에서 이러한 것들에 대해 실제로 걱정하지 않을 것입니다.

+0

여기에 입력란이있는 이유는 무엇입니까? 왜냐하면 유형은보기, 좋아요, 댓글 등일 수 있기 때문입니다. 활동 모델의 목적은 모든 유형의 사용자 상호 작용을 저장하는 것입니다. 활동 모델이 너무 많이한다고 생각한다면 무엇을 제안합니까? :-) –