잠재적 인 문제는 성능이며 아직 성능 문제가 없습니다. 솔루션 # 1에서이를 처리하기 위해 선택한 데이터베이스 (인덱싱, 하드웨어, 캐싱 등)에 따라 수행 할 수있는 많은 작업이 있습니다.이 모든 것은 사용자가 현재 읽지 않은 메시지 수를 얻는 빈도에 따라 다릅니다. 이러한 선택의 대부분은 앱 측에서 사용자 지정 코딩이 필요하지 않으므로 코드 변경 또는 거의 변경없이 구현할 수 있습니다. 앱으로 쉽게 확장 할 수 있습니다.
일단 사용자가 연결 / 로그인하면 데이터베이스에서 카운트를 한 번 얻는 것이 그렇게 나쁘지 않습니다. 앱이 이메일과 같은 메시지 목록을 지속적으로 업데이트합니까? 여기에서 읽지 않은 수를 가져 오는 데 데이터베이스를 다시 방문 할 필요가 없으며 새 메시지를 얻으려면 어쨌든 db 여행을해야합니다.
IsRead?를 플래그 지정하기 위해 메시지를 읽을 때마다 db로 이동합니다. 다른 필드를 다시 계산하지 않으면 필드가 충분합니다.
솔루션 # 2 (필드 / 디스크의 카운트 유지)를 사용하면 문제가있을 때 주기적으로이 필드를 재 구축 / 재 계산하는 루틴이 필요합니까? 그리고 항상 문제가 있습니다. 이 모든 것을 거래에 담을 것입니까? 누군가 다른 사람에게 메시지를 보낼 때마다 User 테이블의 잠금으로 인해 수신 사용자의 UnreadCount를 업데이트 할 수 없어서 실패 할 수 있습니까? 아니면이 필드에 대해 별도의 테이블을 작성 하시겠습니까?