파비의 매일매일 공부기록

DRF pagination에 대해 본문

Trouble Shooting/From workplace

DRF pagination에 대해

fabichoi 2021. 7. 28. 23:30

현업을 하다 보면 pagination에 대한 고려를 해야 되는 경우가 종종 생긴다.

 

특히 데이터가 많은 경우에는

일반적인 pagination(offset pagination)을 쓰게 되면 DB에 부하를 많이 줄 수 있기 때문이다.

 

그래서 이럴 때는 cursor pagination을 쓰는 방향으로 선회할 수 있는데

문제는 cursor pagination을 사용할 경우 특정 필드 조건으로 정렬이 불가능하다.

(+ 전체 페이지 개수 구하기도 불가능)

(+ 이전/다음 페이지만 이동 가능. 인덱스가 없으므로 특정 페이지로 이동 불가)

 

물론 custom으로 cursor pagination을 구성하면 정렬이 가능할 수도 있다.

그런데 굳이..?

 

cursor pagination을 이용했을 때 상기에 특정 필드 조건으로

정렬 불가, 전체 페이지 개수 구하기 불가, 이전/다음 페이지만 이동이 가능한 이유는

cursor pagination이 PK 기준으로 구간을 잘라서 조회하기 때문이다.

 

여러 논의 끝에 결국엔 offset pagination을 사용하기로 결정했고 다행히 filter 조건 및 index가 있는 상태라

cursor pagination을 사용하는 것에 비해 큰 성능 저하는 없을 거라고 전달받았다.

 

사실 오늘 겪어보기 전까지는 cursor pagination을 왜 쓰는지 몰랐기도 했고

그냥 페이지 네이션의 다른 방법이겠거니.. 했다.

 

이번 기회에 offset과 cursor 페이지 네이션에 대해서 확실히 배운 것 같다.

혹시 나중에 헷갈리면 다시 봐 봐야지

 

(참고 블로그 : https://americanopeople.tistory.com/355)

반응형
Comments