실시간 채팅 시스템에서 읽음/안읽음 상태를 정확히 추적하는 것은 사용자 경험의 핵심입니다.
따라서 정확성과 성능 모두 만족하는 설계가 필수적입니다.
1. 단순 메시지 카운트 방식의 한계
-- PostgreSQL 방식 (성능 문제)
SELECT COUNT(*) FROM messages
WHERE room_id = ? AND created_at > ?;
문제점:
2. 각 메시지마다 읽음 여부 조회의 비효율
메시지를 조회할 때 각 메시지마다 개별적으로 읽음 여부를 판단하는 방식:
메시지 1개 조회 → 읽음 여부 확인
메시지 2개 조회 → 읽음 여부 확인
...
메시지 100개 조회 → 읽음 여부 확인 (100번 반복)
문제점: