IT 자격증/정보처리 기사 실기

정보처리기사 실기_데이터베이스 요약 정리

H.J.World 2015. 4. 30. 16:47
728x90
반응형

1. 데이터 베이스의 개념
 1). 특정 조직의 업무를 수행하는데 있어 필요한 상호 관련된 데이터들의 모임
 - Integrated data(통합 데이터) -> 중복을 최소화
 - Stored Data(저장 데이터) -> 컴퓨터가 접근 가능한 저장 메체에 저장된 데이터
 - Operational Data(운영 데이터) -> 조직의 목표를 위해 존재가치가 확실하고 반드시 필요한 데이터
 - Shared Data(공유 데이터) -> 여러 프로그램들이 공동으로 사용하는 데이터

 2). 특징
 - Real Time Accessibility(실시간 접근성)
 - Continuous Evolution(계속적인 진화)
 - Concurrent Sharing (동시 공유)
 - Content Reference (내용에 의한 참조)
 - Independence (데이터의 논리적/물리적 독립성)
 
 3). Data Language
 -DDL, DCL, DML

 4). User의 분류
 -데이터베이스 관리자(DBA)->데이터베이스를 정의하고 제어하는 사람 또는 그룹
 -데이터 관리자(DA Data Administrator) -> 조직 내에서 데이터에 대한 정의 .체계화 , 감독 및 보안 업무
 -데이터 설계자(DA Data Architect) -> 데이터의 구조를 체계적으로 정의하는 사람
 
2. DBMS(Database Management Sysrem)
 -기존 파일 시스템의 문제점
 - 데이터 종속성 : 응용프로그램과 데이터파일간의 의존적 관계
 - 데이터 중복성 : 데이터의 중복으로 일관성이 없어지고, 동등한 보안 수준과 무결성을 유지하기 힘들다

3. 스키마 (Schema)_DB의 구조와 제약 조건에 관한 전반적인 명세(Specification)
 -데이터 사전 (시스템 카탈로그;메타데이터)에 저장
 -사용자의 관점에 따라 분류
 -외부 스키마(서브 스키마)-> 사용자나 응용프로그래머가 각 개인의 입장에서 필요로하는 DB의 논리적 구조를 정의
 -개념 스키마(스키마)-> 개체 간의 관계와 제약 조건, DB의 접근 권한, 보안 정책 및 무결성 규정에 관한 명세를 정의 DBA에의해 작성됨
 - 내부 스키마 -> DB의 물리적 구조를 정의

4. 데이터 베이스 설계 _ DB 스키마를 개발하는 과정
 1) 요구조건 분석
 2) 개념설 설계
 - 개념 스키마 모델링->추상화를 통해 개념 스키마를 만드는데 entity와 relationship을 사용하는 추상화를 er-model이라함
 3) 논리적 설계
 - 컴퓨터가 이해하고 처리할 수 있는 특정 DBMS가 지원가능한 논리적 데이터 구조로 변환
 - 즉, 논리스키미 생성과정
 - 관계형 DBMS의 경우에는 ER-model 을 relation schema로 변환
 - 트렌젝션의 전체적인 골격을 개발하고 인터페이스를 정의한ㄷ.
 4) 물리적 설계
 - 물리 스키마를 작성
 - DB 파일에 대한 저장 구조와 접근 경로를 결정
 5) 데이터 베이스 구현
 - 해당  DBMS의 DDL을 통해 구축

5. ER Model
 - 대표적인 개념적 데이터 모델로써 Entity, Relationship, Attribute를 도형화 하여 표면

6. Relationship Data Model
 - Relation : 이차원의 테이블로써 데이터를 표현하는 수단
 - Attribute : relation의 columns
 - Tuple : Relation의 Rows
 - Domain : 하나의 Attribute가 가질 수 있는 Type의 값들의 집합
 - Degree : Relation의 Attribute 개수
 - Cardinality : Relation의 Tuple 개수

-> 논리적 설계에서 개념적 데이터 모델인 ER-model을 Relationship data model로 변환 (mapping rule)

7. Key

- Super Key
 ->Attribute의 집합으로 구성된 Key / 유일성 O / 최소성 X
- Candidate Key
 ->Tuple을 유일하게 식별하기 위해 사용되는 Attribute의 부분집합 / 유일성 O / 최소성 O
-Primary Key
 ->Candidate Key 中, 선정된 Key / 중복된 값 X / Not Null / 유일성 O / 최소성 O
-Alternate Key
 ->Candidate Key 中, Primary Key를 뺀 나머지 Key들 / 유일성 O / 최소성 O
-Foreign Key
 ->다른 Relation의 Primary Key를 참조하는 Attribute(들) / 중복된 값 X / Not Null / 유일성 O / 최소성 O

8. 무결성 (Integrity)
 DB에 저장된 데이터 값과 실제 값이 일치하는 정확성
 -무결성 제약 조건
 - NULL 무결성
 - 고유 무결성
 - 도메인 무결성
 - key 무결성
 - 관계 무결성
 - 참조 무결성
 - 개체 무결성

9. 관계대수 (Relational Algebra)
 관계형 DB에서 원하는 정보와 그 정보를 어떻게 유도하는지를 기술하는 절차적인 언어
 - 순수 관계 연산자
 - Select -> 조건에 만족하는 tuple의 부분 집합으로 realtion을 만듬
  - project -> 주어진 Attribute 값만을 추출하여 reation을 만듬, 파이
 - join -> 공동의 attribute를 중심으로 2개의 Relration을 하나로 합쳐서 새로은 릴레이션을 만듬
 교차곱 후 셀렉트연산과 같음
 =세타조인에서 중복 제거한게 자연 조인
 - division -> 나누기 기호

 - 일반 집합 연산자
 -Union
 -Intersection
 -Difference
 -cartensian product

10. 관계해석 (Reltational Calculus)
 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어 tuple관계해석과 damain관계해석이 있다.

11. SQL
 1) DDL - Create , Alter, Drop
 - CREATE DOMAIN 도메인이름 데이터타입
 [DEFAULT 기본값] [CONSTRAINT [제약조건명] CHECK (범위값)];
  - Roreign key <-> references
 2) DML - Select , Join , insert , delete , update
  -join
 --> inner join
  -> equi join : 공통 속성끼리 비교에 의해 같은 값을 가지는 행을 연결
  -> non-equi join
 --> outer join :join  조건 절에 만족하지 않는 튜플도 결과로 출력하기 위해
  ->left outer
  ->right outer
  ->full outer
 3) DCl : 데이터의 보안 , 무결성 회복, 병행제어
 
 - commit to
 - rollback on

12. view
 -기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입, 삭제, 갱신이 가능
 - 정의된 뷰는 다른 뷰를 정의하는데 기초가 될 수 있다.
 - 둘 이상의 테이블에서 유도된 뷰는 변경 안됨
 
13. Enbeded SQL_응용 p/g에서 sql문을 내포해서 실행되도록 호스트 p/g 에 삽입한 sql
 begin
 end
open
fetch
close

14. stored procedure_ sql문을 저장해놓고 불러옴

15. 이상(Anomaly) : 테이블의 일부 속성들이 종속으로인해 데이터 중복이 발생하고 이로 인해 테이블 조작 시 문제 발생하는 현상
- 삽입 이상(Insert Anomaly) : 데이터 삽입할 때 의도와 상관없이 원치 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상(Delete Anomaly) : 한 튜플을 삭제할 때 의도와 상관없는 값들도 삭제되는, 연쇄 삭제가 발생하는 현상
- 갱신 이상(Update Anomaly) : 튜플에 있는 속성 값을 갱신할 때 일부 튜플 정보만 갱신되어 정보에 불일치성이 생기는 현상
※ 원인 : 여러가지 종류의 사실들(값들)을 하나의 릴레이션에 표현하기 때문
※ 해결 : 속성들 간의 종속성을 분석해서, 하나의 종속성은 하나의 릴레이션에 표현되도록 분해. 이를 정규화라고한다.

16. 함수적 종속 (Functional Dependency)
 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할때
 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을때
 Y는 X에 함수적 종속 X는 결정자(Determinant), Y는 종속자(Dependent)

17. 정규화(Nomarlization)
 - 테이블의 속성들의 종속적인 관계를 이용해 테이블을 무손실 분해하는 과정으로 가능한 한 중복을 제거하여 삽입 / 삭제 / 갱신 이상의 발생 가능성을 줄이는 것이다.

 비정규 릴레이션
 ↓ 도메인이 원자값
 제 1정규형(1NF; First Nomal Form) : 테이블에 속한 모든 속성의 도메인이 원자 값(Atomic Value)임
 ↓ 부분적 함수 종속 제거
 제 2정규형(2NF) : 기본키가 아닌 모든 속성이, 기본키에 대하여 완전 함수적 종속을 만족
 ↓ 이행적 함수적 종속(Transitive Functional Dependency) 제거 -- A→B이고 B→C일때, A→C를 만족하는 관계
 제 3정규형(3NF) : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않음
 ↓ 결정자가 후보키가 아닌 함수종속 제거
 BCNF(Boyce-Codd Normal Form) 모든 결정자가 후보키
 ↓ 다치종속(MVD; Multi-Valued Dependency) 제거--테이블 R(A,B,C)에서 (A,B)→(C)도 성립하고 (A)→(C)도 성립할때 다치 종속
 제 4정규형(4NF) : 테이블 R의 다치 종속(MVD) A→→B가 존재할 경우, R의 모든 속성이 A에 함수적 종속
 ↓ 조인종속 제거
 제 5정규형(5NF or PJNF) : 테이블 R의 모든 조인 종속(JD)이 R의 후보키를 통해서만 성립
 -- 조인 종속(JD) : 테이블 R과 R의 프로젝션들을 모두 조인한 결과가 동일
 -- 여기서는 R의 프로젝션으로 R의 후보키가 온다고보면됨

18. 인덱스 _ 튜플에 빠르게 접근하기위해 설정
 - 기본인덱스 : 기본키를 위한 인덱스, 관계형 DBMS에서는 모든 기본키에 자동적으로 기본 인덱스를 생성
 - 보조 인덱스 : 기본 인덱스가 아닌 나머지
 - 클러스터 인덱스 : 인덱스 테이블의 키 값 순서와 튜플의 물리적 순서를 동일하게 유지하는 인덱스
 => 행이주 (Row Migration) - 인텍스 테이블에서 튜플의 값을 자료형 보다 크게 넣으면 해당 튜플이 뒤로 밀려나게 된다.
 
 - 종류
 -- m-원 검색트리(m-Way Search Tree ; Multiway Tree of order m)
   - 한 노드가 최대 m-1개의 키 값과 최대 m개의 서브 노드를 가진다.
  - 각 노드 안에는 포인터와 키 값들이 존재한다. 포인터의 최대 개수는 m개이고 키 값의 최대 개수는 m-1이다.
 -- B 트리(B Tree)
  - 루트도 아니고 단말 노드도 아니라면 최소 m/2, 최대 m개의 서브노드를 가진다.
  - 모든 단말 노드들은 같은 높이를 가진다.
 -- B* 트리(B* Tree)
  - 각 노드가 최소한 2/3가 채워진 상태여야 한다.
  - 한 노드가 가득차고 인접 노드가 모두 가득찰 때까지 분할을 지연시킨다.

19. 트랜잭션(Transaction) : DB에서 하나의 놀리적 기능을 수행하기 위한 일련의 연산 집합. 작업의 논리적 단위
 - COMMIT : 하나의 트랜잭션이 정상적으로 종료될 경우 수행되는 연산
 - ROLLBACK : 하나의 트랜잭션이 비정상적으로 종료될 경우 수행되는 연산
 - 특징(ACID)
 -- 원자성(Atomicity) : 트랜잭션의 연산은 DB에 모두 반영되든지 전혀 반영되지 않던지 둘 중 하나
 -- 일관성(Consistency) : 시스템이 가지고 있는 고정적인 요소는 트랜잭션의 연산이 끝나도 동일
 -- 독립성(Isolation) : 한 트랜잭션이 데이터를 갱신하는 동안 다른 트랜잭션들은 접근하지 못한다.
 -- 영속성(Durability) : 트랜잭션이 완료된 후에는 시스템 오류가 발생해도 트랜잭션에 의해 변경된 내용은 보존됨

20. 회복(Recovery) : 트랜잭션 실행 도중 장애가 발생해 DB각 손상되었을 경우 다시 복구하는 작업
 - 장애의 유형
 -- 실행 장애(Action Failure) : 사용자의 실수 / 무결성 규칙 위반 등으로 질의 실행이 실패
 -- 트랜잭션 장애(Transaction Failure) : 비정상적인 상황으로 인해 트랜잭션 실행이 중지
 -- 시스템 장애(System Failure) : DB에는 손상을 입히지 않으나 H/W의 오동작, 정전 등에 의해 모든 트랜잭션이 실행 불가
 -- 미디어 장애(Media Failure) : 저장장치의 손상 / 오동작으로 DB의 일부 또는 전부가 물리적으로 손상되는 현상

 - 회복 관리기(Recovery Manager)
 -- Log / Memory Dump 등을 이용항 회복을 수행하는 DBMS의 핵심 구성요소
 -- 트랜잭션이 성공적으로 완료 되지 않았으면, Log를 이용해 트랜잭션이 DB의 모든 변화를 취소(Undo)해서 회복
 -- 트랜잭션이 성공적으로 완료 되었으나 디스크에 반영되지 않았을 경우, Log를 이용해 재작업(Redo)를 수행
  --- Commit만 하지 못했다는 의미; 부분 완료(Partially Committed)라고 한다
  ※ Commit을 수행 했고 장애가 생기면 Redo / 아니면 Undo
 - 회복 기법
 -- 연기 갱신(Differed Update) 기법
  --- 트랜잭션이 성공적으로 종료될 때까지 DB에 대한 실질적인 갱신 연기
  --- 실행되는 동안 변경된 내용은 Log에 보관 / 부분완료 시점에 Log로 DB에 반영
  --- 애초에 DB에 적용을 안하기에 장애가 생겨도 Redo 작업만 하면된다.
 -- 즉각 갱신(Immediate Update) 기법
  --- 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 바로 DB에 반영
  --- 장애를 대비해 모든 변경내용 Log에 저장
  --- Redo와 Undo 모두 수행
 -- 그림자 페이지(Shadow Paging) 기법
  --- 갱신 이전의 DB를 페이지(Page)단위로 구성해 카피해놓고, 실제 페이지를 대상으로 트랜잭션에 대한 변경작업 반영
  --- 장애생겨서 Rollback할 때, 해당 페이지만 복구
  --- Log와 Redo, Undo 모두 필요 없다.
 -- 검사점(Check Point) 기법
  --- Redo / Undo를 위해 Log 전체를 조사하는 걸 피하기 위한 기법
  --- 트랜잭션 실행중 주기적으로 변경 내용이나 상황과 검사점을 같이 Log에 저장한다.
  --- 장애 발생시, 전체 Log 조회가 아니라 가장 최근 검사점으로 회복 작업 수행
 -- 미디어 회복(Media Recovery) 기법
  --- DB의 내용을 주기적으로 안전한 스토리지에 덤프
  --- 장애 발생시, 가장 최근의 덤프를 디스크에 적재하고, Log를 이용해 최근의 트랜잭션에 대해 Redo

21. 병행 제어(Concurrency Control)
 - 동시에 다수의 트랜잭션을 수행할때, DB의일관성 파괴않도록 트랜잭션 끼리 상호작용을 제어 하는 기술
 - 병행성 : 다수의 트랜잭션들이 동시에 인터리빙(Interleaving)하게 실행되는 것
 - 목적
 -- DB의 공유를 최대화
 -- 시스템 활용도 최대화
 -- 사용자에 대한 응답 시간 최소화
 -- 단위 시간당 트랜잭션 처리 건수 최대화
 -- DB의 일관성 유지

 - 병행 제어 없으면 생기는 문제점
 -- 갱신 분실(Lost Update) : 다수의 트랜잭션이 같은 데이터를 공유, 갱신할 때 갱신 결과의 일부가 분실됨
 -- 모순성(Inconsistency; 불일치성) : 다수의 사용자가 동시에 같은 데이터를 갱신할 때, DB 내의 데이터들이 불일치
 -- 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 하나가 Rollback하는 경우, 다른 트랜잭션도 Rollback

 - 잠금(Lock) : DB관리 방법. 하나의 트랜잭션이 사용하는 데이터에 다른 트랜잭션이 접근 못하게 하는 것
 -- 트랜잭션들은 어떤 데이터에 접근하기 전에 잠금을 요청하여 허락받아야한다.
 -- 데이터 갱신 과정 : 잠금(Lock) → 실행(Excute) → 해제(Unlock)
 -- 잠금 단위
  --- 병행 제어에서 한 번에 잠금할 수 있는 단위로 DB, 테이블, 레코드, 필드 등이 사용될 수 있다.
  --- 단위가 커지면 Locking Overhead는 감소하지만 공유성은 낮아진다.
  --- 단위가 작아지만 Locking Overhead는 증가하지만 공유성은 높아진다.
 -- 교착 상태(Dead Lock)
 -- 공유잠금(Shared-Lock) : 다른 트랜잭션은 읽기만 가능
 -- 배타 잠금(Exclusive-Lock) : 다른 트랜잭셔은 읽기/쓰기 불가능

 - 병행 제어 기법의 종류
 -- 2-단계 잠금 규약(Two-Phase Lock Porotocol) 기법
  --- 트랜잭션 스케쥴(Transaction Schedule)의 직렬성을 보장하는 대표적인 잠금 기법
     ※ 트랜잭션 스케줄(Transaction Schedule) : 트랜잭션들이 인터리빙하게 실행될때 그 순서.
     ※ 직렬 스케줄 : 트랜잭션 사이에 인터리빙이 없다.
  --- 모든 트랜잭션들은 잠금과 잠금해제를 다음과 같이 2단계로 수행한다.
   ---- 확장(Growing) 단계 : 트랜잭션이 잠금만 가능하고 해제는 불가능한 단계
   ---- 축소(Shrinking) 단계 : 트랜잭션이 잠금 해제만 가능하고 잠금은 불가능한 단계
  --- 스케줄의 직렬성을 보장한다는 장점은 있지만 교착 상태는 예방할 수 없다는 단점
 -- 타임 스탬프 순서(Time Stamp Ordering) 기법
  --- 타임 스탬프 : 시스템이 각 트랜잭션을 실행할 때 부여하는 값(트랜잭션이 발생할때의 시스템 시간 값)
  --- 트랜잭션 스케줄의 결과와 직렬 스케줄의 결과가 동일함을 보장하는 기법
  --- 직렬성 순서를 결정하기 위해, 트랜잭션 간의 실행 순서를 미리 결정하는 기법으로 가장 보편적인 방법
  --- 트랜잭션을 실행하기전에 타임 스탬프를 부여하고, 그 순서에 따라 트랜잭션을 수행한다
  --- 교착 상태가 발생하지 않는다.

22. 튜닝(Tuning)
- DB의 환경 등을 조정해 DBMS의 성능을 향상시키는 작업
- DBMS의 높은 작업 처리량과 짧은 응답 시간을 갖도록 하는 것이 중요
- 목표
 -- DB에 접근하는 SQL문 실행시, 디스크 블록에 대한 접근 횟수 최소화
 -- 디스크 블록에서 한번 읽어온 데이터는 가능한 한 메모리 영역에 보관하여, 신속한 재사용(캐시(Cache) 용량의 확보)
 -- 모든 SQL문은 공유가 가능하도록, 작성 규칙을 준수하여 작성
 -- 다수의 사용자가 자원을 안정적으로 사용하게끔 잠금 기능을 최소화 한다.
- 튜닝의 단계
 -- 비즈니스 규칙(Business Rule) 튜닝
  --- 시스템 설계와 구현에 대한 부정확한 분석과 부적절한 비즈니스 규칙
 -- 데이터 설계(Data Design) 튜닝
  --- 구현된 어플리케에시녀이 필요한 데이터가 무엇인지 정확하게 파악
  --- 데이터 간의 관계와 속성을 명확히하고 정보의 구조화 작업을 수행
 -- 응용 프로그램 설계(Application Degin) 튜닝
  --- 튜닝을 필요로 하는 대상 프로그램을 선정
 -- 데이터베이스의 논리적 구조(Logical Structure) 튜닝
  --- 부하가 예상되는 질의와 갱신을 고려해서 스키마를 작성
 -- 데이터베이스 접근 방식(Access Method) 튜닝
  --- SQL의 장점과 응용프로그램의 작업 처리를 최대화 하기 위해 DBMS의 기능을 충분히 활용한다.
 -- 접근 경로(Access Path) 튜닝
  --- 효과적인 데이터 접근을 위해 B-트리 인덱스 / 비트맵 인덱스 / 역방향 인덱스 등의 사용을 고려
  --- 인덱스의 추가 및 삭제와 설계의 개선도 고려
 -- 메모리 관리(Memory Management) 튜닝
  --- 메모리 자원을 효율적 할당하고 캐시의 성능을 개선, SQL문의 파싱 작업을 감소시킨다.
 -- 물리적 구조(Physical Structure) 및 입/출력(Input/Output) 튜닝
  --- 접근 비용을 최소화 하기위해 데이터 블럭 운영을 고려
  --- 디스크 간의 데이터를 분산해서 디스크의 입/출력 경합을 감소시킨다
 -- 자원의 경합(Competition) 튜닝
  --- 공유 풀(Shared Pool), 잠금(Lock) 등의 경합 형태를 감소시키기 위한 노력 수행
 -- H/W 시스템에 특화된 부분의 튜닝
  --- DB는 사용되는 H/W 시스템 종류와 특성에 따라 성능의 차이가 나므로 이에 맞게 튜닝한다

- 인덱스 튜닝(접근 경로에 대한 튜닝)
 -- 인덱스의 종류
  --- B-트리 인덱스
   ---- 일반적으로 사용되는 인덱싱 방식
   ---- 데이터 양에 상관없이 모든 데이터 인덱스 탐색 시간이 동일
  --- 비트맵 인덱스
   ---- 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용
   ---- 분포도가 좋은 컬럼에 적합하다. Bit로 구성되기에 효율적인 논리 연산 기능
   ---- 저장 공간이 작다
  --- 역방향 인덱스
   ---- 인덱스 컬럼의 데이터를 역으로 변환하여 인덱스 키로 사용하는 방법
   ---- B-트리 인덱스에서 발생할 수 있는 불균형 문제를 해결
   ---- 데이터의 분포도가 좋아져 검색 성능이 좋다.
  --- 클러스터드 인덱스(Clustered Index)
   ---- 인덱스 키의 순서에 따라 데이터가 정렬되어 있는 방식
   ---- 데이터가 정렬되어 있기에 인덱스를 검색안해도 데이터를 빠르게 찾을 수 있다
   ---- 데이터 삽입/삭제 발생 시 데이터를 재정렬해야 한다.
   ---- 한 개의 릴레이션에 하나의 인덱스만 생성가능
  --- 넌클러스터드 인덱스(Non-Clustered Index)
   ---- 인덱스 키만 정렬되어 있고, 데이터는 정렬되지 않는 방식
   ---- 데이터 검색위해, 인덱스를 검색해야 하기에 클러스터드 인덱스에 비해 검색 속도 떨어진다.
   ---- 한 개의 릴레이션에 여러 개의 인덱스 생성가능
 -- 인덱스 선정 기준
  --- 분포도(선택성)가 좋은 컬럼은 단독으로 인덱스를 생성
  --- 데이터의 변경이 적은 컬럼에 인덱스를 생성
  --- 인덱스들이 자주 조합될때는 결합 인덱스(Concatenate Index)를 생성
   ---- 결합 인덱스의 컬럼 순서는 데이터의 분포도(수치상 낮은거)가 좋은 컬럼을 선행컬럼으로
   ---- 분포도(선택성)가 좋다? : 같은 키 값을 가지는 튜플의 수가 적다.;
 -- 인덱스를 사용하지 못하는 경우
  --- 인덱스 키 생성 시 NULL 값은 인덱스 대상에 포함되지 않아서, IS NULL, IS NOT NULL을 사용하면 인덱스 사용 불가
  --- <>, !=, NOT 등의 부정 연산자는 다수의 데이터를 검색하므로 인덱스를 이용 불가
  --- LIKE '%A'와 같은 경우에는, 처음 부터 다 검색하게 된다.
  --- 인덱스 컬럼에 함수나 수식을 사용하면 인덱스 키값이 변형되어 인덱스로 사용 불가


22. 객체 지향 데이터베이스(ODB; Object-oriented Database)
- 객체 지향 데이터베이스의 구성
 -- 객체와 객체 식별자(OID; Object IDentifier)
 -- 속성(Attribute)과 메소드(Method)
 -- 클래스(Class)와 인스턴스(Insttance)
 -- 상속(Inheritance)
 -- 오버로딩(Overloading)과 오버라이딩(Overriding)

- 객체 관계 데이터베이스(ORDB; Object Relational Database)
 -- 관계형 데이터베이스에 객체 지향 데이터베이스의 개념을 추가한 데이터베이스
 -- 특징
  --- 객체 관계 데이터베이스를 위한 데이터 언어 표준으로 ISO에서 제시한 SQL3
  --- 확장 가능 데이터 타입 / 사용자 정의 데이터 타입 / 사용자 정의 함수 / 등을 지원
   ---- 텍스트파일이나 그래픽 파일 같이 대용량의 데이터 저장을 위해 LOB(Large OBject) 타입이 있다
    ----- 가변 길이 문자 스트링(CLOB) / 가변길이 이진 스트링(BLOB)

 

23. 고급 데이터베이스

- 분산 데이터베이스(Distributed Database)
  -- 논리적으로 같은 시스템에 속하지만, 물리적으로는 분산되어있는 데이터베이스
  -- 분산 데이터베이스 시스템의 구성요소
     --- 분산 처리기 : 지리적으로 분산되어있는 컴퓨터 시스템, 자체 처리 능력을 가진다.
     --- 분산 데이터베이스 : 지리적으로 분산되어있는 데이터베이스
     --- 통신 네트워크 : 분산 처리기들을 통신망으로 연결해 하나의 시스템처럼 작동할 수 있는 네트워크
  -- 목표
     --- 위치 투명성(Location Transparency) : 접근하려는 DB의 실제 위치를 알 필요없다.
     --- 중복 투명성(Replication Transparency) : 데이터가 여러 곳에 중복되어도 하나의 데이터만 존재하는 것처럼 사용
     --- 병행 투명성(Concurrency Transparency) : 다수의 트랜잭션들이 동시에 수행되어도 서로 영향을 X
     --- 장애 투명성(Failure Transparency) : 각종 장애에도 불구하고 트랜잭션은 정확하게 수행된다.
- 멀티미디어 데이터베이스(Multimedia Database)
  -- 텍스트/그래픽/정지화상/동영상/음성 등이 복합적으로 구성된 데이터베이스
- 주기억장치 데이터베이스(Main Memory Database)
  -- 데이터베이스 전체를 주기억장치에 상주시킨 후, 데이터베이스 연산을 수행하는 시스템 ; 디스크 I/O가 발생하지 X
- 데이터 웨어하우스(Data Warehouse)
  -- 다량의 데이터를 효과적으로 분석하여 정보화 하고, 이를 계층의 사용자가 효율적으로 사용하도록 한 데이터베이스
  -- 다양한 원본 DB로부터 정제되어 추출된 데이터만을 저장하고 필요한 인덱스를 생성
  -- 재빠르고 정확한 의사결정을 도와준다.
- 데이터 마트(Data Mart)
  -- 전사적으로 구축된 데이터 웨어하우스로부터, 특정 주제나 부서 중심으로 구성된 단일 주제의 데이터 웨어하우스
- 데이터 마이닝(Data Mining)
  -- 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
  -- 기법 종류
     --- 연관
     --- 연속
     --- 분류
     --- 클러스터링
     --- 특성화
     --- 패턴분석
     --- 경향 분석
- OLAP(Online Analytical Processing)
  -- 다차원으로 이루어진 데이터로부터, 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식
  -- 데이터 웨어하우스, 데이터 마트 같은 시스템과 상홍 연관되는 시스템
  -- 데이터 웨어하우스의 데이터를 전략적인 정보로 변환시키는 역할
  -- 중간 매개체 없이 이용자들이 직접 컴퓨터를 이용해 데이터에 접근하는데 있어서 필수적인 시스템
  -- OLAP 연산
     --- Roll-up : 더 요약된 정보보기
     --- Drill-down : 더 구체적인 정보보기
     --- Pivoting : 보고서의 행/열/페이지 차원을 바꾸어 보는 기능
     --- Slicing/Dicing : 다차원 데이터 항목들을 다양한 각도에서 조회하고 자유롭게 비교
  -- OLAP 종류
     --- ROLAP(Relational-OLAP) : 관계형 데이터베이스와 관계형 질의어를 사용하여 다차원 데이터를 저장하고 분석
     --- MOLAP(Multi-dimension OLAP)
        ---- 다차원 데이터를 저장하기 위해 특수한 구조의 다차원 데이터베이스를 사용한다
        ---- 검색 속도를 위해 큐브 캐시(Cube Cache)라고 하는 주기억장치 속에 데이터 큐브를 저장한다.
        ----- 데이터 큐브(Data Cube) ; 데이터가 여러 차원으로 모델링 되는 것으로 차원과 사실로 정의된다
     --- HOLAP(Hybrid OLAP)
        ---- ROLAP과 MOLAP의 특성을 모두 가지고 있다.
        ---- 빠른 검색을 필요할때는 요약을 메모리에 저장하고 다른건 관계형 데이터베이스에 저장
- OLTP(Online Transaction Processing)
  -- 온라인 업무 처리 형태의 하나. 네트워크 상에서 다수의 유저가 DB의 데이터를 갱신/검색하는 트랜잭션을 처리하는 방식
  -- OLTP 시스템은 일반적으로 빠른 응답 시간을 요구 하며, 개개의 레코드를 효율적으로 조회하고 수정할 수 있도록 정규화

★ OLAP와 OLTP의 비교
 -- 데이터의 구조
  OLAP(복잡) OLTP(단순)
 -- 데이터의 갱신
  OLAP(순간적/동적) OLTP(주기적/동적)
 -- 응답 시간
  OLAP(2초이내) OLTP(수 초~몇 분)
 -- 데이터범위
  OLAP(과거 30일~90일) OLTP(과거 5년~10년)
 -- 데이터 성격
  OLAP(정규/핵심업무데이터/변경어렵다) OLTP(비정규/읽기전용/변경용이)
 -- 데이터 크기
  OLAP(수 GB) OLTP(수 TB)
 -- 데이터의 내용
  OLAP(상세 데이터) OLTP(기록 보관된 요약/계산 데이터)
 -- 데이터의 사용법
  OLAP(고도로 구조화된 연속 처리) OLTP(고도로 비구조화된 분석처리)

- ODBC(Open Database Connectivity)
 -- 프로그램과 데이터베이스의 종류에 관계없이 자유롭게 사용할 수 있도록 MS에서만든 API
 -- 구조상 데이터베이스 바로위에 ODBC가 위치한다
 -- 구조
  --- Application : 프로그램; ODBC API를 이용해 데이터베이스에 접근함
  --- Driver Manager : Application과 ODBC Driver 간의 통신을 관리하는 라이브러리
  --- DSN(Domain Service Name) : 서버에 연결할때 필요한 드라이버와 데이터베이스 정보를 저장
  --- ODBC Driver : ODBC API가 지원하는 함수를 구현하는 라이브러리
  --- Database

 

728x90
반응형