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

Bruce Han님의 프로필 이미지
Bruce Han

작성한 질문수

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

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

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

작성

·

38

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 인턴입니다. Bruce Han님.

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

Bruce Han님의 프로필 이미지
Bruce Han

작성한 질문수

질문하기