IT/프로그래밍

Offset Pagination과 Cursor Pagination

Collin 2024. 3. 27. 08:00
반응형

Offset Pagination:

  • 동작 방식: 페이지 번호와 페이지당 아이템 수를 기반으로 쿼리에서 OFFSET 및 LIMIT 절을 사용하여 데이터를 검색합니다. 예를 들어, 페이지 크기가 10이고 두 번째 페이지를 가져온다고 가정하면, 쿼리는 OFFSET 10을 사용하여 첫 번째 10개의 아이템을 건너뛰고 다음 10개의 아이템을 반환합니다.
  • 장점:
    1. 간단한 구현: 대부분의 데이터베이스에서 OFFSET 및 LIMIT과 함께 제공되므로 구현이 비교적 쉽습니다.
    2. 페이지 번호를 통한 직관적인 페이지 네비게이션: 사용자가 페이지 번호를 통해 특정 페이지로 이동할 수 있습니다.
  • 단점:
    1. 성능 문제: OFFSET은 매번 쿼리할 때마다 전체 결과 집합을 스캔하고 건너뛰어야 하므로 큰 데이터셋에 대해 비효율적일 수 있습니다.
    2. 데이터 이동 문제: 중간에 데이터가 추가되거나 삭제될 경우 OFFSET이 변경될 수 있으며, 이로 인해 일관성이 없을 수 있습니다.

Cursor Pagination:

  • 동작 방식: 이전 페이지의 마지막 아이템을 기준으로 해당 아이템 이후의 결과를 검색합니다. 데이터베이스나 API는 이전 페이지의 마지막 아이템에 대한 정보를 포함한 커서를 반환하고, 다음 페이지를 요청할 때 이 커서를 사용하여 다음 페이지를 가져옵니다.
  • 장점:
    1. 성능: 큰 데이터셋에서도 일관된 성능을 제공합니다. OFFSET과 달리 데이터를 건너뛰지 않고 이전 페이지의 마지막 아이템을 기준으로 새로운 결과를 가져옵니다.
    2. 일관성: 데이터 이동에 영향을 받지 않으며, 사용자가 페이지를 이동하더라도 일관된 결과를 유지합니다.
  • 단점:
    1. 구현 복잡성: OFFSET보다 구현이 복잡할 수 있습니다. 각 페이지의 마지막 아이템을 추적하고 다음 페이지를 검색하기 위한 커서를 관리해야 합니다.
    2. 직관성 부족: 페이지 번호 대신 커서를 사용하므로 사용자가 특정 페이지로 직접 이동하는 것은 더 어려울 수 있습니다.

요약:

  • Offset Pagination은 구현이 간단하고 페이지 번호를 사용한 직관적인 네비게이션을 제공하지만, 대량의 데이터에 대해 비효율적일 수 있고 데이터 이동에 따른 문제가 있습니다.
  • Cursor Pagination은 성능과 일관성 면에서 Offset Pagination보다 우수하지만, 구현이 복잡하고 사용자에게 직관적인 네비게이션을 제공하기 어려울 수 있습니다.
반응형

'IT > 프로그래밍' 카테고리의 다른 글

File up & download HTML  (0) 2020.08.07
JAVA] A와 B 날짜 차이 계산하기  (0) 2020.07.09
ANGULAR build Options [ 빌드 캐시 삭제 ]  (0) 2020.05.14
2020-03-17 [ readable-stream ] 오류  (0) 2020.03.17
eclipse git reflog  (0) 2019.11.14