배경
- 비즈니스 로직을 DB가 아닌 앱에서 처리해야 되는 주 이유는 애플리케이션 리소스가 더 확장하기 쉽기 때문이다.
- 하지만 DB에서 반환되는 결과의 양을 통제하려면 DB에 일부 로직을 넣을 수 밖에 없다.
- DB에서 처리할 로직과 앱에서 처리할 로직의 기준을 정해본다.
방법
추출과 필터링 분리하기
- 데이터 필터링에 필요한 일부 필드만 가져오고, 앱에서 필터링 로직을 수행한다.
- 필터링이 완료되면, 필터링이 완료된 ID 목록으로 후속 쿼리를 수행한다.
select id,field1,field2
from my_table
select *
from my_table
where id in (3,5,123,392,...)
조인을 애플리케이션 계층으로 옮기기
- 복잡한 조인은 데이터베이스에서 하지 말고, 최대한 애플리케이션 계층으로 옮긴다.
- 이렇게하면 확장성을 늘리면서 데이커베이스에 대한 부하를 대폭 줄일 수 있다.