DB 로직 최소화

박영준·2023년 8월 21일
0

DB

목록 보기
38/41

DB 로직 최소화에 대한 방법은 개발자 면접에서 자주 나오는 질문 중의 하나!


DB 로직 최소화를 위해서는 DB 와 관련된 작업을 최적화하고 효율적으로 처리하는 방법을 적용해야 한다.
이를 통해, DB 성능을 개선하고 유지보수성을 높일 수 있다.

1. 일관된 데이터 모델링

  • DB 테이블과 엔티티를 일관성 있게 설계

  • 중복 데이터를 피하고 정규화를 적용

    • 이를 통해, 데이터 중복을 최소화, 데이터 무결성을 유지

2. 비즈니스 로직 분리

  • DB 에 직접적인 비즈니스 로직을 내장시키는 것을 피하기

    • select * from 처럼, SQL 문을 이용하여 DB 에 영향을 주는 것들을 의미
  • 서비스나 애플리케이션 레이어에서 비즈니스 로직을 처리하도록 분리

    비즈니스 로직
    본인인증, 아이디 중복 확인, 비밀번호 재검사를 거쳐서 회원가입하는 경우를 가정해보자.
    2가지 영역으로 나눌 수 있다.

    아이디 중복 알림창, 회원가입이 성공 창 등... 사용자에게 표시해주는 view 영역
    사용자가 입력한 아이디가 DB에 있는지 조사 등... 코드 상에서 이루어지는 과정은 비즈니스 로직 영역

3. 조회 최적화

  • 쿼리를 작성할 때 필요한 데이터만 조회

  • JOIN 등 복잡한 연산을 최소화

  • 필요한 데이터를 미리 계산하여 캐싱

  • DB 뷰를 활용하여, 미리 계산된 결과를 조회하는 방식을 고려

4. 쿼리 캐싱

  • 자주 사용되는 쿼리 결과를 캐시하여, 반복적인 쿼리 실행을 피하고 성능을 향상시키기.
    • 단, 캐싱 시 데이터 갱신 주기와 데이터의 유효성을 고려해야 한다.

5. 데이터 캐싱

  • 자주 사용되는 데이터를 애플리케이션 내에 캐시
    • 이를 통해, DB 접근을 줄이고 성능을 향상시키기

6. 인덱스 활용

  • 필요한 컬럼에 인덱스를 생성하여 검색 성능을 향상시킬 수 있다.
    • 그러나, 과도한 인덱스 생성은 쓰기 성능에 부정적인 영향을 미칠 수 있으므로 적절한 인덱스를 선택/관리 필요

7. 적절한 인덱스와 제약 조건 활용

  • DB 테이블의 인덱스와 제약 조건을 적절하게 활용하여, 데이터 무결성을 보장하고 검색 성능을 향상

8. 프로시저 및 함수 활용

  • DB 내부에서 로직을 처리하는 스토어드 프로시저나 함수를 사용
    • 이를 통해, 애플리케이션과 DB 간의 통신을 최소화하고 성능을 개선

9. 트랜잭션 사용 최소화

  • 필요하지 않은 범위에서 트랜잭션을 사용을 피하고, 트랜잭션 범위를 최소화
    (트랜잭션은 데이터의 일관성과 무결성을 유지하기 위해 필요하긴 하나)

10. 배치 처리

  • 대량의 데이터 처리 시, 적절한 커밋 주기와 배치 크기 설정으로 성능을 최적화

    • 배치 처리 : 데이터를 축적하다가, 일정 주기마다 일괄적으로 처리하는 방식

    Batch VS Scheduler


참고: DB 로직 최소화
참고: 비즈니스 로직(Business Logic)이란?
[참고: [Spring] Batch와 Scheduler의 차이 Spring Scheduler

profile
개발자로 거듭나기!

0개의 댓글