일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 파비최
- 매일
- Writing
- 만화도
- 링피트
- Daily Challenge
- 사이드
- 뭐든
- 10분
- 영어원서읽기
- 괜찮음
- realclass
- English
- 월간
- 30분
- 미드시청
- leetcode
- 쓰릴오브파이트
- 읽기
- 프로젝트
- 영어공부
- 화상영어
- 개발자
- 스탭퍼
- 잡생각
- 리얼 클래스
- FIT XR
- Problem Solving
- 3줄정리
- 운동
- Today
- Total
파비의 매일매일 공부기록
DRF pagination에 대해 본문
현업을 하다 보면 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)
'Trouble Shooting > From workplace' 카테고리의 다른 글
Django에서 API 속도가 느릴 때 (0) | 2023.10.29 |
---|---|
HTML/CSS - position, display 속성에 대하여 (0) | 2021.10.06 |
parent_lookup_% 관련 삽질 후기 (0) | 2021.07.15 |
iBatis - DB Connection Hang이 자꾸 발생해요(defaultStatementTimeout 설정) (2) | 2021.01.13 |
Oracle - 데이터가 너무 많아서 조회속도가 느려요. (0) | 2021.01.05 |