가자공부하러!

데이터베이스(7) - 기타 실무 응용(시스템 카탈로그, 인덱스, 트랜잭션, 회복) 본문

공부/정보처리기사(실기)

데이터베이스(7) - 기타 실무 응용(시스템 카탈로그, 인덱스, 트랜잭션, 회복)

오피스엑소더스 2019. 6. 1. 11:25


1. 시스템 카탈로그

2. 인덱스

3. 트랜잭션

4. 회복(Recovery)

5. 병행 제어(Concurrency Control)

6. 보안(Security)

7. 튜닝(Tuning)

8. 객체 지향 데이터베이스

9. 고급 데이터베이스




1. 기타 실무 응용 - 시스템 카탈로그


1. 시스템 카탈로그(System Catalog)의 개념

  > DBA 도구의 일종으로, DB에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수혹되어 있는 시스템 테이블이다.

  > 데이터 사전(Data Dictionary)이라고도 한다.

  > DDL(Data Definition Language)의 결과로 구성되는 기본 릴레이션, 인덱스, 뷰 등의 DB구조 및 통계 정보가 저장됨

  > SC에 저장된 내용들을 메타데이터(Metadata)라고 한다.

  > 사용자와 DBA시스템이 접근할 수 있다.


2. 시스템 카탈로그의 내용

  > 릴레이션 관련 정보

- 릴레이션의 이름

- 릴레이션이 저장된 파일 이름과 파일 구조

- 릴레이션의 속성들에 대한 속성 이름과 타입(또는 도메인)

- 릴레이션에 대해 정의된 각 인덱스의 이름

- 릴레이션에 대해 정의된 무결성 제약 조건

  > 인덱스 관련 정보

- 인덱스의 이름

- 인덱스의 구조

- 인덱스 키에 대한 정보

  > 뷰 관련 정보

- 뷰의 이름

- 뷰의 정의

- 뷰의 소유자

  > 통계 관련 정보

- 릴레이션 카디널리티(Cardinality) : 각 릴레이션에 저장된 레코드의 수

- 인덱스 카디널리티 : 각 인덱스에 저장된 레코드의 수

- 인덱스의 높이 : 각 트리 인덱스에 대한 레벨

- 인덱스의 범위 : 각 인덱스에 대한 최소 키 값과 최대 키 값

  > 사용자 관련 정보

- 사용자의 계정(Account) 정보

- 사용자의 권한 정보


3. 시스템 카탈로그의 특징

  > 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있기 때문에 SQL문을 이용하여 내용을 검색할 수 있다.

  > DBMS에 의해 생성되고 유지된다.

  > 시스템 카탈로그의 갱신

- 사용자가 SQL문을 통해 테이블, 뷰 등을 변경하면 DBMS는 자동으로 SC를 갱신한다.

- 사용자가 직접 SQL문으로 SC를 갱신할 수 없다.

  > 분산 시스템에서의 시스템 카탈로그

- 보통의 릴레이션, 인덱스 등의 정보를 포함 + 위치 투명성, 중복 투명성을 위해 필요한 제어 정보 포함

- 위치 투명성 : 접근하려는 DB의 물리적 위치를 알지 못해도 DB의 논리적 명칭만으로 접근할 수 있는 특징

- 중복 투명성 : 동일 데이터가 여러 곳에 중복되어 있더라고 사용자는 마치 하나만 존재하는 것 처럼 사용

ㄴ 시스템은 자동으로 여러 데이터에 대한 작업을 수행


4. 시스템 카탈로그의 구성 요소

  > SYSOBJECTS

- 사용자 릴레이션, 뷰, 제약 조건, 규칙, 저장 프로시저 등 DB에서 만들어진 각 개체에 관한 정보를 한 행으로 관리

- 개체명, 소유자, 개체종류, 생성일 등으로 구성

  > SYSCOLUMNS

- 시스템 내 모든 테이블에 대헤 각 테이블이 가지고 있는 모든 열에 대한 정보를 한 행으로 관리

- 속성명, 테이블명, 소유자, 속성타입, 자릿수 등으로 구성

  > SYSINDEXES

- 시스템 내 모든 인덱스에 대한 정보를 한 행으로 관리

- 인덱스명, 테이블명, 속성수, 튜플수 등으로 구성

  > SYSVIEWS

- 시스템 내 모든 뷰에 대한 정보를 한 행으로 관리

- 뷰명, 소유자, 뷰명령문 등으로 구성 별로 안중요한 내용인 듯 한데 이렇게 귀찮게 굴거면 다써놓지 등은 뭐람

  > SYSUSERS

- 해당 DB를 사용할 수 있는 사용자와 그룹에 관한 정보를 한 행으로 관리

- 사용자ID, 사용자명, 그룹명, 생성일 등으로 구성

  > SYSPROTECTS

- DB계정에 적용된 사용자 권한에 관한 정보를 한 행으로 관리

- SYSPROTECTS는 개체명, 사용자ID, 권한, 보호타입 등으로 구성


  > SELECT문을 활용한 시스템 카탈로그 조회 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--SYSOBJECTS
SELECT 개체명, 소유자, 개체종류, 생성일 FROM SYSOBJECTS;
 
--SYSCOLUMNS
SELECT 속성명, 테이블명, 소유자, 속성타입, 자릿수 FROM SYSCOLUMNS;
 
--SYSINDEXES
SELECT 인덱스명, 테이블명, 속성수, 튜플수 FROM SYSINDEXES;
 
--SYSVIEWS
SELECT 뷰명, 소유자, 뷰명령문 FROM SYSVIEWS;
 
--SYSUSERS
SELECT 사용자ID, 사용자명, 그룹명, 생성일 FROM SYSUSERS;
 
--SYSPROTECTS
SELECT 개체명, 사용자ID, 권하느, 보호타입 FROM SYSPROTECTS;
cs

2. 기타 실무 응용 - 인덱스


1. 인덱스(Index)의 개념

  > <키 값, 포인터> 쌍으로 구성된 데이터 구조

- 목적 : 데이터 레코드(튜플)에 빠르게 접근하기 위함

- 키 값 : 데이터 테이블의 키

- 포인터 : 키 값이 저장된 레코드의 물리적인 주소

  > 인덱스가 없으면 (FULL)TABLE SCAN이 발생하여 비효율 초래

  > 구분 : 기본키를 위한 인덱스라면? 기본 인덱스, 아니면? 보조 인덱스

- 대부분 관계형DBMS는 모든 기본키에 대해 자동적으로 기본 인덱스 생성

  > 클러스터드 인덱스(Clustered Index)

- 레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 인덱스

  > 대표적인 인덱스

- m-원 검색 트리, B-트리, B*-트리, B+-트리


2. m-원 검색 트리(m-Way Search Tree)

  > 한 노드가 1개의 키 값과 2개의 서브 노드를 갖는 이진 검색 트리를 일반화한 트리

  > 한 노드가 최대  m-1개의 키 값과 최대 m개의 서브 노드를 갖는다.

  > 이진 검색 트리에 비해 분기율이 향상됨

- 트리 깊이가 낮아져 특정 노드에 대한 검색 시간 감소

* 분기율 : 한 노드에서 서브 트리로 가는 포인터의 개수

  > 단점 : 키의 삽입 및 삭제 시 트리의 균형을 유지하기 위해 복잡한 연산이 수반되어야 함

  > 특징 : 

- 구조 : (m), (P1, K1, A1), (P2, K2, A2) ... (Pm-1, Km-1, Am-1) (Pm)

ㄴ m : 서브 노드 수

ㄴ Pi : i번 째 서브 노드에 대한 포인터

ㄴ Ki : i번 째 키 값

ㄴ Ai : i번 째 레코드 주소

ㄴ 1<= i <= m

- 각 노드 안에 있는 키 값들은 오름차순으로 차례대로 저장

- 포인터가 가리키는 서브 노드들은 모드 m-원 검색 트리이다.

3. B-트리

  > 인덱스를 구성하는 방법으로 많이 사용되는 균형된 m-원 검색 트리이다.

  > 키 값과 레코드를 가리키는 포인터들이 트리 노드에 오름차순으로 저장된다.

  > 키의 삽입과 삭제 시 노드의 분열과 합병이 발생할 수 있다.

  > 차수가 m인 B-트리 특

- 모든 노드는 최대 m개의 서브 노드를 가진다.

- 루트 노드와 단말 노드를 제외한 모든 노드는 최소 m/2개, 최대 m개의 서브 노드를 가진다.

- 단말 노드가 아닌 노드에 있는 키 값의 수는 그 노드의 서브 노드 수 보다 하나 적다.

- 모든 단말 노드는 같은 레벨에 있다.(==루트로 부터의 거리가 같다.)

- 한 노드 안에 있는 키 값들은 오름차순을 유지한다.


4. B*-트리

  > B-트리의 변형

- 빈번한 노드의 분할을 줄이기 위해 제시됨

  > B*-트리 특

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

- 루트 노드를 제외한 모든 노드는 최소 (2m-2)/3개, 최대 m개의 서브 노드를 가짐

- 루트 노드는 그 자체가 단말 노드가 아닌 경우 적어도 2개의 서브 노드를가짐

- 단말 노드가 아닌 노드에 있는 키 값의 수는 그 노드의 서브 노드 수보다 하나 적다.

- 모든 단말 노드는 같은 레벨에 있다.

- 한 노드 안에 있는 키 값들은 오름차순을 유지한다.

아...교수냄새...왜이딴내용을..


5. B+-트리

  > B+-트리는 B-트리의 변형

- 인덱스 세트와 순차 세트로 구분됨

ㄴ 인덱스 세트(Index Set) : 단말 노드가 아닌 노드로 구성

ㄴ 키 값을 찾아갈 수 있는 경로로만 제공됨

ㄴ 순차 세트(Sequence Set) : 단말 노드로만 구성

ㄴ 해당 데이터 레코드의 주소를 참조

  > 단말 노드만을 이용한 순차 처리 가능

- 인덱스 세트에 있는 모든 키 값은 단말 노드에 다시 나타나기 때문

  > B+-트리에서의 직접 접근에는 인덱스 세트가 사용되고 순차 접근에는 순차 세트가 사용된다.

  > 차수가 m인 B+-트리 특

- 루트 노드와 단말 노드를 제외한 모든 노드는 최소 m/2개 최대 m개의 서브 노드를 가진다.

- 루트 노드는 0 또는 2에서 m개 사이의 서브 노드를 가진다.

- 단말 노드가 아닌 노드에 있는 키 값의 수는 그 노드의 서브 노드 수보다 하나 적다.

- 모든 단말 노드는 같은 레벨에 있다.

- 한 노드 안에 있는 키 값들은 오름차순을 유지한다.

- 순차 세트 내의 단말 노드들은 모두 링크로 연결되어 있다.



3. 기타 실무 응용 - 트랜잭션


1. 트랜잭션(Transaction)의 정의

  > 트랜잭션은 DB에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합이다.

- 작업의 단위이다.

  > 트랜잭션은 DBMS에서 회복 및 병행 수행 시 처리되는 작업의 논리적 단위이다.

  > COMMIT 연산 : 하나의 트랜잭션이 정상적으로 종료된 경우 수행되는 연산

- 수행된 내용을 DB에 반영하는 연산

- 트랜잭션의 완료 후 변경된 DB는 시스템에 오류가 발생하더라도 취소되지 않는다.

  > ROLLBACK 연산 : 하나의 트랜잭션이 비정상적으로 종료된 경우 수행되는 연산

- 트랜잭션이 수행한 모든 작업을 취소하고 이전 상태로 되돌리는 연산

- 할당 받았던 자원과 잠금을 모두 반환하고 재시작 또는 폐기


2. 트랜잭션의 특성

  > 데이터의 무결성을 보장하기 위한 DBMS에서 트랜잭션이 갖추어야 할 특성

  > 당연한 내용을 글로 옮긴 부분 교수ㅅㄲㄷ

  > 원자성(Atomicity)

- 트랜잭션의 연산은 DB에 모두 반영되거나 전혀 반영되지 않아야 한다.(일부 불가)

ㄴ 트랜잭션에 포함된 명령어 중 어느 하나라도 오류가 발생하면 트랙잭션 전체를 취소해야 한다.

  > 일관성(Consistency)

- 트랜잭션 수행이 성공적으로 완료되면 언제나 일관성 있는 DB상태로 변환한다.

- 시스템 고유 요소는 트랜잭션 수행 전과 수행 후의 상태가 같아야한다.

- 동시에 실행되는 트랜잭션이 없는 고립 상태에서의 트랜잭션 수행은 DB일관성을 유지해야 한다.

  > 독립성(Isolation)

- 한 트랜잭션이 데이터를 갱신하는 동안에는 해당 데이터를 다른 트랜잭션이 접근하지 못하도록 제한한다.

- 여러 트랜잭션이 동시에 수행되어도 그 결과는 순차적으로 실행된 결과와 같아야 한다.

- 여러 트랜잭션들이 동시에 실행되더라도 DBMS는 독립적인 순차실행을 보장해야 한다.

  > 영속성(Durability)

- 트랜잭션의 실행 성공 완료 후에는 시스템에 오류가 발생해도 트랜잭션에 의해 변경된 내용은 계속 보존

- 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 한다.


3. 트랜잭션의 상태

  > 활동(Active) :트랜잭션이 실행중인 상태

  > 실패(Failed) : 트랜잭션 실행 중 오류가 발생하여 중단된 상태

  > 철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태

  > 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 수행하였지만 COMMIT 연산을 실행하기 전 상태

  > 완료(Committed) : 트랜잭션이 성공적으로 완료되어 COMMIT 연산을 수행한 후의 상태


4. 기타 실무 응용 - 회복(Recovery)


1. 회복의 개념

  > 트랜잭션들을 실행하는 도중 장애(Failure)가 발생하여 DB가 손상된 경우 손상되기 이전 상태로 복구하는 작업


2. 장애의 유형

  > 실행 장애(Action Failure) 

- 사용자의 실수, 무결성 규정 위반 등 질의 실행 실패

  > 트랜잭션 장애(Transaction Failure) : 

- 트랜잭션 내부의 비정상적인 상황으로 인해 트랜잭션 실행 중지

  > 시스템 장애(System Failure) : 

- DB손상은 없지만 H/W 오동작, 정전, S/W 오류 교착상태 등에 의해 실행중이던 모든 트랜잭션들이 더 이상 실행을 계속할 수 없는 현상

  > 미디어 장애(Media Failure) : 

- 저장 장치인 디스크 블록의 손상이나 디스크 헤드 충돌 등에 의해 DB 일부 또는 전부가 물리적으로 손상


3. 회복 관리기(Recovery Manager)

  > 로그(Log), 메모리 덤프(Memory Dump) 등을 이용하여 회복 기능을 수행하는 DBMS의 핵심 구성 요소

  > 역할 : 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 DB에 생성했던 모든 변화를 취소(Undo)시켜서, 트랜잭션 실행 이전의 원래 상태로 되돌린다.

  > 트랜잭션 실행을 성공적으로 완료했으나 디스크에는 반영되지 않는 경우?

- 회복 시 로그를 이용하여 재작업(Redo) 수행


4. 회복 기법

  > 연기 갱신(Deferred Update) 기법

- 트랜잭션이 성공적으로 종료될 때 까지 DB에 대한 실질적인 갱신을 연기하는 기법

- 트랜잭션이 실행되는 동안 변경된 내용은 로그에 보관

- 트랜잭션의 부분 완료 시점에 저장된 로그를 활용하여 변경 내용을 실제 DB에 반영

- 회복 작업을 수행할 경우 Redo 작업만 수행

  > 즉각 갱신(Immediate Update) 기법

- 트랜잭션이 데이터를 변경하면 부분 완료와 관계없이 즉시 실제 DB에 반영

- 변경된 모든 내용은 로그에 보관(장애 발생으로 인해 회복작업을 수행할 경우 대비)

- 회복 작업 Redo, Undo 모두 수행

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

- 갱신 이전의 DB를 일정 크기의 페이지 단위로 구성하여 별도의 복사본으로 보관하고 작업을 진행하는 기법

- ROLLBACK이 필요할 때 그림자페이지를 덮어씌워 회복

- 로그, Redo, Undo 모두 필요없다

  > 검사점(Check Point) 기법

- 시스템 장애 발생 시 Redo, Undo 수행을 위한 로그조사를 피하기 위한 기법

- 트랜잭션 실행 중에 주기적으로 변경내용이나 시스템 상황 등의 정보와 검사점을 함께 로그에 보관

- 가장 최근의 검사점으로 부터 회복 작업을 수행하여 회복 시간 단축 가능

  > 미디어 회복(Media Recovery) 기법

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

- 디스크 장애 발생 시 가장 최근의 덤프 내용을 디스크에 적재하고 해당 덤프 이후 완료된 트랜잭션 Redo


*** 트랜잭션 장애에는 무엇이 있는지?

*** 회복 기법에는 어떤 것들이 있는지?



5. 기타 실무 응용 - 병행 제어(Concurrency Control)



6. 기타 실무 응용 - 보안(Security)



7. 기타 실무 응용 - 튜닝(Tuning)



8. 기타 실무 응용 - 객체 지향 데이터베이스



9. 기타 실무 응용 - 고급 데이터베이스










맨 위로












Comments