23.05.12
- pagination
- 수많은 데이터를 한 번에 보여줄 수 없기 때문에 나누어서 보여주어야 한다.
- 저장된 데이터 중에서 일부만 보여주는 방법을 pagination이라고 한다.
- 데이터가 리스트로 나열되는 곳에 pagination이 필요하다.
- 라이브 게임 목록
- 팔로잉 유저 목록
- 차단 유저 목록
- 유저 검색 결과
- 채널 메세지
- 채널 목록
- 업적 목록
- 게임 히스토리
- pagination 방식은 두가지가 있다.
- offset: 데이터를 skip하고 그 부분에서부터 일부분을 take한다.
- cursor: 특정 cursor id에서 시작하여 일부분을 take한다.
- offset은 모든 페이지로 즉시 이동할 수 있다. 그러나 cursor는 특정 페이지로 이동할 수 없다.
- 만약에 200,000번째 데이터에서 pagination을 한다면
- offset은 200,000개의 레코드를 탐색하여 이후의 데이터를 가져온다.
- cursor는 200,000번째 레코드에서 시작하여 이후의 데이터를 가져온다.
- 그러므로 cursor는 항상 원하는 데이터 개수만 읽기 때문에 성능상 이점이 존재한다.
- 또한, 데이터의 추가와 삭제가 자주 일어나는 경우에 offset은 데이터의 중복과 누락이 발생할 수 있다.
- 그래서 cursor 방식을 사용해야 한다.
- 그러나 중복될 수 있는 값을 기준으로 데이터가 정렬된 경우에는 문제가 발생된다.
- 중복된 값을 가진 데이터가 생략될 수 있기 때문이다.
-
그래서 정렬 기준에 고유한 id값을 추가해야 한다.
- cursor는 특정 페이지로 건너뛸 수 없다. 그러므로 무한 스크롤 웹 페이지에 사용하기 좋다.