본문 바로가기

전체 글

(157)
[Tomcat] Coyote부터 Catlina까지 동작 흐름과 원리 전체 아키텍처: Coyote와 Catlina 2개의 레이어Tomcat의 요청 처리는 크게 2개의 레이어, 네트워크/프로콜 처리(Coyote)와 서블릿 컨테이너(Catalina)로 나뉜다.요청을 처리하기 위해서는 네트워크단의 처리와 애플리케이션단의 처리가 필요하다. 네트워크 처리는 특정 프로토콜(HTTP/1.1, HTTP2.0)에 종속된다. 그러나 서버 개발자에게 특정 프로토콜에 상관없이 비지니스 로직만 집중할수 있도록 공통으로 처리할수있도록 제공해야한다. 따라서 특정 프로토콜에 종속되는 저수준의 네트워크 처리와 개발자에게 제공하는 고수준의 서블릿을 두 계층으로 나눈것이다.Coyote에서 Catailna까지 주요 작업 흐름실제 다음 플로우로 요청이 처리된다. coyote.http11.Http11Proce..
조인(JOIN)의 성능 저하 원인 왜 조인(JOIN)이 성능 저하를 유발할까?조인이 느려질 수 있는 핵심 이유는 여러 비용이 단계마다 누적되기 때문이다. 회원 1명의 주문 상품을 조회하는 단순한 요청처럼 보여도, 실제 DB 내부에서는 여러 테이블을 오가며 반복 탐색, 인덱스 조회, 디스크 I/O, 중간 결과 처리 등이 함께 발생한다.1. 중간 결과 집합의 팽창: 카디널리티 증가가장 기본적인 조인 방식은 중첩 루프 구조로 이해할 수 있다. 앞 테이블에서 한 행을 읽고, 그 행과 매칭되는 데이터를 뒤 테이블에서 찾는 작업을 반복하는 방식이다. 자바의 이중 for문과 비슷하다.// 개념적으로 조인은 이런 구조로 이해할 수 있다.for (Member m : members) { // 앞 테이블: 10만 건 for (Order..
물리적 모델링 물리적 모델링(Physical Modeling)물리적 모델링은 논리적 모델을 특정 DBMS의 특성과 성능 요구사항에 맞게 실제 저장 구조로 변환하는 과정이다. 즉 논리적으로 설계한 테이블, 컬럼, 관계를 MySQL 같은 실제 DBMS에서 효율적으로 동작하도록 구체화하는 단계다.1. 물리적 모델링 개요물리적 모델링이란?물리적 모델링은 논리적 모델을 특정 DBMS의 특성과 성능을 고려해 물리적 스키마로 변환하는 과정이다.논리적 모델링이 데이터의 정합성, 안정성, 관계 구조에 초점을 둔다면, 물리적 모델링은 실제 운영 환경에서의 성능, 저장 공간 효율, 유지보수 편의성을 고려한다.비유하자면 논리적 모델링은 방 크기와 창문 위치가 그려진 집 설계도이고, 물리적 모델링은 벽 재료, 전기 배선, 단열재, 창호 같은..
논리적 모델링 (정규화) 데이터베이스 정규화(Normalization) 정리정규화는 함수 종속성을 분석해서 잘못된 종속 관계를 찾고, 그 기준에 따라 테이블을 분리하는 과정이다. 목적은 데이터 중복과 이상 현상을 줄이고, 데이터의 일관성과 무결성을 높이는 것이다. 실무에서는 보통 3NF에서 BCNF 수준까지 이해하고 적용하면 충분하다.1. 정규화정규화란정규화는 데이터의 중복을 최소화하고, 일관성과 무결성을 보장하기 위해 테이블 구조를 정리하는 과정이다. 쉽게 말하면 데이터를 아무렇게나 한 테이블에 몰아넣는 것이 아니라, 의미 있는 단위로 나누어 관리하기 쉽게 만드는 작업이다.정규화라는 용어는 관계형 모델의 창시자인 에드거 F. 커드(Edgar F. Codd)가 제안했다. 수학의 정규형(Normal Form)에서 온 개념으로, 예..
ORM(JPA)으로 RDB 관점을 흐리지 않고 개발하는 법 개요ORM은 좋은 도구지만, 정해진 용도 안에서 써야 한다. DB는 관계형 모델을 기반으로 동작하므로, 객체지향적인 사고를 그대로 DB에 밀어 넣으면 문제가 생긴다.이 글은 "ORM을 쓰되 관계형 DB의 관점을 잃지 말자"는 생각을 JPA와 Spring 환경에 맞춰 정리한 내용이다.ORM의 장점과 적절한 사용 범위1. ORM(JPA)이란 무엇이고 무엇이 좋은가?ORM(Object Relational Mapping)은 객체와 관계형 데이터베이스를 연결해 주는 기술이다. 예를 들어 DB의 member 테이블과 코드의 Member 클래스를 매핑하면, 개발자는 매번 SELECT * FROM member 같은 SQL을 직접 작성하지 않고도 객체를 다루듯 데이터를 저장하고 조회할 수 있다.@Entity@Table(..
신선식품 자사몰 ERD 설계서 1. 문서 개요개요신선식품 자사몰 + 백오피스 데이터 모델을 정의하고, 각 엔티티와 관계가 어떤 요구사항에서 비롯되었는지 추적 가능하도록 설계 근거를 기재한다. 개발팀이 이 문서만으로 스키마 의도를 이해할수있도록 한다.범위회원/권한, 상품/재고, 장바구니, 주문/결제, 클레임(취소·반품·교환), 쿠폰/포인트, 리뷰/Q&A, 알림신선식품 특화: 유통기한, 보관온도, FEFO(First Expired First Out)도메인 특성신선식품 자사몰은 단일 판매자 자사몰 위에 신선식품 특유의 제약(유통기한, 보관온도, 선입선출 출고, 폐기 관리)이 얹힌 구조다. 일반 커머스와 가장 크게 다른 지점은 "같은 상품이라도 입고 시기마다 유통기한이 다르다"는 점이며, 이것이 재고 모델 설계 전체를 좌우한다.도메인 구성 ..
논리적 모델링 (식별 관계 vs 비식별 관계) 개요현대 데이터베이스 설계의 사실상 표준: 대리 키-PK, 자연 키-UNIQUE, 관계-비식별관계 유형식별 관계비식별 관계(권장)자식 PK부모 PK 포함 복합키독립 대리 키(단일)1:NPK에 의미 있으나 복합키 관리 복잡단순성, 유연성, ORM 친화1:1UNIQUE 없이 1:1 강제, 유연성 낮음FK에 UNIQUE로 1:1 보장, 결합도 낮음M:N복합키가 중복 규칙 강제, 확장성 심각히 낮음대리 키 + FK조합 UNIQUE = 정합성+유연성관계 변경PK 수정 필요 → 무결성 붕괴 위험FK 값/제약만 변경계층 확장PK 전파로 비대화단일 FK 하나만 추가ORM@IdClass/@EmbeddedId 등 번거로움단일 @Id로 자연스러움1. 식별과 비식별 관계 개념지금까지 외래 키(FK)로 테이블 간 관계를 맺어왔..
논리적 모델링 (다대다 관계) 개요3대 제약(PK 유일, FK 단일참조, 컬럼 원자성) 때문에 두 테이블만으론 표현 불가연결 테이블로 M:N을 1:N + N:1로 분해해서 양쪽 PK를 FK로 갖고 JOIN으로 양방향 조회실무의 M:N은 대부분 관계 속성(수량, 당시 가격 등)을 가져서, 연결 테이블은 order_item처럼 의미 있는 연관 엔티티가 되고, 개념적 모델링 단계에서 이미 별도 엔티티로 식별되는 경우가 많다.1. 두 테이블만으로는 M:N을 표현할 수 없다관계형 DB의 기본제약 다대다(M:N) 관계를 표현할수 없다.관계형 DB의 기본제약관계형 DB의 3개의 기본제약에 의해 테이블의 행은 다음 특징을 가진다.PK 유일FK는 단일 행만 참조컬럼은 원자적(1NF)두 테이블간 다대다 관계 시도예) 주문과 상품의 다대다 관계: 주문1..