inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thực hành phát triển của Gemini - Backend E-commerce Legacy và Ứng dụng AI

Review - Cảm nhận Legacy x AI

Image Only Query

Đã giải quyết

6

hahahl

21 câu hỏi đã được viết

1

image only query를 설명해주실때 stable pagination 때문에 조인을 사용하신다고 이해했습니다.

저는 다른방식으로 구현해보았는데 제미니님의 의견이 궁금합니다.

코드를 보면 나중에 image를 fetch 또 하게 되는데 이렇게되면 image only query를 ReviewImageEntity에 reviewId, status 인덱스를 걸고
SELECT review FROM ReviewEntity review WHERE review.targetType = :targetType AND review.targetId = :targetId AND review.status = :status AND EXISTS ( SELECT image.id FROM ReviewImageEntity image WHERE image.reviewId = review.id AND image.status = :status 이렇게 구현하는 방식이 데이터량이 많아진다면 효율적이지 않을까 싶어서 구현해봤습니다.

spring-boot 도메인 dbms/rdbms backend 인공지능(ai)

Câu trả lời 2

0

geminikims

안녕하세요 질문 감사드립니다

데이터량이 많다는 전제라면 EXISTS를 사용하는 것이 효율적일 것 같습니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. hahahl님.

게시물에 관련된 데이터를 쿼리할 때, 특히 이미지와 같은 큰 데이터를 처리하는 방식은 성능에 중요한 영향을 미칠 수 있습니다. 질문해주신 ‘Image Only Query’와 관련하여, 제미니님의 강의를 바탕으로, 또 기존의 데이터베이스 최적화 기법에 대한 이해를 바탕으로 설명드리겠습니다.

Stable Pagination과 Join 활용

Stable Pagination(안정된 페이지네이션)은 대량의 데이터를 효율적으로 페이징하기 위한 접근 방식 중 하나입니다. 이 방식은 페이지를 쉽게 넘길 수 있도록 하는데, 이때 조인을 활용하는 방식이 유리할 수 있습니다. 특히 데이터의 일관성을 유지하면서 복잡한 데이터셋을 조작하는 과정에서 조인은 필수적입니다.

제안한 쿼리 방식의 장점

질문에서 제안하신 방식은 다음과 같습니다:

SELECT review FROM ReviewEntity review
WHERE review.targetType = :targetType
AND review.targetId = :targetId
AND review.status = :status
AND EXISTS (
    SELECT image.id FROM ReviewImageEntity image
    WHERE image.reviewId = review.id AND image.status = :status
)

이 방식의 장점은 다음과 같습니다:
1. 효율성: EXISTS 구문을 통해 ReviewEntity에 대응하는 ReviewImageEntity가 존재하는지를 먼저 검사하여 불필요한 데이터 전송을 줄입니다.
2. 필터링: 이미지가 존재하는 리뷰만을 필터링하므로, 데이터량이 많아졌을 때 효율성을 유지할 수 있습니다.
3. 인덱스 이용: reviewIdstatus에 인덱스를 설정해 효율적으로 데이터를 조회합니다.

데이터가 많을 경우의 이점

대량의 데이터를 처리할 때, 데이터베이스 쿼리 성능은 매우 중요합니다. 이미지와 같은 큰 데이터를 다룰 때 특히나 그렇습니다. 현재의 방법은 대량의 데이터를 효율적으로 걸러내기에 적합하며, 시스템이 확장될 때 유용합니다.

추가적으로, 대량의 데이터 쿼리 시에는 Index 사용과 적절한 쿼리 최적화 기법을 적용하는 것이 중요합니다. 이러한 고민을 가진 유사한 논의 게시물도 참고하시면 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Sequence 관련 질문

1

7

2

Part 4에서 강의 연관 노션 정보들이 워드파일에 없습니다.

0

7

2

클로드 코드 설치가 되지 않습니다...

0

9

1

첨부자료 Part 4 코드 확인 부탁드리겠습니다.

0

6

2

output sytles 모든 프로젝트 적용시 디렉토리가 헷갈립니다 ㅠㅠ

0

11

1

터미널 줄바꿈 세팅

0

12

1

Cursor 설정

0

10

1

setting.json과 setting.local.json

0

16

1

클로드 Pro 요금제에서 Claude Code CLI 사용을 막는다고 들어서 질문드립니다.

1

14

1

카드 뉴스 만들기..

0

16

0

ProductOption을 통한 FindProductOption에 관한 질문

1

39

2

상수에 관련해서 질문있습니다.

1

38

2

null 을 많이 허용하지 않는 이유

1

50

1

JetBrains All Products Pack 3개월 이용권 신청 관련 문의

1

89

2

소스코드 보안

1

236

2

AI 사용 방법에 대하여...

1

118

2

PaymentValidator와 PaymentProcessor에서 주문과 결제를 중복 조회하는 구조에 대한 질문이 있습니다 !

1

62

3

결제 개념 컴포넌트 분리 기준과 네이밍 전략에 대한 질문있습니다 !

1

76

3

AI 를 적용시 브랜치를 다루는 팁 같은게 있을까요?

1

109

2

사용자가 상품을 선택하고 쿠폰을 고를 때 가장 혜택이 큰 쿠폰을 고르는 상황

1

102

2

장바구니 아이템 가격 기준?

1

106

2

인텔리제이에서 legacy 프로젝트 그레이들 인식 불가

1

136

4

예약 변경 시 '과거 정책 기준 재계산' 요구사항에 따른 스냅샷 데이터 구조 설계 고민

1

130

2

선생님

1

159

1