FlutterㅣPagination 이론 - 기본

휘Bin·2023년 7월 23일
0
post-thumbnail

Pagination?

Pagination이란, 많은 데이터를 부분적으로 나눠서 불러오는 기술

Pagination 특징

  • 쿼리에 해당되는 모든 데이터를 한번에 다 불러오지 않고 부분적으로 쪼개서 불러온다.
    => ex) 한번에 20개씩

  • 쿠팡같은 앱의 경우 수억 개의 상품이 데이터베이스에 저장되어 있는데, 사용자가 상품 검색 화면을 들어갈 때마다 모든 상품정보를 서버에서 클라이언트로 전송할 필요없다.

  • 현대 클라우드 시스템은 데이터 전송에 돈이 든다

  • 돈이 안들더라도 수억 개의 데이터를 한번에 보내면 당연히 메모리에 무리가 간다.

  • 메모리가 터지지 않더라도 데이터 전송에 매우 오랜 시간이 걸리게 된다.

Pagination 이론

한 번에 수 억개의 데이터를 가져오는 것이 아니라, 예를들어 20개를 요청하고 스크롤을 하면서 20개를 넘어가면 또 20개를 요청하는 식.

이렇듯 쪼개서 데이터를 가져온 후 메모리에서 기억을 하는것 것.

  • 여러 변형이 있지만 위의 기본을 기억하면 다른 것도 어렵지 이해할 수 있음!

Page Based Pagination - 대표적인 변형

  • 페이지 기준으로 데이터를 잘라서 요청하는 Pagination

  • 요청을 보낼 때, 원하는 데이터 갯수와 몇 번째 페이지를 가져올지 명시

  • 페이지 숫자를 누르면 다음 페이지로 넘어가는 형태의 UI에서 많이 사용

  • Pagination 도중 데이터베이스에서 데이터가 추가되거나 삭제될 경우, 저장되는 데이터가 누락되거나 중복될 수 있음

  • Pagination 알고리즘이 매우 간단

※ 앱에서 거의 쓰지 않는 변형

페이지 기반으로 이전 데이터 몇 개를 스킵하는 방식으로 데이터베이스에서 쿼리를 날리는 방식

Cusor Based Pagination - 대표적인 변형

  • 가장 최근에 가져온 데이터를 기준으로 다음 데이터를 가져오는 Pagination

  • 요청을 보낼 때 마지막 데이터의 기준값(ID 등 Unique 값, 식별할 수 있는 값)과 몇 개의 데이터를 가져올지 명시

  • 스크롤 형태의 리스트에서 자주 사용
    => ex) 앱의 ListView

  • 최근 데이터의 기준값을 기반으로 쿼리가 작성되기 때문에 데이터가 누락되거나 중복될 확률이 적음

마지막 데이터를 기준으로 다음 데이터를 가져오라고 요청하는 방식

profile
One-step, one-step, steadily growing developer

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기

관련 채용 정보