인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Bruce Han님의 프로필 이미지

작성한 질문수

[7일완성]생각하는 데이터베이스모델링

41_동일한 구매 제품 수량 업데이트

계산 로직을 Java 단이 아닌 쿼리문에서 하신 이유가 궁금합니다.

작성

·

98

0

select sum(cp.quantity * p.price) as totalAmount
from customer_product cp
inner join product p
        on cp.product_number = p.product_number
where cp.customer_id = #{customer_id}

장바구니에 들어있는 상품의 개수와 가격을 곱한 금액의 총합을 구하는 로직을 17:50 쯤에 보여주셨습니다.

DB에 Connection하는 비용을 고려하면 계산 로직은 Java에서 처리하는 게 더 빠르지 않을까 생각했습니다. 실무에서 많이 사용한다던가, 아니면 더 좋은 방법이라고 생각하셨던 이유가 있었을까요?

답변 2

1

박매일님의 프로필 이미지
박매일
지식공유자

데이터베이스 중심 수업이다보니 쿼리 위주로 설명이 되어있습니다. 물론 개발단에서 자바로직으로 처리 할 수도 있겠습니다. 코드상 복잡한 로직 이다면 쿼리로 기술해서 쉽게 결과를 가져올 수도 있는점도 고려해서 작업하시면 좋겠습니다^^

Bruce Han님의 프로필 이미지
Bruce Han
질문자

넵 답변 감사합니다 🙂

0

인프런 AI 인턴님의 프로필 이미지

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

올리신 질문은 데이터베이스 레벨에서의 계산 작업과 애플리케이션 레벨에서의 계산 작업 간의 차이점에 관한 것입니다.

우선, SQL 쿼리를 사용하여 직접 데이터베이스에서 계산을 수행하는 이유는 다음과 같은 몇 가지 이점 때문입니다:

  1. 효율성: 데이터베이스는 대량의 데이터를 처리하는 데 최적화되어 있으며, SQL 쿼리는 데이터 집계 및 계산을 수행하는 데 매우 효과적입니다. 데이터베이스가 직접 계산을 수행하도록 하면 대량의 데이터를 애플리케이션으로 전송하는 대신, 처리된 결과만 전송하여 네트워크 부담을 줄일 수 있습니다.

  2. 단순화: 응용 프로그램 코드에서 계산 로직을 제거함으로써 코드가 더 단순하고 유지보수가 용이해집니다. 이는 애플리케이션의 복잡도를 줄일 수 있습니다.

  3. 트랜잭션 관리: 데이터베이스 수준에서 계산을 처리하면 트랜잭션 내에서 데이터 일관성을 쉽게 유지할 수 있습니다.

물론, 모든 경우에서 데이터베이스 수준의 계산이 더 나은 것은 아닙니다. 데이터의 크기와 응용 프로그램의 요구 사항에 따라 최적의 방법이 달라질 수 있습니다. 실제로, 복잡한 로직이거나 데이터베이스에 과부하가 걸릴 가능성이 있다면 애플리케이션 단에서 처리하는 것이 더 적절할 수도 있습니다.

관련된 정보를 확인하고자 한다면, 스칼라식으로 데이터베이스 및 애플리케이션 성능 최적화하기 게시글을 참고하시기 바랍니다. 이 글은 MongoDB와 같은 데이터베이스의 활용 방법에 대한 유용한 정보를 제공합니다.

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

Bruce Han님의 프로필 이미지
Bruce Han
질문자

AI의 답변 중 추가로 궁금한 게 있네요.

  1. DB 단과 애플리케이션 단 사이 대량의 데이터가 들낙날락하는 중 네트워크 부담에 어떻게 영향을 미치는지 궁금합니다. 계산하는 것 자체는 애플리케이션 단 or DB 단인데, 사이의 네트워크는 계산을 안 하니 상관없고 두 단의 일처리에 위임했으니 상관없는 것 아닐까요?

  2. 애플리케이션 단에서도 계산하는 로직은 쿼리문의 계산 로직과 크게 다르지 않을 것으로 보이는데요. 복잡도가 있다면 애플리케이션은 따로 함수로 뺄 수 있다는 장점이 있을텐데, 그래도 쿼리로 해결하는 이점이 있을까요? 궁금합니다.

  3. 데이터 일관성에 대한 추가 설명이 듣고 싶습니다. 트랜잭션 내에서의 일관성을 지킨다고 하면 어느 정도 일리있는 말인 것 같긴 한데, 정확한 근거를 알고 싶습니다.

 

답변은 감사하지만, 질문의 주 요지는 굳이 DB Connection을 또 해서 계산할 필요는 없지 않을까입니다.