데이터 설계에 대한 고민

2023. 7. 28. 02:51·이슈

DTO와 엔티티를 분리하자

OrderRequestDto에서 엔티티의 의존성을 없애고 Long 타입으로 필드값을 설정했다.  

 

1. 엔티티는 데이터베이스와 밀접한 관련이 있다. 반면, DTO는 주로 클라이언트와의 데이터 교환을 위한 용도로 사용되기 때문에 의존성을 없애고 엔티티는 순수한 데이터 객체로 사용하는 것이 좋다.

 

2. 보안을 위해 엔티티가 외부로 노출되는것을 막아야한다. 그래서 DTO로 필요한 데이터만을 노출시킴으로써 더욱 안전하게 데이터를 관리할 수 있다.

 

3. 엔티티를 사용하다 엔티티가 변경될 경우 다 뜯어고쳐야한다.

그래서 의존관계를 없애면 DTO를 변경할 필요가 없고 정해진 스펙 그대로 받을 수 있다. 

 


외래키를 없애자

지금까지 DB설계시 외래키로 엮어주는 것이 필수고 좋은 설계라고 생각했는데 멘토링을 받으며 한마디 들었다. 이 문제에 대해 좀 더 공부해보라는 제안을 받았다.

 

문제점 

외래키를 사용하면 데이터베이스 간의 관계를 유지하기 위해 추가적인 제약 조건과 인덱스를 관리해야 한다. 이로 인해 관리가 복잡해진다.

특히, 데이터의 insert,update,delete 작업이 자주 발생하는 경우 성능 저하,번거로움이 발생한다.

 

생각해보니 데이터 수정,테스트코드 작성시 번거롭긴 했다. 외래키 설정이 되어있다보니 수정,삭제 시 순서를 지켜야 했다. 

회사마다 다르겠지만 현업에서 DBA분들이 외래키 설정하지 말라고? 말하기도 한다. 외래키로 인한 장점보다 단점이 더 큰 경우가 있기 때문이다.

 

외래키 사용시 무결성 지킬수있는것은 장점이다. 예를 들면 주문테이블에 회원아이디를 외래키로 가지고 있으면 존재하지않는 회원의 주문오류를 막을 수 있다.

근데 이것도 주문서비스 로직 실행시 회원아이디 유효성검사 코드 작성하기 때문에 해결되는 문제..같기도 하고 

아무튼 외래키를 없애면 확실히 작업 할 때 편할거같긴하다. 장단점이 존재하기 때문에 고민해볼 문제인거 같다.

'이슈' 카테고리의 다른 글

RDB vs Elasticsearch 검색 성능 비교  (0) 2025.01.10
Kafka, Redis를 활용한 이벤트 중복 처리 방지  (2) 2024.12.19
[Jenkins] 용량 부족 - EBS 볼륨 연결  (0) 2024.11.19
AWS EC2 배포 작업  (0) 2023.09.07
RedissonLock, JMeter 부하테스트  (0) 2023.06.29
'이슈' 카테고리의 다른 글
  • Kafka, Redis를 활용한 이벤트 중복 처리 방지
  • [Jenkins] 용량 부족 - EBS 볼륨 연결
  • AWS EC2 배포 작업
  • RedissonLock, JMeter 부하테스트
유당불내증이 있는 개발자
유당불내증이 있는 개발자
  • 유당불내증이 있는 개발자
    보초개발
    유당불내증이 있는 개발자
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
      • Java
      • 이슈
      • 책
        • 객체지향의 사실과 오해
        • 자바의 신
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해
        • 토비의 스프링
        • 모던 자바 인 액션
        • 이펙티브 자바
        • Real MySQL 8.0
        • 자바 성능 튜닝이야기
        • 만들면서 배우는 클린 아키텍처
      • 인프런 강의
        • Practical Testing: 실용적인 테스트..
        • Jenkins를 이용한 CICD Pipeline ..
        • 비전공자도 이해할 수 있는 쿠버네티스 입문,실전
        • 대기업 근무하며 경험한 Redis를 야무지게 사용..
      • TIL
  • 인기 글

  • 태그

    AWS
    db
    explain
    MySQL
    EC2
    redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
유당불내증이 있는 개발자
데이터 설계에 대한 고민
상단으로

티스토리툴바