물리 데이터 모델 설계
물리 데이터 모델링 개념
논리모델을 적용하려는 기술에 맞도록 상세화하는 과정
물리 데이터 모델링 변환 절차
1. 개체를 테이블로 변환
- 일반적으로 테이블과 개체 명칭을 동일하게 하는 것을 권고
- 개체는 한글명을 사용
- 테이블은 소스 코드의 가독성을 위해 영문명을 사용
2. 속성을 컬럼으로 변환
- 개발자와 사용자 간 의사소통을 위해 표준화된 약어를 사용하도록 권고
- SQL 예약어 사용은 피해야 함
- SQL 문장 가독성을 높이기 위해 컬럼 명칭은 되도록 짧은 것을 권고
- 컬럼명으로 복합 단어를 사용할 때 미리 정의된 표준에 의해 명명해야 함
3. UID를 기본키로 변환
- 개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언
- Not Null, Unique 등의 제약 조건을 추가로 정의
- 관계에 의한 외래키가 기본키에 포함될 수 있음
4. 관계를 외래키로 변환
- 외래키명은 기본키 이름을 그대로 사용하나 다른 의미를 가질 때 변경 가능
- 순환 관계에서 자신의 기본키는 외래키로 정의
5. 컬럼 유형과 길이 정의
- CHAR : 최대 2,000바이트의 고정길이 문자열 저장 가능
- VARCHAR2 : 최대 4,000바이트의 가변 길이 문자열 저장 가능
- NUMBER : 38 자릿수의 숫자 저장 가능
- DATE : 날짜 값을 저장
- BLOB, CLOB : 바이너리(Binary), 텍스트 데이터 최대 4GB까지 저장
6. 반정규화 수행
- 중복 테이블 추가 : 집계 테이블 추가, 특정 부분만 포함하는 테이블 추가
- 테이블 조합 : 1:1 관계 테이블 조합, 1:M 관계 테이블 조합, 슈퍼 타입/서브 타입 테이블 조합
- 테이블 분할 : 수직 분할/수평 분할
- 테이블 제거 : 테이블 재정의, 접근하지 않는 테이블 제거
- 컬럼 중복화 : 조인 성능 향상을 위한 중복 허용
물리 데이터 저장소 구성
데이터베이스 무결성
데이터베이스 무결성(Database Integrity) 개념
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 성질
- 데이터의 무결성을 유지하는 것은 데이터베이스 관리 시스템(DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지
- 무결성은 권한이 있는 사용자로부터 데이터베이스를 보호
데이터베이스 무결성 종류
개체 무결성(Entity Integrity)
- 한 엔티티에서 같은 기본 키(PK)를 가질 수 없거나, 기본 키(PK)의 속성이 NULL을 허용할 수 없는 제약조건
- 기본 키(Primary Key), 유니크 인덱스(Unique Index)
참조 무결성(Referential Integrity)
- 외래 키가 참조하는 다른 개체의 기본 키에 해당하는 값이 기본 키값이나 NULL이어야 하는 제약 조건
- 외래 키(Foreign Key)
속성 무결성(Attribute Integrity)
- 속성의 값은 기본값, NULL 여부, 도메인(데이터 타입, 길이)이 지정된 규칙을 준수해야 하는 제약 조건
- 체크(CHECK), NULL/NOT NULL, 기본값(DEFAULT)
사용자 정의 무결성(User-Defined Integrity)
- 사용자의 의미적 요구사항을 준수해야 하는 제약 조건
- 트리거(Trigger), 사용자 정의 데이터 타입(User Defined Data Type)
키 무결성(Key Integrity)
- 한 릴레이션에 같은 키값을 가진 튜플들을 허용할 수 없는 제약 조건
- 유니크(Unique)
키
키(Key) 개념
데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성
키 특성
- 유일성(Unique) : 식별자에 의해 엔티티 내에 모든 튜플을 유일하게 구분하는 특성
- 최소성(Minimality) : 최소한의 속성으로 식별자를 구성하는 특성
키 종류
- 기본 키(PK, Primary Key) : 테이블의 각 튜플을 고유하게 식별하는 컬럼
- 대체 키(AK, Alternate Key) : 후보 키 중에서 기본 킬로 선택되지 않은 키
- 후보 키(CK, Candidate Key) : 테이블에거 각 튜플을 구별하는 데 기준이 되는 컬럼, 기본 키와 대체 키를 합친 키
- 슈퍼 키(SK, Super Key) : 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못하는 키
- 외래 키(FK, Foreign Key) : 테이블 간의 참조 데이터 무결성을 위한 제약 조건, 한 릴레이션의 컬럼이 다른 릴레이션의 기본 키로 이용되는 키
인덱스(Index) 설계
인덱스 개념
- 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터구조
- 인덱스를 통해 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능
인덱스 적용 기준
- 인덱스 분포도가 10~15% 이내인 경우
- 분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우
- 조회 및 출력 조건으로 사용되는 컬럼인 경우
- 인덱스 자동 생성 기본키와 Unique 키의 제약 조건을 사용할 경우
인덱스 컬럼 선정
- 분포도가 좋은 컬럼은 단독적으로 생성
- 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성
- 결합 인덱스는 구성되는 컬럼 순서 선정(사용 빈도, 유일성, 정렬 등)에 유의
- 가능한 한 수정이 빈번하지 않은 컬럼을 선정
파티셔닝
파티셔닝(Partitioning) 개념
- 테이블 또는 인덱스 데이터를 파티션(Partition) 단위로 나누어 저장하는 기법
파티션의 유형
레인지 파티셔닝(Range Partitioning, 범위 파티셔닝)
- 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법
- 손쉬운 관리 기법을 제공하여 관리 시간의 단축이 가능
해시 파티셔닝(Hash Partitioning)
- 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
- 균등한 데이터 분할이 가능하고 질의 성능 향상 가능
리스트 파티셔닝(List Partitioning, 목록 파티셔닝)
- 특정 파티션에 저장될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
- 분포도가 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용
컴포지트 파티셔닝(Composite Partitioning, 조합 파티셔닝)
- 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 파티셔닝 기법
- 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있음
라운드로빈(Round-Robin)
- 라운드로빈으로 회전하면서 새로운 행을 파티션에 할당하는 기법
- 파티션에 행의 고른 분포를 원할 때 사용
파티션의 장점
- 성능 향상 : 엑세스 범위를 줄여 성능 향상
- 가용성 향상 : 전체 데이터의 훼손 가능성 감소 및 데이터 가용성 향상
- 백업 가능 : 분할 영역을 독립적으로 백업하고 복구 가능
- 경합 감소 : 디스크 스트라이핑(Disk Striping)으로 입출력 성능 향상, 디스크 컨트롤러에 대한 경합 감소
'정보처리 > 소프트웨어개발' 카테고리의 다른 글
통합 구현 연계 메커니즘 구성 (1) | 2025.04.19 |
---|---|
데이터 입출력 구현 데이터베이스 기초 활용하기 2/2 (0) | 2025.04.18 |
데이터 입출력 구현 데이터베이스 기초 활용하기 1/2 (0) | 2025.04.17 |
데이터 입출력 구현 논리 데이터 저장소 확인 2/2 (0) | 2025.04.15 |
데이터 입출력 구현 논리 데이터 저장소 확인 1/2 (0) | 2025.04.14 |