새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
프로젝트 ERD 정의서
목표 D-day : 90 일
오늘은 ERD 정의서를 작성하겠습니다.
프로젝트 ERD
프로젝트 ERD를 작성하기 전 데이터 모델링부터 하겠습니다.
데이터 모델링
데이터 모델링 과정은 데이터베이스 생명주기 중 요구 사항 수집 및 분석부터 설계까지 이르는 과정을 말합니다.
- 요구사항 수집 및 분석
사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하는 단계입니다.
샌드박스의 경우 구매자, 판매자등 사용자의 범위와 서비스의 수준을 정하는 단계입니다.
개념적 모델링
개체와 개체 간의 관계를 표현하는 것
- 유일한 식별자에 의해 식별이 가능하다.
- 꾸준한 관리를 필요로 하는 정보이다.
- 두 개 이상 영속적으로 존재한다.
- 업무 프로세스에 이용된다.
- 반드시 자신의 특징을 나태내는 속성을 포함한다.
- 다른 개체와 최소 한 개 이상의 관계를 갖고 있다.
현재 프로세스에서 개체로 구분할 수 있는걸 확인해보면
- 구매자
- 판매자
- 발행쿠폰
- 쿠폰
- 주문 정보
- 물품
- 리뷰
개체 구분 이유
쿠폰과 발행 쿠폰을 분리한 이유
단일 테이블의 쿼리 성능과 테이블 분리로 얻는 유연성의 트레이드 오프를 고려했습니다.
단일 테이블
장점 :
- 발행된 쿠폰과 쿠폰의 정보가 같은 레코드에 있습니다. 데이터 조회시 테이블 조인으로 인한 성능 저하가 발생하지 않습니다.
- 데이터 구조가 간단합니다.
단점:
- 쿠폰에 필요한 필드를 추가하거나, 발행된 쿠폰에 대한 정보를 추가할 경우 확장의 한계가 있을 수 있습니다.
- 원본 쿠폰에 대한 정보를 클라이언트가 가지고 있거나 서버에서 가지고 있어야합니다.
- 데이터가 증가함에 따라 단일 테이블의 성능은 급격히 저하될 수 있습니다. 인덱스가 커지면서 쿼리 시간이 길어질 수 있습니다.
- 복잡한 필터링이 필요한 경우 단일 테이블에서의 필터링이 복잡하고 효율적인 인덱스 사용이 어려울 수 있습니다.
테이블 분리
장점:
- 발행된 쿠폰과 원본 쿠폰 데이터를 독립적으로 관리할 수 있어 데이터 무결성을 높게 유지할 수 있습니다.
- 쿠폰 정보에 대한 데이터 중복이 발생하지 않습니다.
- 스키마 변경의 유연성이 단일 테이블보다 유연합니다.
- 발행된 쿠폰과 원본 쿠폰 데이터를 조회하기 위해 조인이 발생하지만 각 테이블에 대한 최적화된 인덱스를 사용할 수 있습니다.
단점 :
- 테이블의 복잡성이 늘어나 쿼리가 복잡해집니다.
- 단일 테이블과 다르게 조인이 필요하여 성능 저하 가능성이 있습니다.
- 운영 복잡성이 증가합니다. 여러 테이블도 무결성으로 분리되어 관리되다보면 운영 복잡성이 발생할 수 있습니다.
- 데이터 동기화 로직이 필요할 수 있습니다. 원본 데이터와 발행 테이블간의 동기화 로직이 추가로 발생됩니다.
결론
테이블을 분리함으로써 쿼리의 복잡성이 증가하고, 조인으로 인한 성능 저하가 발생할 수 있습니다.
하지만, 이러한 단점은 최적화된 인덱스와 적절한 쿼리 튜닝을 통해 충분히 상쇄될 수 있습니다.
또한, 데이터 동기화 로직이 필요할 수 있 이는 애플리케이션 레벨에서 충분히 관리할 수 있는 부분입니다.
결론적으로, 데이터의 양이 증가하고, 복잡한 쿼리가 필요한 상황에서는 테이블 분리가 더 나은 성능과 유연성을 제공합니다. 따라서, RDBMS의 한계를 극복하고, 대규모 데이터베이스 환경에서도 안정적인 성능을 유지하기 위해 테이블 분리를 선택하는 것이 더 적합합니다.
물품과 재고를 분리하지 않는 이유
쿠폰과 발행 쿠폰 내역과 동일한 장단점을 가질 수 있지만, 물품과 재고의 경우에는 몇 가지 다른 고려사항이 있습니다.
물품과 재고를 단일 테이블로 관리하는 방식의 장점은 데이터 구조의 단순성에있습니다.
쿠폰의 경우와는 다르게 물품과 재고의 데이터는 상대적으로 정적인 특성을 가지며, 데이터 양도 한정적일 수 있습니다.
이러한 이유로 단일 테이블의 장점을 더 잘 살릴 수 있다고 생각됩니다.
댓글남기기