[데이터베이스 목차]

 

개념

  •  기업의 모든 비즈니스 활동 및 경영진의 비즈니스 의사결정에 근간이 되는 데이터 관련 시스템들의 기준이 정의된 데이터

기준정보의 필요성

필요성 설명
기준 정보 통합 기준 정보 간 존재하는 업무 규칙을 관계 연결을 통해 통합 구조 표현
정보 연관성 확인 기준 정보 간의 관계 분석을 통한 중복 제거 및 효율적 기준 정보 정제
업무 공유성 확인 다양한 업무 관점의 기준 정보 확인을 통한 업무간 기준 정보의 활용도 확장

 

기준정보 특징

특징 설명
동일기준 여러 업무에 동일한 기준 적용
동일정보 언제 어디서나 동일한 정보 유지
핵심정보 비즈니스 수행에 참조되는 핵심 정보
동시반영 변경이 발생하는 경우 동시에 반영

기준정보 유형

유형 설명 사례
컨트럴 기준정보
(Control Master)
- 데이터 입력/집계 편의를 위해 정형화한 데이터 값
- ERP 설정(Configuration) 정보
- 국가코드, 환율코드
- 조직(Company, Plant 등)
- 업종코드, 매출유형 등
마스터 기준정보 - 전사 수준 동일한 의미로 공유되는 핵심 정보
- 전사 업무 수행에 기본이 되는 데이터
- 자재, 제품/모델, 설비
- Customer, Vendor
운영 기준정보 - 프로세스 운영 시, 공유 또는 연계되는 프로세스 영역별 핵심정보
- 모듈 업무 수행에 기본이 되는 데이터
- 계약정보, 청구정보
- 공사정보, 원가계정정보

기준정보 계층구조

유형구분 전사 업무 프로세스(Value Chain)
개발 영업 생산 구매 설비 물류 경영관리
컨트롤 기준정보 전사 Master, 운영 Master 및 Transaction 데이터에 사용되는 정형화한 데이터
전사 Master Control 데이터 활용하여 전사 수준 동일한 의미로 공유되는 데이터
운영 Master 전사 Master 데이터 활용하여 모듈 업무 수행에 기본이 되는 데이터
Transaction Control 데이터, 전사 Master 데이터 활용하여 트랜잭션 실행 시 생성되는 데이터

  • 전사 업무 프로세스에 사용되는 Control, 전사 Master 데이터를 정의

 

[데이터베이스 목차]

 

I.  최적 SQL 수행 위한, 옵티마이저(Optimzer)의 정의

   가. 옵티마이저 정의

        - 사용자 SQL질의의 처리 가능 실행계획 탐색, 비용 산정, 최적의 실행 계획 수립하는 DBMS 핵심 엔진

 

   나. 옵티마이저 주요 기능

기능 설명
실행 계획 탐색
(Search Space Enumeration)
- 주어진 SQL 질의를 처리할 수 있는 실행 계획들을 나열(P1, .... Pn)
비용 산정
(Cost Estimation)
- 각 실행 계획의 예상 비용을 계산하여 가장 비용이 적게 드는 실행 계획 Pi를 선택해서 SQL을 실행하고 결과를 사용자에게 제공 

   다. 옵티마이저 처리 절차

질의 처리 단계 주요 기능 설명
1). Query Rewrite 질의 변환기 - 옵티마이저가 더욱 효과적인 QEP를 찾기 위하여 더 효과적인 플랜이 있는지 그 가능성을 확인하는 과정
2). Query Optmization 비용 산정기  - 질의에 대한 엑세스 경로를 결정(규칙 기반 / 비용 기반 옵티마이저 사용)
3). QEP Generation 실행 계획 생성기 - 질의 실행 계획(Query Execution Plan)
   : 질의를 실행하는데 필요한 상세한 정보를 생성.

 

II. 규칙 기반 옵티마이저, RBO(Rule Based Optimzer)  

항목 설명
개념 - 인덱스 구조비교연산자에 따른 순위여부를 기준으로 최적의 경로를 설정하는 규칙 기반 옵티마이저
특징 - 판단이 규칙적이고 분명하여 사용자가 정확히 예측
   통계정보라는 현실요소를 무시하여 판단의 오차가 크게 날 수도 있음.
우선순위 Path 1: Single Row by ROWID
Path 2: Single Row by Cluster Join
Path 3: Single Row by hash Cluster Key with Unique or Primary Key
Path 4: Single Row by Unique or Primary Key
Path 5: Clustered Join
Path 6: Hash Cluster Key
Path 7: Indexed Cluster Key
Path 8: Composite Index
Path 9: Single-Column Indexes
Path 10: Bounded Range Search on Indexed Columns
Path 11: Unbounded Range Search on Indexed Columns
Path 12: Sort_Merge Join
Path 13: MAX or MIN of Indexed Column
Path 14: ORDER BY on Indexed Column
Path 15: Full Table Scan
예 시 Emp 테이블에 ‘A’ 인덱스가 “deptno”로 구성, ‘B’ 인덱스가 “deptno+empno”로 구성시
다음의 SQL은 Bounded Range Search(Between)이므로 ‘A” 인덱스를 사용.
’A’인덱스는 Rank 9이‘B’인덱스는 Rank 10 조건이 됨
SELECT /*+ Rule */ from emp where deptno = 10 and empno between 7888 and 8888;

III. 비용 기반 옵티마이저, CBO(Cost Based Optimzer) 개념, 처리과정 

가. 비용 기반 옵티마이저 개념

항목 설명
개념 - 처리 방법들에 대한 비용을 산정해 보고 그 중, 가장 적은 비용이 들어가는 처리방법을 선택하는 옵티마이저
특징 - 현실을 감안한 판단, 통계 정보의 관리를 통해 최적화 제어, 옵티마이저를 깊이 이해하고 있지 않더라도 최소 성능을 보장하는 실행 계획을 미리 예측
원리 시스템 통계정보(CPU, 디스크 엑세스 타임을 이용하여 처리시간으로 환산한 방식)을 사용 SQL문장에 대한 여러가지 경우의 수 별로 처리시간에 비례한 비용을 산출해 내고 이들 비용에서 가장 작은 비용을 갖는 플랜을 결정
예 시 SELECT * FROM dept WHERE deptno= 10의 SQL 에서 dept테이블은 deptno에 대한 인덱스가 있 고 테이블은 전체 10블록으로 구성되어 있으며 풀 테이블 스캔일 경우 I/O 단위를 결정하는 파 라미터가 db_file_multiblock_read_count=8 이라면
RBO는 무조건 인덱스를 타는 플랜을 결정하지만 CBO는 deptno의 인덱스를 이용해 실행하면 3회의 I/O가 발생한다고 가정하고 풀 테이블 스 캔의 경우 2회(8블고+2블고)의 I/O가 발생한다면 인덱스가 있음에도 풀테이블 스캔을 선택함

나. 비용 기반 옵티마이저 처리 과정

    - CBO는 옵티마이저의 통계 정보를 활용한 비용(Cost) 계산을 통해 최적 실행계획 도출

 

다. CBO 기반 SQL 최적화 수행 과정 구성요소

수행 과정 구성 요소 설명
1). SQL 파싱 과정 SQL Parser - Parsing Tree 생성, SQL 문장 개별 구성요소 분석,
- 문번적 오류(Syntax), 의미상 오류(Semantic) 확인
2). Optimization 과정 2-1). Query Transformer(쿼리 변환) - Parsed SQL 표준(Canonical) 형태 변환
 ex) 서브쿼리, 뷰 -> Join 형태로 변경
2-2). Estimator(비용산출) - Dictionary 통계활용비용(Cost) 산출
- 선택도(Selectivity), 카디널리티(Cardinality) 계산
2.3). Plan Generator(실행 계획 생성) 실행 계획 후보군 산출
Query + Estimates 기반 최종 실행 계획 선정
3). Row-Source Generation과정 Row-Source Generation  - 옵티마이저 실행계획 포맷팅
 - SQL 엔진 실행가능 코드(or 프로시저) 변환
4). Execution 과정 SQL Engine  - Row-Source 형태의 실행계획 실행
 - 쿼리 실행 결과 제공

- CBO 참조 통계정보는 테이블 통계, 인덱스 통계, 컬럼 통계, 시스템 통계 존재함

[데이터베이스 목차]

  

 

1. Database Index 정의

 - 데이터베이스의 검색 성능 향상을 위해 임의로 생성하는, 테이블과 별도의 체계로 저장되는 데이터베이스 객체

 - 특징 : 조회 성능 향상, 독립성, 데이터 생성 성능 Trade-off

 

2. Index 유형

구분 인덱스 구조 설명
형태 트리 기반 인덱스 - 인덱스 (RDBMS 는 대부분 B tree)
해쉬 기반 인덱스 - Hash 테이블 을 이용하여 데이터 검색(=, <=, => 연산자만 사용 가능)
비트맵 인덱스 - 컴퓨터에서 사용하는 최소 단위인 비트를 이용하여 컬럼값을 저장하고 이를 이용하여 ROWID를 자동으로 생성하는 인덱스
인덱스
데이터
함수기반 인덱스 - 사용자 정의 함수 결과를 인덱스로 사용
- 연산 결과에 대한 인덱싱
조인 인덱스 - 조인 결과에 대한 인덱싱
- DW Mulit-Dimension table에 유용
도메인 인덱스 - 사용자 정의의 인덱스 타입을 사용 (오라클)
- 텍스트 , 카테고리 인덱스 등
구조 정적 인덱스

- 데이터 파일에 레코드가 삽입되거나 삭제됨에 따라 인덱스의 내용은 변하지만 인덱스 구조 자체는 변경되지 않게 하는 인덱싱 기법
동적 인덱스

- 인덱스와 데이터 파일을 블록으로 구성하고, 각 블록에는 나중에 레코드가 삽입될 것을 감안하여 빈 공간을 미리 준비해두는 인덱싱 기법
정렬 인덱스

저장
방식
Dense Index
- 데이터 레코드 단위로 하나의 인덱스 엔트리가 만들어지는 인덱스
Sparse Index

- 데이터 파일의 데이터 블록단위로 엔트리가 만들어지는 인덱스

3. 다차원 색인구조 (Multidimensional Index Structure) 유형

- 기존의 1 차원 값이 아닌 선, 면, 위치 등의 데이터를 처리하기 위한 다중 키 색인 구조

 

구분 유형 설명
접근방법
유형
PAM
(Point Access Method)
- 다차원 점 데이터를 공간에서 저장, 검색하는 점 점근방법
- k-d 트리, k-d-B트리
SAM
(Spatial Access Method)
- 선, 면, 다각형, 다면체같은 다차원 공간 데이터를 저장, 검색할 수 있는 공간 접근방법
- R-트리, R*-트리 R+-트리
다차원
인덱스
유형
k-d 트리
(K-dimensional Tree)

- k 차원의 점 데이터를 인덱스 하는 구조
- 소규모의 다차원 점 데이터를 인덱싱 할 때 적합
사분트리
(Quadtree)

- 공간을 반복적으로 분해하는 성질을 가진 계층적 자료구조 표현
- 점, 영역, 곡선, 표면, 볼륨 데이터를 표현하는데 적합
R 트리

- MBR (Minimum Bounding Rectangle)을 구하여 인덱스 에느리로 저장하는 구조
- 모양이 불규칙한 공간 데이터를 효과적으로 저장하고 빠르게 질의하는데 적합

 

[데이터베이스 목차]

 

 

1. 정규화(Normalization) 개요

1) 정규화 정의

  • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스
  • 데이터의 중복성을 최소화, 이상현상(Anomaly) 방지, 정보의 일관성을 보장하기 위해 함수 종속성을 이용하여 속성(attribute)들 간의 종속성을 분석해서 하나의 릴레이션(relation)에는 하나의 종속성(dependency)을 갖도록 분해하는 과정
  • 데이터의 중복과 종속으로 인한 이상 현상을 방지하기 위해속성들 간의 종속 관계를 분석하여 무결성을 유지하면서 다수의 릴레이션으로 분리하는 과정


2) 정규화의 목적

구분 설명
데이터 무결성 측면 데이터의 중복성을 제거하여 입력, 수정, 삭제의 이상현상(anomaly)를 제거하여 일관성(consistency)이 확보된 데이터를 처리할 수 있도록 함
데이터 성능 측면 중복된 데이터를 제거함으로써 입력, 수정, 삭제의 성능을 향상시킴
테이블이 여러 개로 분할되면서 JOIN으로 인한 데이터 조회시 성능저하 발생

 

2. 이상현상 및 정규화 원칙

1) 이상현상(Anormaly)

이상현상 설명
삽입 이상 (Insertion Anomaly) 데이터 삽입 시 의도와 다른 값들도 삽입됨
삭제 이상 (Delete Anomaly) 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제됨
갱신 이상 (Update Anomaly) 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생

2) 정규화 원칙

원칙 설명
정보의 무손실 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함하고 있어야 하며, 보다 바람직한 구조여야 함
데이터 중복성 감소 중복으로 인한 이상현상(Anomaly)의 제거
분리의 원칙 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리하여 표현하는 것

 

3. 정규화 절차

1) 정규화 단계별 절차

2) 정규화 단계별 미션

단계 미션 설명
1차 정규화 원자성 확보 - 각 속성에 값이 반복이 없는 원자값으로만 구성되도록 분해하는 과정
- 복수의 속성값을 갖는 속성을 분리
2차 정규화 부분함수 종속성 제거 - 주식별자가 아닌 속성들 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 과정
- 주식별자에 종속적이지 않은 속성을 분리
3차 정규화 이행함수 종속성 제거 - 기본키 외의 속성들 간에 함수적 종속성을 가지지 않도록 이행함수 종속성을 제거해 가는 과정
- 속성에 종속적인 속성을 분리
BCNF 결정자 함수 종속성 제거 - 복잡한 식별자 관계에 의한 문제를 해결하기 위해, 후보키가 아닌 결정자를 제거하는 과정
- 다수의 주식별자 분리
4차 정규화 다치 종속성 제거 - 하나의 릴레이션에 두 개 이상의 다치 종속이 발생하는 경우 이를 제거하는 과정
- 다치 종속 속성의 분리
5차 정규화 조인 종속성 제거 - 조인 종속(JD)이 존재하지 않거나 JD에 의해 분해되는 Projection들이 원래 릴레이션의 후보키를 유지하는 과정
- 결합 종속일 경우 두 개 이상의 N개로 분리

 

4. 반정규화(Denormalization)

1) 반정규화 정의 및 유형

  • 정규화로 분해된 데이터 모델을 관련 있는 릴레이션으로 통합하여 DB 성능을 향상시키는 기법
  • 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 DB 튜닝(Tuning) 과정

 

반정규화 유형

구분 기법 설명
테이블 반정규화 테이블 병합 1:1 관계, 1:M관계, 슈퍼/서브타입 테이블 병합
테이블 분할 수직분할, 수평분할
테이블 추가 중복 테이블, 통계 테이블, 이력 테이블, 부분 테이블 추가
칼럼 반정규화 중복 컬럼 추가 조인을 감소시키기 위해 중복된 칼럼을 위치
파생 컬럼 추가 성능 저하를 예방하기 위해 미리 값을 계산하여 컬럼 보관
이력 테이블 컬럼 추가 최근 값 여부, 시작과 종료일 등을 성능 저하 예방을 위해 추가함
관계 반정규화 중복 관계 추가 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법

2) 반정규화 절차

절차 방법 설명
1. 반정규화 대상조사 범위처리 빈도수 조사 자주 사용되는 테이블에 접근하는 프로세스 수가 많고항상 일정한 범위 만을 조회하는 경우
대량의 범위처리 조사 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리 범위를 일정하게 줄이지 않으면 성능 보장할  없을 경우
통계성 프로세스 조사 통계성 프로세스에 의해 통계 정보를 필요로   별도의 통계테이블(반정규화 테이블) 생성
테이블 조인 개수 조사 테이블에 지나치게 많은 조인(JOIN) 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 반정규화를 검토
2. 다른 방법유도 검토 뷰 테이블 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 (VIEW) 사용
클러스터링 적용 대량의 데이터를 특정 클러스터링 팩트에 의해 저장방식을 다르게 하는 방법 (조회중심의 테이블에만 적용가능)
인덱스 적용 인덱스를 통해 성능을 충분히 확보할  있다면 인덱스를 조정
응용 애플리케이션 응용 애플리케이션에서 로직을 구사하는 방법 변경
3. 반정규화 적용 테이블 반정규화 테이블 병합/분할/추가
컬럼 반정규화 중복 컬럼 추가파생 컬 추가
관계 반정규화 중복 관계 추가
4. 검증 데이터 무결성 검증 Application  반정규화 모델 반영 여부 / 조회결과 검증

 

5. 정규화 반정규화 비교

비교항목 정규화 반정규화
목적 - 데이터 중복 최소화 설계 - 데이터 조회시간 최적화 설계
조회비용 - 테이블간 JOIN 수가 증가 될수록 조회 비용이 증가 - 조회할 테이블 개수가 적어 조회 비용이 정규화 대비 감소
저장비용 - 단일 테이블 저장으로 저장 비용감소 - 다수 테이블 저장으로 저장 비용 증가
무결성 - 데이터 구조 안정성 및 무결성 유지 - 중복저장으로 무결성 검증이 필요
특징 - 데이터 중복 저장 최소화로 용량 우위 - JOIN 연산 비용감소로 시간 우위

 

[데이터베이스 목차]

 

동시성제어/병행제어(Concurrency Contrl)

1.  데이터베이스 무결성 확보를 위한, 동시성 제어 개요

1) 동시성 제어의 정의

  • DBMS에서 동시에 작동하는 여러개의 트랜잭션이 작업을 성공적으로 종료하도록 실행순서를 제어하는 기법
  • 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 다수의 트랜잭션 작업이 성공적으로 실행될 수 있도록 지원하는 제어 기능
  • 동시에 실행되는 다수의 트랜잭션 작업에서도 데이터베이스의 작업(입력, 수정, 삭제, 검색) 시 데이터의 무결성이 유지 되도록 제어하는 기법

2) 동시성 제어의 목적 

  • 일관성 측면 : 트랜잭션의 직렬 가능성을 확보하여 데이터의 일관성 보장, 데이터 무결성 보장
  • 공용성 측면 : 시스템의 활용도, 공유 최대화, 사용자 응답시간 최소화

2. 동시성 제어 미처리 시의 문제점

구분 현상  설명
갱신 손실
(Lost Update)
- 트랜잭션들이 동일 데이터를 동시에 갱신할 경우 발생
현황파악오류
(Dirty Read)
-ㅠ트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류
모순성
(Inconsistency)
- 두 트랜잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제

연쇄복귀
(Cascading Rollback)
- 복수의 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능

 - 경신손실, 현황파악오류, 모순, 연쇄복귀 발생으로 병행제어 필요

 

3. 동시성 제어 기법의 종류

1) 동시성 제어 기법

  • 낙관적, 비관적으로 분류하여 동시성 제어 수행

2) 동시성 제어 기법의 종류

기법 개념도 작동방식
Locking 기법
-트랜잭션이 사용하는 자원에 대하여 상호 배제 기능을 제공하는 기법
-공유 lock : 다른 트랜잭션도 읽기 실행 가능
-전용 lock : 다른 트랜잭션은 읽기, 기록 모두 불가
2PL
(2 Phase Locking)
-확장단계 : 트랜잭션은 오직 lock만 수행 가능
-수축단계 : 트랜잭션은 오직 unlock만 수행 가능
-모든 트랜잭션들이 lock과 unlock연산을 확장 단계와 수축 단계로 구분하여 수행함
Timestamp
Ordering
-시스템 시계 : 시스템 시간을 타임스탬프 값으로 부여
-논리적 계수기 : 트랜잭션 발생시마다 카운터를 하나씩 증가시켜 타임스탬프로 부여
-DB시스템에 들어오는 트랜잭션 순서대로 System Clock / Logical Counter 할당하고 순서를 부여하여 동시성 제어의 기준으로 사용
낙관적 검증기법
-트랜잭션 수행 동안 트랜잭션을 위해 유지되는 데이터 항목들의 지역 사본에 대해서만 갱신이 이루어짐
-트랜잭션 종료 시 동시성을 위한 트랜잭션 직렬화가 검증되면 일시에 DB에 반영함
-트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시 일괄적 검사 기법
다중버전 동시성 제어
(MVCC)
-트랜잭션이 한 데이터에 접근하려 할 때, 그 트랜잭션의 타임스탬프와 접근하려는 데이터의 여러 버전의 타임스탬프를 비교하여, 현재 실행하고 있는 스케줄의 직렬 가능성이 보장되는 버전을 선택하여 접근하도록 하는 기법
-트랜잭션의 타임스탬프와 접근 데이터의 여러 버전 타임스탬프 비교하여 직렬 가능성이 보장되는 버전 선택

 

4. 동시성제어의 문제점 및 해결방안

1) 동시성제어의 분류

  • Locking 해제 과정, 타임스탬프 부여에 따라 Deadlack, Rollback, 자원 낭비 등의 문제 발생

2) 동시성제어 문제점

기법 문제점 설명
Locking(2PL) Deadlock 발생 - 락킹과 해제과정 중 서로 교착상태 조건 충족시 서로 대기하는 상태 발생
Timestamp 롤백 - 타임스탬프 비교에 따른 롤백 
낙관적 검증 자원낭비 - 트랜잭션 마지막 단계에서 기록하는 낙관적 검증 기법은 자원낭비 문제 발생
MVCC 롤백 - 충돌문제는 대기가 아니라 복귀처리 함으로 연쇄 복귀초래 발생 가능성
  • 문제점에 따라 선택적 기법 활용

3) 동시성제어 문제 발생 시 해결방안

  • 타임스탬프 적용 시 Wait-die, Wond-wait 적용
비고 Wait-die Wound-wait
정의 오래된 트랜잭션 기다리고, 새로운 트랜잭션이 Rollback 되고 다시 계획 오래된 트랜잭션이 새로운 트랜잭션을 rollback 시키고 이를 다시 계획
트랜잭션 양 lock을 요청하는 단계 중에 abort되어 재시작되므로, abort되는 트랜잭션의 처리된 양이 적음 처리도중 높은 우선 순위
트랜잭션에 의해 abort되므로, 그 동안 처리된 일이 모두 무시되어 불필요한 작업 수행
공통점 - 두 방법 모두 우선 순위가 높은 트랜잭션이 낮은 우선순위의 트랜잭션을 abort 시킴
- 중지된 트랜잭션은 기존 타임스탬프를 가지고 재시작
- 결국 시스템에서 가장 높은 우선 순위를 갖게 되어 완료됨
- 구현이나 관리가 waits-for graph보다 쉬움

 

+ Recent posts