걸어서 개발 속으로
서버에서 정렬 vs DB에서 정렬
puy0
2024. 5. 15. 16:06
서버에서 데이터셋을 정렬하는 방법과
데이터베이스에 데이터를 요청할때 정렬하여 반환 하도록 하는 방법
이 두가지 방법중 더 효율적인 방법이라하는 글은 많다
상황 마다 다르지만 대부분 데이터베이스에서 정렬된 데이터를 요청하는것이
적은 리소스를 사용하여 처리할수 있기때문에 후자가 적절하다고 한다
그 이유로는
데이터베이스는 데이터 처리에 효율적으로 설계되어(인덱스 같은거) 있다
잘만들어진 최적화된 기능을 사용하여 코드개선의 책임을 일부 덜어낼수 있다
정렬되면서 정제된 데이터를 반환받을경우 네트워크 사용량을 줄일수 있다
하지만 이번 정렬의 경우 인덱싱이 걸려있지 않으며
사이트의 페이징처리 등이 되어 있지않아 온전한 리스트 전부가 사용되어야 하기때문에
정렬된다 한들 데이터의양이 줄어들지 않는다
서버의 서비스 레이어 에서 반환 된 엔티티 객체를 dto로 변환 하는과정에
엔티티리스트를 순회하며 dto에 추가하는 로직이 있었다
단순히 리스트의 마지막부터 0까지 순회하며 추가하는방식으로 구현했는데
JPA메서드에 조건을 추가하여 데이터베이스의 리소스를 소모하지도 않았으며
기존의 컬랙션 API의 사용을 없에 서버의 리소스를 줄이며 원하는 기능을 구현 할수 있었다
+ 가장 좋은 상황이지만 정제된 데이터의 양이 줄어들경우 jpa에 조건을 거는방법이 적절할것으로 예상된다
예를 들어 최근 저장된 n개의 엔티티를 조회 할때,
타이틀에 xx가 포함된 엔티티중 n개를 조회 할때 등등