Skip to content

server-side JOIN vs client-side JOIN #187

Answered by Hank-Choi
minkyu97 asked this question in Q&A
Discussion options

You must be logged in to vote

일반적으로는 DB에서 처리하는 게 성능상 좋은 건 맞습니다. 저도 대부분 서버에서 조인해서 사용합니다.
다만 클라이언트 상에서 조인하는 경우가 몇가지 있을 수 있는데요

  1. 코드 작성의 편의 + 모듈화 가능
    지금 세미나에선 Spring data jpa 쓰는 걸로 아는데요
    JPA 등의 ORM 에서 중시하는 건 개발자가 SQL 단을 크게 신경 안써도 쓸 수 있도록 되어있습니다. 이로 인해 생산성이 높아질 수 있습니다.
    Mybatis등에서는 데이터 접근시마다 대응하는 sql을 작성해야하는 것이 문제였습니다. 이로 인해 모든 DB 접근마다 다른 메소드를 사용하게 되고 코드의 모듈화가 매우 힘들어지는 결과가 생겼습니다.
    이를 해결하기 위해 최적화를 포기하고 ORM을 쓰기 시작했고요 (저도 TB 단위의 데이터가 저장되어 있는 게 아니라면 DB 최적화는 크게 필요없다고 생각합니다. )
    다만 최적화까지 신경쓰면 ORM이랑 섞어쓸 때 너무 깊게 알아야해서 최적화까지 신경쓰신다면 다른거 쓰는 것 추천합니다ㅋㅋ

  2. RDB 리소스 문제
    위와는 정반대의 이유로 엄청난 크기의 데이터가 저장된 DB에서는 JOIN 이 부담스러운 경우도 존재합니다.
    RDB는 scale out이 안되지만 (vitess등 어느정도의 scale out을 지원하는 RDB도 존재하긴 합니다.) 서버는 scale out이 가능해서 DB CPU 사용량이 높은 경우에는 JOIN을 안하고 가…

Replies: 1 comment 4 replies

Comment options

You must be logged in to vote
4 replies
@Hank-Choi
Comment options

@PFCJeong
Comment options

@PFCJeong
Comment options

@minkyu97
Comment options

minkyu97 Nov 9, 2023
Maintainer Author

Answer selected by PFCJeong
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
Django Django 관련 내용 engineering 기타 라벨링하기 애매하거나, 개발 관련 전반적인 내용 Spring Spring 관련 내용
3 participants