Project/Vinyler

이전 포스팅에 이어 서버에서 커서 기반 페이징 기법을 통하여 클라이언트 쪽에서 무한 스크롤 방식으로 데이터를 요청할 수 있도록 처리하는 과정을 정리해보고자 한다. Pageable일반적으로 페이징 처리를 할 경우, JPA에서 제공하는 Pageable이나 Slice 를 쓴다.클라이언트가 page와 size를 전달해야 한다. 일반적으로 page = 0부터 시작한다. Page 쿼리는 다음과 같이 실행된다.SELECT COUNT(*) FROM review WHERE vinyl_id = ?;SELECT * FROM review WHERE vinyl_id = ? LIMIT ? OFFSET ?; 전체 데이터의 개수를 알려주기 위해 COUNT 쿼리를 실행한다.총 데이터 개수와 총 페이지 개수를 반환해준다. 이를 통해 ..
서론 현재 Vinyler 프로젝트에서는 사용자가 찜한 음반의 리스트를 조회 할 경우, 모든 데이터들을 한 번에 조회해서 가져오는 방식을 사용하고 있다. 그러나 이러한 방식은 찜한 음반들이 많아질수록 메모리 사용량이 많아짐으로 인해 서버 리소스가 낭비되고, 이는 JOIN 등의 쿼리를 사용하는 경우 쿼리 처리의 부하가 증가하게 된다. 예를 들어, 수백~수만 개의 찜한 음반들을 DTO로 매핑하고 직렬화하면, 메모리 사용량이 크게 증가하게 된다. 이로 인해 조회 작업의 시간이 늘어나게 되어 응답이 지연되는 상황이 발생할 수 있다. 현재는 다음과 같이 JOIN FETCH를 사용하여 사용자가 찜한 데이터들을 조회해오고 있다.그런데 페이징 없이 모든 Like를 조회해오면 JOIN FETCH는 일단 모든 조인을 수행..
이전에 iOS 개발을 하면서 사이드 프로젝트를 하나 만든게 있다.가까운 곳에 레코드 샵이 있으면 LP판을 구경하러 종종 가고는 하는데장르별로 무수히 많은 레코드 판들 중에서 뭐가 뭔지 하나도 모르는 경우가 많다.청음할 수 있게 옆에 턴테이블을 구비해둔 곳도 많지만 누군가 쓰고 있을 때에는 기다리기도 애매하다.그래서 답답한 마음에 내가 직접 쓰려고 만들었다. 카메라로 LP판의 바코드를 스캔해서 해당 음반의 정보를 확인하고, 타이틀 곡의 링크를 통해 어떤 음악인지 빠르게 파악할 수 있다.  최근 들어 Spring 공부를 하며 해당 애플리케이션의 서버를 만들어 앱과 연동하면 괜찮겠다 싶은 생각이 들었다. 일단은 작은 규모로 시작하겠지만 개인화 추천 서비스도 만들고 싶은 마음이다.  소개 https://gith..
빵판 AKA 브레드보드
'Project/Vinyler' 카테고리의 글 목록