2. 소프트웨어 개발
2.1 데이터 입출력 구현
2.1.3 물리 데이터저장소 설계
1. 물리 데이터 저장소
논리 데이터 모델로부터 물리 데이터 모델로 변환하는 순서는 단위엔티티를 테이블로, 속성을 컬럼으로, UID를 기본키로, 관계를 외래키로 변환한 후, 컬럼 유형과 길이를 정의하고, 데이터 처리 범위와 빈도수를 분석하여 반정규화를 고려한다.
1.1 데이터베이스 스키마의 종류
1. 외부 스키마
프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것
데이터베이스의 개발 사용자나 응용프로그래머가 접근하는 데이터베이스
2. 개념 스키마
모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것
3. 내부 스키마
전체 데이터베이스의 물리적 저장 형태를 기술한 것
데이터베이스 시스템 구조에서 데이터가 실제로 저장되는 구조를 기술
1.2 논리 데이터 모델에서 물리 데이터 모델 변환 순서
1. 단위 엔티티를 테이블로 변환한다.
논리모델에서 정의된 엔티티는 물리모델에서 테이블로 변환한다.
엔티티는 한글명, 테이블은 소스코드 가독성을 위해 영문명을 사용한다.
메타데이터시스템과 같은 사전에 표준화된 용어가 있을 경우 메타에 등록된 단어를 사용하여 명명한다.
2. 속성을 컬럼으로 변환한다.
컬럼의 명칭은 속성의 명칭과 반드시 일치할 필요는 없으니 개발자와 사용자 간 의사소통을 위해 가능한 표준화된 약어를 사용한다.
SQL 예약어 사용은 피한다.
SQL 문장 가독성을 위해 컬럼 명칭은 가능한 짧은 것이 좋다.
컬럼명으로 복합단어를 사용할 경우 미리 정의된 표준에 의해 명명한다.
3. UID를 기본키로 변환한다.
엔티티의 UID에 해당하는 모든 속성에 대해 기본키로 선언하고 NOT Null, Unique등의 제약조건을 추가한다.
4. 관계를 외래키로 변환한다.
n 관게에서 1영역에 있는 기본키를 n영역의 외래키로 선언한다.
5. 컬럼유형과 길이를 정의한다.
정의된 각 컬럼에 대해 적용 DBMS에서 제공하는 데이터유형 중 적절한 유형을 정의하고 해당 데이터의 최대 길이를 파악하여 길이를 설정한다.
CHAR : 고정길이 문자열 Data 최대 2000Byte 까지 저장 가능
VARCHAR : 가변길이 문자열 Data 최대 4000Byte 까지 저장 가능
NUMBER : 38자리수의 숫자 저장가능
6. 반정규화 한다.
1.3 테이블 제약조건 설꼐
1. 삭제 제약 조건 설계
참조된 기본키의 값이 삭제될 경우의 처리내용을 정의한다.
Cascade : 참조한 테이블에 있는 외부키와 일치하는 모든 Row가 삭제
Restricted : 참조한 테이블에 있는 외부키에 없는 것만 삭제 가능
Nullify : 참조한 테이블에 정의된 외부키와 일치하는 것을 Null로 수정
2. 수정 제약 조건 설계
참조된 기본키의 값이 수정될 경우의 처리내용을 정의한다.
Cascade : 참조한 테이블에 있는 외부키와 일치하는 모든 Row가 수정
Restricted : 참조한 테이블에 있는 외부키에 없는 것만 수정 가능
Nullify : 참조한 테이블에 정의된 외부키와 일치하는 것을 Null로 수정
1.4 인덱스 설계
1. 인덱스 적용 기준
인덱스 적용 대상 컬럼은 전체 Row 값대비 분포도가 10~15% 이내인 경우가 적합하다.
분포도가 범위 이상이더라도 부분처리를 목적으로 하는 컬럼인 경우
입출력 장표등에서 조회 및 출력 조건으로 사용되는 컬럼일 경우
인덱스가 자동 생성되는 기본키와 Unique키의 제약조건을 사용하는 컬럼
2. 인덱스 컬럼 선정
분포도가 좋은 컬럼은 단독적으로 생성하여 활용도를 향상시킨다.
자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성하여 활용한다.
결합 인덱스를 구성하는 컬럼순서 선정(사용빈도, 유일성, Sort 등)에 유의해야 한다.
가능한 한 수정이 빈번하지 않은 컬럼을 선정한다.
3. 인덱스 설계 시 고려사항
새로운 인덱스가 기존 액세스 경로에 영향을 미칠 수 있음에 유의한다.
지나치게 많은 인덱스는 오버헤드로 작용한다.
인덱스는 추가적인 저장공간이 필요함을 고려해야한다.
넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생 시킬 수 있다.
인덱스와 테이블 데이터의 저장 공간이 적절히 분리되도록 설계해야 한다.
1.5 뷰 설계
1. 뷰 속성
REPLACE : 뷰가 이미 존재하는 경우 재생성 한다.
FORCE : 기본 테이블의 존재 여부에 관계없이 뷰 생성을 한다.
NOFORCE : 기본 테이블이 존재할 때만 뷰를 생성한다.
WITH CHECK OPTION : Sub-Query 내의 조건을 만족하는 행만 변경
WITH READ ONLY : DML 작업 불가
2. 뷰 설계 시 고려사항
최종적으로는 테이블을 액세스하는 것이므로 사용에 따라 수행속도에 문제가 발생할 수 있다.
1.6 클러스터 설계
1. 적용 기준
분포도가 넓은수록 오히려 유리(인덱스의 단점을 해결) 한 기법이다.
액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법
분포도가 넓은 테이블의 클러스터링은 저장 공간을 절약 가능
다중블록 이상의 테이블에 적용
대량의 범위를 자주 액세스하는 경우 적용
인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용
여러 개의 테이블이 빈번히 조인을 일으킬 때 활용
2. 클러스터 설계 시 고려 사항
검색효율은 높여주나 입력, 수정, 삭제 시 부하가 증가함을 고려해야 함
Union, Distict, Order by,Group by가 빈번한 컬럼이면 고려해 보아야 함
수정이 자주 발생하지 않는 컬럼을 고려 대상이다.
처리 범위가 넓어 문제가 발생하는 경우는 단일 테이블 클러스터링을, 조인이 많아 문제가 발생하는 경우는 다중 클러스터링을 고려해야 한다.
1.7 파티션 설계
1. 파티션 종류
범위분할 : 지정한 열의 값을 기준으로 분할
해시분할 : 해시 함수에 따라 데이터를 분할
조합분할 : 범위분할에 의해 데이터를 분할한 다음 해시 함수를 적용하여 다시 분할
2. 파티션 장점
데이터 액세스 범위를 줄여 성능 향상
전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상
각 분할 영역을 독립적으로 백업하고 복구 가능
Disk Striping으로 I/O성능 향상 (Disk 컨트롤러에 대한 경합 감소)
1.8 디스크 구성 설계
1. 정확한 용량을 산정하여 디스크 사용의 효율을 높인다.
2. 업무량이 집중되어 있는 디스크를 분리하여 설계함으로써 집중화된 디스크에 대한 입출력 부하를 분산한다.
3. 입출력 경합을 최소화하여 데이터의 접근 성능을 향상시킨다.
- 테이블을 위한 스페이스와 인덱스를 위한 스페이스를 분리 구성한다.
- 테이블 스페이스와 템포러리 스페이스를 분리 구성한다.
- 테이블을 마스터 테이블과 트랜잭션 테이블로 분류한다
4. 디스크의 구성에 다라 테이블 스페이스의 개수와 사이즈 등을 결정한다.
5. 파티션할 테이블을 별도로 분류한다.
2. ORM 프레임워크
객체 관계 매핑은 관계형 데이터베이스와 객체 지향 프로그래밍언어 간의 호환되지 않는 데이터를변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용하는 개체를 관계형 데이터베이스로 변환하여 테이블을 구성하는데 활용된다.
2.1 ORM매핑 기법
1. 객체와 테이블 간의 변환 방법

객체지향에서 객체/클래스는 관계형 데이터베이스에서 테이블로 매핑
어트리뷰트는 컬럼으로, 오퍼레이션은 프로시져 혹은 함수로 매핑
2. 관계와 테이블 간의 변환 방법

2.2 ORM 절차
1. 클래스를 테이블로 변환
클래스의 인스턴스는 테이블의 레코드로 매핑
2. 애트리뷰트를 컬럼으로 변환
클래스 인스턴스의 애트리뷰트는 테이블의 컬럼으로 매핑
3. 클래스간 관계는 관계형 테이블 간의 관계로 변환
클래스 간의 관계인(어소시에이션, 애그리게이션, 제너럴리제이션)을 관계형 데이터베이스의 테이블 간 제약사항으로 변환
3. ORM 기술 간 비교

3. 트랜잭션 인터페이스
물리 데이터저장소에서 트랜잭션 인터페이스는 전체적인 데이터베이스 트랜잭션의 골격 및 인터페이스를 정의하는 활동이다. 트랜잭션은 데이터베이스 입출력과 기능적 형태로 정의된다.
3.1 데이터베이스 트랜잭션 특징
1. 원자성
트랜잭션 연산을 데이터베이스 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
2. 일관성
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환된다.
3. 독립성
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
4. 영속성
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영된다.
3.2 데이터베이스 트랜잭션 연산자
1. COMMIT
하나의 트랜잭션에 대한 작업이 성공적으로 끝나고 수행결과를 관리자에게 알려주는 연산
2. ROLLBACK
하나의 트랜잭션 처리가 비정상적 종료되어 해당 트랜잭션을 재시작 혹은 폐기하는 연산
3. RECOVERY
트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 연산
3.3 트랜잭션 인터페이스 설계
데이터베이스 접근 방법 및 인터페이스를 절차적으로 명세한다.
트랜잭션 인터페이스는 주로 프로그래밍 언어로 구현된다.
예를 들면 java는 JDBC,JTS 등이 여기 해당하는 솔루션이다.
c언어는 MTS가 여기에 해당한다.
'자격증 > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 14일차 (0) | 2021.01.25 |
|---|---|
| 정보처리기사 13일차 (0) | 2021.01.20 |
| 정보처리기사 11일차 (0) | 2021.01.19 |
| 정보처리기사 10일차 (0) | 2021.01.13 |
| 정보처리기사 9일차 (0) | 2021.01.04 |