[Flutter] Pagination 이론

Hee Tae Shin·2023년 1월 9일
1

Flutter

목록 보기
1/16
post-thumbnail

Pagination 이란?

페이지네이션은 많은 데이터를 부분적으로 나눠서 불러오는 기술이다!

Pagination 특징

  • 쿼리에 해당되는 모든 데이터를 한번에 불러오지 않고 부분적으로 쪼개서 불러온다.
  • 수억개의 상품이 데이터베이스에 저장되어있는데 사용자가 상품 검색화면 들어갈 때마다 모든 상품 정보서버에서 클라이언트로 전송할 필요가 없다.
  • 클라우드 시스템은 데이터 전송에 이 든다!
  • 돈이 안들더라도 수억개의 데이터를 한번에 보내면 분명 메모리가 터질것이다.
  • 메모리가 터지지 않더라도 데이터 전송에 상당히 오랜시간이 걸릴 것이다.

페이지 기반의 Pagination

  • 페이지 기반으로 데이터를 잘라서 요청하는 Pagination
  • 요청을 보낼때 원하는 데이터 개수몇번째 페이지를 가져올지 명시
  • 페이지 숫자를 누르면 다음 페이지로 넘어가는 형태 UI 에서 많이 사용
  • Pagination 도중에 데이터베이스에서 데이터가 추가되거나 삭제될 경우 저장되는 데이터가 누락되거나 중복될 수 있다.
  • Pagination 알고리즘매우 간단하다.

페이지 기반의 Pagination 예제

1페이지2페이지3페이지4페이지
🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟
  • 1 페이지 요청
    - 4개 데이터 요청 (🅐🅑🅒🅓)

  • 2 페이지 요청
    - 4개 스킵 (🅐🅑🅒🅓)
    - 4개 요청 (🅔🅕🅖🅗)

  • 3 페이지 요청
    - 8개 스킵 (🅐🅑🅒🅓|🅔🅕🅖🅗|)
    - 4개 요청 (🅘🅙🅚🅛)

장점 : 데이터적으로 효율적이다!

예제의 문제점

가정 1 )

  • 1페이지의 마지막에 Ⓒ 데이터가 추가된다면?

상황 1 )

  • 1 페이지 처음 불러올때, 🅐🅑🅒🅓가 보이는 상황이고,
  • 2 페이지를 불러올때, 갑자기 데이터Ⓒ를 추가했다면?
    🅓🅔🅕🅖가 불려지게 되면서 🅓 가 중복으로 불려지게된다.

기존 현재 1 페이지 )

1페이지2페이지3페이지4페이지
🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟

갑자기 데이터 추가 된 후, 2 페이지 )

1페이지2페이지3페이지4페이지
🅐🅑🅒Ⓒ🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞

가정 2)

  • 1 페이지의 🅓 가 삭제되고, 2 페이지를 불러온다면?

상황 2)

  • 1페이지 불러온 상황
1페이지2페이지3페이지4페이지
🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟
  • 갑자기 🅓 가 삭제되고 2페이지를 불러온다면?
    🅔 는 누락되고 🅕🅖🅗🅘 가 보이게 된다.
1페이지2페이지3페이지4페이지
🅐🅑🅒🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟

커서 기반 Pagination

  • 무한스크롤 할 경우 자주 사용
  • 가장 최근에 가져온 데이터 기준으로 다음 데이터를 가져오는 Pagination
  • 요청을 보낼때 마지막 데이터의 기준값(ID 등 Unique 값)몇개의 데이터를 가져올지 명시
  • 스크롤 형태의 리스트에서 자주 사용 (ex : 앱의 ListView)
  • 최근 데이터의 기준값을 기반으로 쿼리가 작성되기 때문에 데이터가 누락되거나 중복될 확률이 적음.

예제

1페이지2페이지3페이지4페이지
🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟
  • 1 페이지 요청시 id > 0 보다 큰 기준으로 불러오고
  • 2 페이지 요청시 id > 4 보다 큰 기준으로 불러온다. (마지막 데이터를 파악하고 그 id 이후 부터 요청한다.)

가정 1)

  • 만약, 2 페이지를 불러오는데, 1 페이지에 Ⓒ 데이터가 추가됐다면?
  • 1 페이지의 Ⓒ 는 누락되는데, 이 누락은 신규데이터라 어쩔 수 없다.
1페이지2페이지3페이지4페이지
🅐🅑🅒Ⓒ🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟

가정 2)

  • 만약 2 페이지에서 1페이지를 넘어가기 전 🅓가 삭제된다면?
    1 페이지에서 🅐🅑🅒🅓 를 보여줬지만, 🅓가 삭제되면, 2 페이지가 보일때 마지막 데이터 기준으로 다음 부터 보여지게된다.
1페이지2페이지3페이지4페이지
🅐🅑🅒🅔🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟
profile
안녕하세요

0개의 댓글