인프런 커뮤니티 질문&답변
통계 데이터 수정 질문
작성
·
32
0
안녕하세요, 좋은 강의 만들어주셔서 정말 감사합니다!!
이번에 신규 기능을 추가하면서 통계 데이터도 필요한 상황인데 통계 데이터에 사용되는 원본 데이터가 수정되는 케이스는 어떻게 설계하는게 좋을지 조언을 구하고자 질문드립니다.
통계 데이터는 유저가 조회하고, 데이터 조회 기간은 최근 7일/최근 한달/과거 한달(사용자 조정 가능)로 조정이 가능하고, 한 화면에 4가지 유형의 통계 데이터를 제공해야 해서 이를 위해 일별 통계 테이블을 사용하려고 했는데요.
그런데 원본 데이터가 언제든 수정되거나 추가될 수 있는 상황입니다.
그래서 수정한 사용자와 수정 일자를 따로 모아 배치를 돌리는 방향이 생각났는데 이렇게 설계해본 경험이 없어,
우선은 실시간 증분 업데이트를 진행하고 데이터 정확성이 필요해지는 상황이 필요하다면 그때 위와 같은 배치를 돌리는게 나을지 또는 다른 방향이 있을지 궁금하여 질문드립니다.
정산 데이터는 아니기 때문에 멱등성이 깨질 수 있는 상황은 감안하고, 기획 요구사항인 실시간성을 반영하는게 좋을지도 고민이 되어 질문드립니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. learnlearn 님,
귀하의 질문과 관련하여 데이터 수정 및 통계 처리에 대한 설계 고민을 말씀해 주셨군요. 통계 데이터 처리에서 원본 데이터의 수정 가능성은 설계를 복잡하게 만들 수 있습니다. 아래에 몇 가지 방향성을 제안드리며, 이를 참고하시어 적절한 설계를 고민해 보실 수 있습니다.
1. 실시간 증분 업데이트 고려
- 장점: 실시간으로 통계 데이터를 갱신할 수 있어 사용자에게 더 빠르고 최신의 정보를 제공할 수 있습니다.
- 단점: 시스템에 부하가 될 수 있으며, 데이터 동기화 문제 또는 성능 저하의 위험이 있습니다.
2. 배치 프로세스 활용
- 방식: 수정된 데이터는 별도로 기록해 둔 후, 일정 주기(예: 매일 새벽)에 배치 작업을 통해 통계 데이터를 갱신합니다.
- 장점: 실시간성을 포기하는 대신, 시스템 부하를 줄이고 데이터 처리의 안전성을 확보할 수 있습니다.
- 단점: 사용자는 일정 시간 동안 갱신되지 않은 데이터를 보게 될 수 있습니다.
3. 쓰기 시점 캐싱 및 일관성 제고
- 사용자/관리자에게 데이터 수정의 후속 절차와 시점을 명확히 알려 캐싱 전략과 함께 활용합니다.
- 예시: Redis와 같은 캐시를 사용하여 복수의 데이터 수정 시점을 관리하고 이를 기준으로 통계 데이터를 업데이트합니다.
참고할 수 있는 질문 및 답변
- “간단한 통계 쿼리가 가능한가요?” - JPA와 QueryDSL을 통한 복잡한 통계 쿼리 처리 방법에 대한 논의입니다.
- “통계성 데이터 조회” - 네이티브 쿼리를 이용한 통계성 데이터 처리 방법에 대해 논의합니다.
귀하의 경우 실시간성이 필요한 요구사항이라면 실시간 증분 업데이트와 배치 시스템의 조합을 통해 데이터 정확성과 시스템 성능을 모두 잡으려는 전략을 권장드립니다. 실시간성의 정도와 데이터 수정 빈도에 따라 적절히 선택하시기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




