DongDD's IT

[정보처리기사 실기] 데이터베이스 - 이상, 함수적 종속, 정규화,기타 본문

자격증/정보처리기사

[정보처리기사 실기] 데이터베이스 - 이상, 함수적 종속, 정규화,기타

DongDD 2018. 4. 8. 13:15

[정보처리기사 실기] 데이터베이스




이상(Anomaly)


- 테이블에서 일부 속성들의 종속으로 인해 데이터 중복이 생기고 이로 인해 테이블 조작 시 문제가 발생하는 현상


1. 삽입이상

- 데이터 삽입 시, 의도와는 상관없이 원하지 않는 값들로 인해 삽입이 안되는 현상


2. 삭제이상

- 한 튜플을 삭제할 때, 의도하지 않은 값들도 함께 삭제되는 현상(연쇄삭제)


3. 갱신이상

- 튜플의 속성 값을 갱신할 때 일부 튜플만 갱신되어 불일치성이 생기는 현상



함수적 종속


- X,Y가 테이블 R의 속성집합의 부분집합일 때, X의 갑에 대해 항상 속성 Y의 값이 하나만 연관되어 있을 때, Y는 X에 함수적 종속이라고 한다.(X -> Y 로 표현, X : 결정자, Y : 종속자)


1. 완전함수적 종속

- X -> Y인 종속 관계에서 X의 부분집합에는 함수적 종속관계가 아닐 때


2. 부분함수적 종속

- X -> Y인 종속 관계에서 X의 부분집합에도 함수적 종속관계 일 때



정규화(Nomalization)


- 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정

- 목적 : 중복을 제거해 이상 발생 가능성을 낮춤


1. 제 1정규형 - 도메인이 원자값으로만

- 테이블에 속한 모든 속성의 도메인이 원자 값만으로 되어있는 정규형


2. 제 2정규형 - 부분 함수적 종속 제거

- 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형


3. 제 3정규형 - 이행적 함수적 종속 제거

- 기본키가 아닌 모든 속성이 기본키에 대해 이행 함수적 종속(A -> B, B -> C이면 A -> C)을 만족하지 않는 정규형 


4. BCNF - 결정자이면서 후보키가 아닌 것 제거

- 모든 결정자가 후보키인 정규형


5. 제 4정규형 - 다치 종속 제거

- 다중 값 종속 A ->-> B가 존재할 경우, 테이블의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형


6. 제 5정규형 - 조인 종속성 이용

- 모든 조인 종속이 테이블의 후보키를 통해서만 성립되는 정규형


7. 역정규화(Denomalization)

- 정규화로 인해 분해된 릴레이션들에서 정보를 얻기 위해 조인을 사용해야 하는데, 응답 속도가 떨어지기 때문에 정규화에 위배되더라도 성능 향상을 위해 테이블을 다시 합치는 과정



시스템 카탈로그(System Catalog)


- DBA의 도구로 DB에 저장된 모든 데이터 개체에 대한 정의나 명세에 대한 정보가 저장되어있음

- 데이터 사전이라고도 불림(Data Dictionary)

- DDL로 생성된 정보가 저장(Metadata)

- 릴레이션, 인덱스, 뷰 통계, 사용자 관련 정보가 저장


특징


- SQL을 통해 내용 검색 가능

- 기본 테이블, 뷰, 인덱스 등 갱신 시 자동으로 갱신(시스템 카탈로그 직접 갱신은 불가)


구성요소(MS-SQL Server 2005)


1. SYSOBJECTS

- 개체에 관한 정보(개체 명, 소유자, 개체 종류, 생성일 등)

2. SYSCOLUMNS

- 속성에 관한 정보(속성 명, 테이블 명, 소유자, 타입 등)

3. SYSINDEXES

- 인덱스에 관한 정보(인덱스 명, 테이블 명, 속성 수, 튜플 수 등)

4. SYSVIEWS

- 뷰에 관한 정보(뷰 명, 소유자, 뷰 명령문 등)

5. SYSUSERS

- 사용자, 그룹에 관한 정보(사용자 ID, 사용자 명, 그룹 명 등)

6. SYSPROTECTS

- 사용자 권한 정보(개체 명, 사용자 ID, 권한 등)



인덱스(Index)


- 튜플에 빠른 접근을 하기 위해 <키 값, 포인터>로 구성되는 데이터 구조

- 기본 인덱스 : 기본키를 위한 인덱스

- 보조 인덱스 : 기본 인덱스가 아닌 나머지 인덱스들

- TABLE SCAN : 인덱스에 없어 모든 data를 검색


종류


1. m-원 검색 트리(m-way Search Tree)

- 한 노드가 1개의 키값과 2개의 서브 노드를 갖는 이진 탐색 트리

- 한 노드가 최대 m-1개의 키 값과 최대 m개의 서브 노드를 가짐

- 삽입, 삭제 시 균형을 유지하기 위해 복잡한 연산 수행


2. B-트리(B-Tree)

- 균형된 m-원 검색 트리

- 키 값과 포인터들이 오름차순으로 저장

- 루트, 단말 노드 X -> 최소 m/2개, 최대 m개의 서브 노드 가짐

- 루트 노드 -> 최소 2개 이상의 서브 노드

- 모든 단말 노드는 같은 높이

- 키 삽입, 삭제 시 노드의 분열, 합병 발생할 수 있음


3. B*-트리(B*-Tree)

- B-트리의 노드 분열을 줄입

- 각 노드가 가능한 한 최소 2/3가 채워지도록 함

- 루트 노드 -> 최소 2개의 서브노드

- 나머지 노드 -> 최소 (2m-2)/3개, 최대 m개의 서브 노드 가짐


4. B+-트리(B+-Tree)

- 단말 노드가 아닌 노드로 이루어진 Index Set과 단말 노드로만 이루어진 Sequence Set으로 이루어짐

- Index Set의 노드들은 단말 노드에 있는 키 값을 찾는 경로로만 제공

- 직접 접근 : 인덱스 세트, 순차 접근 : 순차 세트

- 루트, 단말 노드 X -> 최소 m/2개, 최대 m개의 서브 노드 가짐

- 루트 노드 -> 0 or 2~m개의 서브 노드 가짐



트랜잭션(Transaction)


- 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 연산의 집합, 작업의 단위

- 회복, 병행 수행 시 처리되는 작업의 논리적 단위

- COMMIT : 정상적 종료 시 수행(DB에 반영)

- ROLLBACK : 비정상적 종료 시 수행(모든 작업 취소, 복구)


특성 - 무결성 보장


1. 원자성(Atomicity)

- 트랜잭션 연산은 DB에 모두 반영되거나 전혀 반영되지 않아야 함

2. 일관성(Consistency)

- 트랜잭션이 완료된 후에도 항상 일관성이 있는 DB가 되어야함

- 고정 요소는 트랜잭션 실행 전후의 상태가 같아야함

3. 독립성(Isolation)

- 한 트랜잭션이 데이터를 갱신하는 동안 이 데이터에 다른 트랜잭션이 접근할 수 없어야함

4. 영속성(Durability)

- 트랜잭션 성공 후, 시스템 오류가 발생하더라도 트랜잭션에 의해 변경된 내용은 보존되어야함(영구적으로 반영)


상태


1. 활동(Active) : 실행 중인 상태

2. 실패(Failed) : 오류가 발생해 중단된 상태

3. 철회(Aborted) : 비정상적인 종료로 ROLLBACK을 수행한 상태

4. 부분 완료(Partially Commited) : 트랜잭션의 마지막 연산을 수행하고 COMMIT을 실행하기 전 상태

5. 완료(Commited) : COMMIT 연산 수행 후의 상태



회복(Recovery)


- 트랜잭션 수행 시 장애가 발생해 DB가 손상될 경우 정상 상태로 복구하는 자업


유형


1. 실행 장애(Active Failure)

- 사용자 실수, 무결성 위반으로 질의 실패

2. 트랜잭션 장애(Transaction Failure)

- 트랜잭션 내부에서의 비정상적 상황으로 트랜잭션 실행이 중단

3. 시스템 장애(System Failure)

- DB 손상은 없으나 시스템 오류로 트랜잭션이 더이상 실행될 수 없음

4. 미디어 장애(Media Failure)

- 저장 장치의 문제로 DB가 손상


회복 관리기(Recovery Manager)


- 로그, 메모리 덤프 등을 이용해 회복을 수행하는 DBMS의 핵심 구성 요소

- Redo : DB가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석해 트랜잭션의 start와 commit에 대한 기록이 있는 트랜잭션들의 작업을 재작업

- Undo : DB가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석해 트랜잭션의 start는 있지만 commit 기록이 없는 트랜잭션들이 작업한 변경 내용을 모두 취소


회복 기법


1. 연기 갱신 기법(Deferred Update)

- 트랜잭션이 성공적인 종료를 할때까지 DB에 대한 갱신을 연기함

- 부분 완료 시점에 로그를 사용해 DB에 반영

- 부분 완료 전에 장애가 발생해도 DB에 반영되지 않았기 때문에 Undo 작업이 불필요

- Redo 작업만 필요


2. 즉각 갱신 기법(Immediate Update)

- 트랜잭션이 데이터를 변경하면 즉시 DB에 반영

- 모든 변경 내용을 로그에 기록

- Undo, Redo 작업 필요


3. 그림자 페이지 기법(Shadow Paging)

- 갱신 이전 DB를 페이지 단위로 구성하고 각 페이지 복사본은 그림자 페이지에 별도로 보관, 페이지를 대상으로 트랜잭션에 대한 변경 작업 수행

- Rollback : 그림자 페이지를 변경된 이후의 실제 페이지 부분에 대체

- 로그 필요 X, Undo X, Redo X


4. 검사점 기법(Check Point)

- 트랜잭션 실행 중 주기적으로 변경 내용, 시스템 정보들을 로그에 보관

- 장애 발생 시 가장 최근 로그로 복구 -> 시간 단축


5. 미디어 회복 기법(Media Recovery)

- DB 내용을 주기적으로 안전한 저장 장치에 덤프

- 장애 발생 시, 가장 최근 덤프 이후의 트랜잭션을 Redo

- Undo 작업 X



병행 제어(Concurrency Control)


- 동시에 여러 개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션 간 상호 작용을 제어

- 병행성 : 여러 개의 트랜잭션들이 동시에 인터리빙(Interleaving)하게 실행


목적


- DB 공유를 최대화

- 시스템 활용도 최대화

- 응답시간 최소화

- 단위시간 당 트랜잭션 처리 수 최대화

- DB의 일관성 유지


필요성


1. 갱신 분실(Lost Update)

- 2개 이상의 트랜잭션이 같은 data를 갱신할 때 갱신 결과의 일부가 없어지는 현상


2. 모순성(Inconsistency)

- 다수의 사용자가 동시에 같은 데이터를 갱신할 때, 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상


3. 연쇄복귀(Cascading Rollback)

- 병행 수행되던 트랜잭션들 중 하나가 오류로 인해 Rollback될 때, 다른 트랜잭션들도 함께 Rollback되는 현상


잠금


- 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 함

- 순서 : 잠금(Lock) -> 실행(Execute) -> 해제(Unlock)

- 단위 :                 데이터베이스 -> 테이블 -> 레코드 -> 필드

Locking overhead : 감소                                              증가

공유성               :  감소                                              증가

잠금 단위           :  큼                                                 작음


- 교착 상태(Deadlock) : 한 트랜잭션이 잠가 놓은 자원을 사용하기 위해 모든 트랜잭션이 실행되지 못하고 기다리는 상태

- 배타 잠금(Exclusive Lock) : 다른 트랜잭션은 읽기/쓰기 불가

- 공유 잠금(Shared Lock) : 다른 트랜잭션은 읽기만 가능


종류


1. 2-단계 잠금 규약 기법(Two-Phase Lock Protocol)

- 트랜잭션 스케줄의 직렬성 보장

- 두가지 단계

-> 확장 단계(Growing) : 잠금 수행 O, 잠금 해제 X

-> 축소 단계(Shrinking) : 잠금 해제 O, 잠금 수행 X

- 직렬성은 보장하지만, 교착 상태 예방 X


2. 타임 스탬프 순서 기법(Time Stamp Ordering)

- 타임 스탬프 : 각 트랜잭션을 실행할 때 부여하는 값

- 인터리빙하게 실행한 결과가 타임 스탬프 순서대로 실행하는 직렬 스케줄의 실행결과와 항상 동일하다는 것을 보장

- 직렬성 순서 결정을 위해 실행 순서를 미리 결정

- 교착 상태가 일어나지 않음



보안(Security)


목표


- 정보 보호 : 불법적 노출 방지

- 정보 인증 : 불법적 정보 수정, 허위 정보 삽입 방지

- 사용자 인증 : 신원 확인


기법


1. SQL 이용

- View 기법 : 비공개되어야 하는 데이터를 제외한 뷰를 생성하여 데이터 접근을 막음

- DCL 기법 : GRANT, REVOKE


2. 암호화 기법

- 개인키(대칭키) 암호화 - DES

- 공개키(비대칭키) 암호화 - RSA



튜닝(Tuning)


- 데이터베이스 관리 시스템의 성능을 향상시키는 작업

- 높은 작업 처리량과 짧은 응답 시간을 목표로 함


목표


- SQL문 실행 시 디스크 블록 접근 횟수 최소화

- 캐시 영역을 이용해 한번 가져온 데이터를 보관해 필요할 때 메모리에서 신속히 가져올 수 있게 함

- 모든 SQL문 공유

- 잠금 기능 최소화 -> 다수의 사용자가 자원을 안정적으로 접근


단계


- 비즈니스 규칙 튜닝

- 데이터 설계 튜닝

- 응용 프로그램 설계 튜닝

- 데이터베이스 논리적 구조 튜닝

- 데이터베이스 접근 방식 튜닝

- 접근 경로 튜닝 : 인덱스에 관련된 튜닝

- 메모리 관리 튜닝 - 메모리 할당 튜닝, SQL 파싱 작업 감소

- 물리적 구조, 입출력 튜닝

- 자원의 경합 튜닝

- H/W 시스템 튜닝


인덱스 튜닝


1. B-트리 인덱스

- 일반적인 인덱스 방식

- 루트노드에서 하위노드로 키 값의 크기를 비교해 단말노드에서 해당 data를 찾음

- 데이터 양과 무관하게 모든 데이터의 인덱스 탐색 시간 동일


2. 비트맵 인덱스

- 인덱스 컬럼의 data를 0, 1로 변환하여 인덱스 키로 사용

- 효율적 논리 연산, 저장 공간이 작음


3. 역방향 인덱스

- 인덱스 컬럼의 데이터를 역으로 변환해 인덱스 키로 사용

- B-트리 인덱스의 불균형 문제 해결

- 데이터 분포도 좋음 -> 검색 성능 증가


4. 클러스터드 인덱스(Clustered Index)

- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장

- 실제 데이터가 순서대로 저장되어 인덱스 검색없이 빠르게 데이터를 찾을 수 있음

- 삽입, 삭제 시 순서 유지를 위해 재정렬 필요

- 한 개의 릴레이션에 하나의 인덱스만 생성 가능


5. 넌클러스터드 인덱스(Non-Clustered Index)

- 인덱스의 키 값만 정렬, 데이터는 정렬 X

- 데이터 검색을 위해 인덱스 검색을 통해 실제 위치 확인 -> 검색 속도 느려짐

- 한 개의 릴레이션에 여러 개의 인덱스 생성 가능


인덱스 선정 기준


- 분포도가 좋은 경우 단독 인덱스로 선정

- 데이터 변경이 적은 컬럼을 인덱스로 선정

- 자주 조합되는 경우 결합 인덱스로 선정


인덱스 사용 불가한 경우


- NULL은 인덱스 대상에 포함되지 않음 -> 'IS NULL', 'IS NOT NULL'을 사용하면 인덱스 사용 불가

- <>, !=, NOT 등 부정연산자는 다수 데이터를 검색하므로 인덱스 사용 불가

- LIKE "%A"와 같은 경우, 첫 글자를 모르기 때문에 모두 검색하게 됨

- 인덱스 컬럼에 수식, 함수 사용 시 인덱스 키 값이 변형되어 인덱스로 사용 불가



객체 지향 데이터베이스(ODB)


- 객체 지향 기술 + 데이터베이스 기술


구성


- 객체, 객체 식별자(OID, Object Identifer)

- 속성, 메소드(Attribute, Method)

- 클래스, 인스턴스(Class, Instance)

- 상속(Inheritance)

- 오버로딩, 오버라이딩(Overloading, Overriding)


객체 관계 데이터베이스(ORDB, Object Relational Database)


- 관계형 데이터베이스 + 객체 지향 데이터베이스

- 정형화된 데이터 타입만을 필요로하는 관계형 데이터베이스에 비정형화된 데이터를 저장하기 위해 등장

- 데이터 언어 표준 : SQL3

- 확장 가능 데이터 타입, 사용자 정의 데이터 타입, 사용자 정의 함수, 사용자 정의 연산자, 대형 객체 타입 등 지원



고급 데이터베이스



1. 분산 데이터베이스(Distributed Database)


- 논리적으로 같은 시스템이나 물리적으로는 컴퓨터 네트워크를 통해 분산되어 있는 데이터베이스


1) 구성요소

- 분산 처리기 : 자체 처리 능력을 가지고 지리적으로 분산되어있는 컴퓨터 시스템

- 분산 데이터베이스 : 지리적으로 분산되어 있는 데이터베이스로 해당 지역 특성에 맞게 데이터베이스를 구성

- 통신 네트워크 : 분산 처리기들을 통신망으로 연결해 논리적으로 하나의 시스템처럼 작동할 수 있게 하는 네트워크


2) 목표

- 위치 투명성(Location Transparency) : 접근하려는 DB의 실제 위치를 알 필요 없이 논리적인 명칭으로 접근 가능

- 중복 투명성(Replication Transparency) : 동일한 데이터가 여러 곳에 중복되어도 사용자는 하나의 데이터가 존재하는 것처럼 사용

- 병행 투명성(Concurrency Transparency) : 분산 데이터베이스에서 다수의 트랜잭션이 동시에 수행되도 수행결과는 서로 영향을 주지 않음

- 장애 투명성(Failure Transparency) : 여러 장애에도 불구하고 트랜잭션을 정확하게 수행



2. 멀티미디어 데이터베이스(Multimedia Database)


- 텍스트, 그래픽, 동영상, 음성 등이 복합적으로 구성된 데이터베이스



3. 주기억장치 데이터베이스(Main Memory Database)


- DB 전체를 주 기억장치에 상주시킨 후 DB연산을 수행하는 시스템

- 디스크 입출력 발생 X



4. 데이터 웨어하우스(Data Warehouse)


- 다량의 데이터를 분석해 정보화하고 이를 여러 계층의 사용자들이 효율적으로 사용할 수 있게 한 데이터베이스

- 의사 결정용 데이터베이스라고 불림

- 다양한 DB에서 추출된 데이터만 저장, 필요한 인덱스 생성, 다차원 분석 도구로 데이터 웨어하우스를 분석해 효율적 의사결정에 필요한 자료 추출



5. 데이터 마트(Data Mart)


- 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제나 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어하우스


6. 데이터 마이닝(Data Mining)


- 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용한 정보를 발견하기 위한 기법


1) 기법

- 연관(Association) : 연관 관계를 발견하기 위한 기법

- 연속(Sequence) : 트랜잭션 데이터를 시계열적으로 분석해 트랜잭션의 향후 발생 가능성 예측

- 분류(Classification) : 다른 그룹과의 차별적 특성 도출

- 클러스터링(Clustering) : 유사한 특성을 갖는 데이터를 집단화

- 특성화(Characterization) : 데이터 요약 과정을 통해 특성 발견

- 패턴 분석(Pattern Analysis) : 명시된 패턴을 찾는 방법

- 경향 분석(Trend Analysis) : 동적으로 변화하는 데이터 분석


7. OLAP(Online Analytical Processing)


- 다차원으로 이루어진 데이터로부터 통계적 요약 정보를 분석해 의사 결정에 활용하는 방식

- 데이터 웨어하우스, 데이터 마트 시스템과 상호 연관되는 정보 시스템

- 데이터 웨어하우스의 데이터를 전략적인 정보로 변환

- 중간 매개체없이 이용자들이 직접 컴퓨터를 이용해 데이터 접근하는데 필수적인 시스템


1) 연산

- Roll-up : 계층 구조를 따라 상세 데이터부터 요약된 형태의 데이터로 접근

- Drill-down : 계층 구조를 따라 요약된 형태의 데이터부터 상세 데이터로 접근

- Driil-through : 데이터 웨어하우스나 OLTP에 존재하는 상세 데이터 접근

- Drill-across : 다른 데이터 큐브의 데이터에 접근

- Pivoting : 보고서의 행, 열, 페이지 차원을 바꾸어 볼 수 있는 기능

- Slicing : 다차원 데이터 항목들을 다양한 각도에서 조회하고 자유롭게 비교하는 기능

- Dicing : Slicing을 더 세분화하는 기능


2) 종류

- ROLAP(Relational OLAP)

-> 관계형 데이터베이스와 관계형 질의어를 사용해 다차원 데이터를 분석하고 저장

- MOLAP(Multi-dimension OLAP)

-> 다차원 데이터를 저장하기 위해 특수한 구조의 다차원 DB 이용

-> 데이터 검색 속도를 향상시키기 위해 큐브 캐시라고 하는 주 기억장치 속에 데이터 큐브 보관

- HOLAP(Hybrid OLAP)

-> ROLAP와 MOLAP의 특성을 모두 가지고 있음

-> 빠른 검색이 필요한 경우, 요약을 메모리에 저장하고 기본 데이터나 다른 요약들은 관계형 데이터베이스 이용



8. OLTP(Online Transaction Processing)


- 온라인 업무 처리 형태의 하나로 네트워크 상에서 여러 사용자가 실시간으로 DB의 데이터를 검색하거나 갱신하는 등 단위 작업(트랜잭션)을 처리하는 방식

- 빠른 응답 시간 요구

- 각 레코드를 효율적으로 조치하고 수정할 수 있도록 정규화 되어있음 



9. ODBC(Open DataBase Connectivity)


- 프로그램과 데이터베이스 종류와 상관없이 자유롭게 DB에 접근하여 사용할 수 있도록 MS가 만든 API

- 사용자는 ODBC 기준에 맞게 프로그램을 작성하기만 하면 됨

- 여러 종류의 DB를 함께 사용 가능

- DB를 교체하더라도 응용 프로그램을 그대로 사용 가능


1) 구조

- Application

-> DB 접속 시, ODBC API 사용

- Driver Manager

-> Application과 ODBC Driver간 통신 관리 라이브러리

-> DSN에 정의된 형태로 필요한 드라이버 로딩/언로딩

- DSN(Domain Service Name)

-> 서버에 연결할 때 필요한 드라이버와 DB 정보 저장

- ODBC Driver

-> ODBC API가 지원하는 함수를 구현한 라이브러리

- Database

-> ODBC Driver에서 요청한 쿼리 처리



Comments