Pagination?
Pagination이란, 많은 데이터를 부분적으로 나눠서 불러오는 기술
Pagination 특징
쿼리에 해당되는 모든 데이터를 한번에 다 불러오지 않고 부분적으로 쪼개서 불러온다.
=> ex) 한번에 20개씩
쿠팡같은 앱의 경우 수억 개의 상품이 데이터베이스에 저장되어 있는데, 사용자가 상품 검색 화면을 들어갈 때마다 모든 상품정보를 서버에서 클라이언트로 전송할 필요없다.
현대 클라우드 시스템은 데이터 전송에 돈이 든다
돈이 안들더라도 수억 개의 데이터를 한번에 보내면 당연히 메모리에 무리가 간다.
메모리가 터지지 않더라도 데이터 전송에 매우 오랜 시간이 걸리게 된다.
Pagination 이론
한 번에 수 억개의 데이터를 가져오는 것이 아니라, 예를들어 20개를 요청하고 스크롤을 하면서 20개를 넘어가면 또 20개를 요청하는 식.
이렇듯 쪼개서 데이터를 가져온 후 메모리에서 기억을 하는것 것.
Page Based Pagination - 대표적인 변형
페이지 기준으로 데이터를 잘라서 요청하는 Pagination
요청을 보낼 때, 원하는 데이터 갯수와 몇 번째 페이지를 가져올지 명시
페이지 숫자를 누르면 다음 페이지로 넘어가는 형태의 UI에서 많이 사용
Pagination 도중 데이터베이스에서 데이터가 추가되거나 삭제될 경우, 저장되는 데이터가 누락되거나 중복될 수 있음
Pagination 알고리즘이 매우 간단
※ 앱에서 거의 쓰지 않는 변형
※ 페이지 기반으로 이전 데이터 몇 개를 스킵하는 방식으로 데이터베이스에서 쿼리를 날리는 방식
Cusor Based Pagination - 대표적인 변형
가장 최근에 가져온 데이터를 기준으로 다음 데이터를 가져오는 Pagination
요청을 보낼 때 마지막 데이터의 기준값(ID 등 Unique 값, 식별할 수 있는 값)과 몇 개의 데이터를 가져올지 명시
스크롤 형태의 리스트에서 자주 사용
=> ex) 앱의 ListView
최근 데이터의 기준값을 기반으로 쿼리가 작성되기 때문에 데이터가 누락되거나 중복될 확률이 적음
※ 마지막 데이터를 기준으로 다음 데이터를 가져오라고 요청하는 방식
정리가 잘 된 글이네요. 도움이 됐습니다.