Skip to main content Link Search Menu Expand Document (external link)

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는 특정 페이지로 건너뛸 수 없다. 그러므로 무한 스크롤 웹 페이지에 사용하기 좋다.