Java에서 대용량 데이터란 무엇인가?
1) 한 번에 메모리에 올리기 어렵다.
2) 처리/응답 속도가 저하된다.
3) I/O 병목 발생
4) GC 부하 발생
5) DB 부하 발생
* 성능에 영향을 줄 만큼 크거나 빈번한 데이터를 의미함.
그러므로, "절대 크기"보다는 "시스템 리소스 대비 상대적"인 성격을 가진다.
Java에서 대용량 데이터 처리 방안은 무엇인가?
1. 한 번에 처리하기 -> 작게 나눠서 천천히 처리하기 (1년치 주문 데이터 정산)
2. List -> Stream (장기간 저장된 로그 분석)
3. 즉시응답 -> 비동기 예약 (10만 건 엑셀 다운로드)
4. 즉시저장 -> 모아서 저장 (비동기 데이터 수집)
5. DB만 사용 -> DB와 캐시와 계층구조 활용 (상품 상세정보 조회)
6. 싱글 쓰래드 -> 멀티 쓰래드/병렬 처리(10만 명에게 알림 발송)
대용량 데이터 처리에서 한 가지 방법만 사용해서 모든 문제를 해결할 수 없다.
연속적으로 기술들을 엮어서 사용하는 경우가 빈번하기 때문에 이 글을 연재물로서 표현하게 되었다.
연재물을 통해 다양한 방법론에 대한 이해를 높이고자 한다.
'CS 정리' 카테고리의 다른 글
Java 대용량 데이터 처리 (2) - Stream 메모리 효율 높이기 (0) | 2025.04.20 |
---|---|
Java 대용량 데이터 처리(1) - Cursor 방식 (0) | 2025.04.20 |
STW, Stop the world 제어하기 (2) | 2025.04.13 |
메세지 큐, Message Queue (0) | 2025.04.13 |
메모리 단편화, Fragmentation (0) | 2025.04.12 |