inflearn logo
강의

Course

Instructor

Learning Large-Scale System Design by Building Directly with Spring Boot - Bulletin Board

Post List API - Infinite Scroll Implementation

무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문

Resolved

69

jaeryang

4 asked

1

안녕하세요, 무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점을 설명한 부분에 질문이 있습니다.

 

페이지 방식을 무한 스크롤 방식에 적용 시 문제점으로 아래 2가지를 제시하셨는데요,

1) 페이지가 추가된 경우, 데이터 중복 조회 문제

2) 페이지가 삭제된 경우, 데이터 누락 문제

 

궁금한 점은, 이러한 문제는 무한 스크롤에서 사용했을 때 뿐 아니라, 페이지 번호 방식을 사용할 때도 마찬가지로 문제가 있는 것 아닌가 싶다는 것입니다.

페이지 번호 방식 자체의 한계라고 생각하는데, 페이지 번호 방식에서는 발생하지 않는 문제인가요?

java mysql spring-boot kafka redis

Answer 2

1

kuke

재량님, 안녕하세요!

사용성과 실제 쿼리 사이에서 혼동이 있으셨을 것 같습니다.

무한 스크롤은 사용성 기준이고, offset/limit 방식의 쿼리에서 위 문제가 발생한다는 의미입니다.

무한 스크롤 사용성이든, 페이지 번호 사용성이든, offset/limit 방식의 쿼리에서는 위 문제가 여전히 발생합니다.

무한 스크롤 사용성에서는 위 문제가 사용자에게 혼란을 야기할 수 있기 때문에 새로운 쿼리 방식을 설명하게 되는 것입니다!

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
최재량님, 질문 주셔서 감사합니다.

페이지 번호 방식은 말씀하신 대로 페이지가 추가되거나 삭제될 때 데이터의 중복 조회나 누락 문제가 발생할 수 있습니다. 이는 무한 스크롤뿐만 아니라 페이지 번호 방식에서도 발생할 수 있는 한계입니다.

특히, 데이터베이스에서 페이지 번호 방식으로 데이터를 가져올 때, 데이터가 실시간으로 추가되거나 삭제되는 상황에서 데이터 정합성을 유지하기 어려울 수 있습니다. 예를 들어, 10개의 아이템을 한 페이지로 설정하고, 페이지 1을 조회하는 동안 새로운 데이터가 추가되면 다음 페이지로 넘어갈 때 일부 데이터가 중복될 수 있습니다. 반대로 데이터가 삭제되면 일부 데이터가 누락될 수 있습니다.

이러한 문제를 해결하기 위해 Spring Data JPA에서는 오프셋 기반 스크롤링이 아닌 키셋 기반 스크롤링을 사용하는 방법도 있습니다. 키셋 기반 스크롤링은 데이터베이스 인덱스를 활용하여 오프셋 기반의 단점을 보완할 수 있습니다. 좀 더 자세한 정보는 Spring Data JPA 문서에서 확인하실 수 있습니다.

추가적인 궁금증이 있으시면 언제든지 질문해 주세요!

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

38

2

게시글 테스트 데이터 삽입

0

43

2

정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?

0

95

2

좋아요 기능 정합성 보장 방법

0

90

2

좋아요 동시성처리 최적의 선택?

1

115

2

프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해

0

85

2

안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.

0

54

1

조회수 조회 로직 질문

1

64

2

비로그인 유저도 어뷰징 방지 정책

1

63

2

CommentServiceTest의 테스트 로직 질문

0

50

2

path 쿼리 관련 질문드립니다!

0

55

2

antigravity 에디터를 쓰신다면 종료해주세요

1

122

0

프로젝트 구조

0

83

2

article_like_count api test

0

70

2

이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.

0

101

2

[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제

0

88

2

findByPath에서 articleId로도 검색을 해야 할 것 같아요.

0

87

3

jpa ddl-auto none을 하는 이유와 join 방법

0

92

2

팩터리 메소드와 response 객체 사용 이유가 궁금합니다!

0

85

2

커서 기반 페이지네이션 과 무한 스크롤링

0

97

2

게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기

0

95

2

멀티 모듈이 아닌 MSA 환경에서 common

0

146

2

2Depth 강의 도중 궁금한 점 있어요!!

0

73

2

샤딩에 대해서 궁금점있습니다.

0

112

2