2011-09-21 7 views
6

링크 공유 사이트에 사람들이 링크를 공유하고 댓글을 올릴 수 있다고 해봅시다. 링크가있는 사용자는 댓글이 게시 될 때 알림을 받아야합니다. 카테고리를 따르는 사용자는 링크가 해당 카테고리에서 공유 될 때 알림을 받아야합니다. 이러한 알림을 저장하는 가장 좋은 방법은 무엇입니까?사용자 알림을 저장하는 가장 좋은 방법은 무엇입니까?

개별적으로 저장할 수 있지만 가져 오는 것은 간단 할 수 있지만 링크가 게시 될 때마다 해당 카테고리에 이어 10,000 명의 사람들에게 알림을 추가해야합니다.

매번 알림을 계산할 수도 있습니다.이 경우 사용자가 로그인하고 마지막으로 표시 한 이후로 새 댓글 수가 계산됩니다. 그러나 오래된 알림을 저장할 수 없습니다.

내 옵션에는 어떤 것이 있습니까?

comments 
- id 
- user 
- link 
- content 

links 
- id 
- user 
- content 

subscriptions 
- id 
- user 
- link 

새로운 댓글이 링크를 만든 때마다, 그 링크에 가입 한 모든 사용자가 수신 것이라는 "알림"이 있어야합니다


좋아, 여기 내 데이터베이스 스키마의 다음 로그인시.

+0

나는 이해하려고 노력하면서 요구 사항을 다시 읽고있다. 지금까지 가지고있는 DB 스키마를 게시 할 수 있습니까? – ThinkCode

+0

@ThinkCode, 게시 됨. –

+0

각 테이블의 타임 스탬프는 어떻습니까? 사용자가 가입 할 때마다 타임 스탬프를 기록하는 방법은 어떻습니까? 사용자에게 알림이 전송 될 때마다 이전 알림을 원하면 이전 타임 스탬프가 로그 테이블로 이동됩니까? – ThinkCode

답변

4

알림은 일반적으로 읽히는 대상이 많으므로 현재 읽지 않은 알림 목록을 매우 빠르게 가져 와서 시도하거나 계산하지 않아도되게하고 싶을 수 있습니다. 또한 로그인 시간을 비교하려고 시도해도 좋은 사용자 환경을 만들 수는 없습니다. 사용자가 처음에이를 인식하지 못하거나 페이지를 새로 고치거나 세부 정보를 보려면 해당 페이지를 클릭하면 모든 알림이 사라집니다.

그 점을 염두에두고 user_notification 테이블에 읽음/읽지 않음 열이있는 것이 좋습니다. 프로그램 규모가 문제가 될 수있는 곳을 아는 것은 좋은 일이지만, 진행중인 (수백만 건의 레코드)까지는되지 않습니다. 속도를 높이기 위해 사용자 열의 색인을 생성 할 수 있으며 필요한 경우 사용자별로 분할하여 드라이브/서버의 규모를 조정할 수 있습니다.

알림을 개별 테이블에 포함 시키거나 users_notifications 테이블의 일부로 사용할지 여부를 결정하는 것은 최종 사용자에게 달려 있습니다.이 알림은 최적화 할 다른 영역입니다.

1

마지막으로 알림을 본 시간을 추적하면됩니다. 그러면 그 시간 이후에 생성 된 모든 게시물은 알림을 볼 다음 번에 알림에 포함됩니다.

관련 문제