[정처기 실기] 「2」 | 데이터베이스 구축 - (2.1) 데이터베이스 구축
[정처기 실기] 「2」 | 데이터베이스 구축 - (2.1) 데이터베이스 구축
「1」 소프트웨어 구축
> 「2」 데이터베이스 구축
「3」 운영체제
「4」 네트워크
「5」 정보보안
「6」 신기술 용어
> 1. 데이터베이스 구축
2. SQL 활용
3. 병행제어와 데이터전환
1. 데이터베이스 구축
데이터베이스 구축
데이터베이스 개념
○ 데이터와 정보
- 데이터(Data) : 관찰을 통해 수집한 값
- 정보(Information) : 데이터를 처리한 결과물
○ 데이터베이스 정의
- 공유 데이터(Shared) : 여러 사용자가 공동으로 사용하는 데이터
- 저장 데이터(Stored) : 저장 매체에 저장된 데이터
- 통합 데이터(Integrated) : 중복이 최소화된 데이터 모임
- 운영 데이터(Operational) : 조직의 목적을 위한 필수 데이터
○ 데이터베이스의 특징
- 실시간 접근성(Real Time Accessibility)
- 계속적인 변화(Continuous Evolution)
- 동시 공유(Concurrent Sharing)
- 내용에 의한 참조(Content Reference)
- 데이터의 독립성(Independence)
○ 데이터 언어
- DDL(Data Definition Language) : 구조, 제약조건 정의
- DML(Data Manipulation Language) : 데이터 처리 / 조작
- DCL(Data Control Language) : 보안, 권한, 무결성 / 병행 제어
○ 스키마(Schema) : 데이터베이스의 구조, 제약조건, 속성, 개체, 관계를 포함한 전반적인 명세를 기술
- 3계층 스키마
외부 스키마 1 | 외부 스키마 2 | 외부 스키마 3 |
----------------------------------------------------------(논리적 독립성) | ||
개념 스키마 | ||
----------------------------------------------------------(물리적 독립성) | ||
내부 스키마 | ||
데이터베이스 |
: 외부 스키마 - 여러 개 가능, 사용자가 보는 화면(뷰), 다양한 형태의 논리적 구조로 존재
: 개념 스키마 - 1개, 사용자 / 관리자 시점의 데이터베이스의 전체적인 구조, 제약조건
: 내부 스키마 - 설계자 / 개발자 시점의 실제 저장장치에서 본 스키마
: 논리적 독립성 - 개념 스키마가 바뀌어도 외부 스키마에 영향 X
: 물리적 독립성 - 내부 스키마가 바뀌어도 개념 스키마에 영향 X
데이터베이스 관리 시스템(DBMS)
○ 데이터베이스를 효과적으로 관리, 조작하기 위한 전용 소프트웨어
○ DBMS의 기능
- 데이터 정의
- 데이터 조작
- 데이터 제어
- 데이터 공유
- 데이터 보호
- 데이터 구축
- 유지보수
○ DBMS의 종류
- 계층형 : 트리 구조
- 네트워크형 : 다대다 관계 가능, CODASYL
- 관계형 : 테이블 구조의 모델
- 객체 지향형 : 객체지향 프로그래밍 개념에 기반
- 객체 관계형 : 관계형 + 객체지향 개념
- NoSQL(Not Only SQL) : 다양한 특성을 지원
- NewSQL : RDBMS와 NoSQL의 장점을 결합
데이터베이스 설계
데이터베이스 설계 개요
○ 요구 조건에서부터 데이터베이스 구조를 도출하는 과정
○ 데이터베이스 설계 시 고려사항
- 제약조건
- 데이터베이스 무결성
- 일관성
- 회복
- 보안
- 효율성
- 데이터베이스 확장성
데이터베이스 설계 단계
> 요구 조건 분석
> 개념적 설계 : 계념적 스키마 구성(ERD), 트랜잭션 모델링
> 논리적 설계
- 논리 스키마 설계
- 현실 세계의 요구사항과 목표 데이터 모델 기반 설계
- 정규화, 트랜잭션 인터페이스 설계
> 물리적 설계
- 구조 / 성능에 대한 설계
- 반정규화
- 트랜잭션 작성
> 구현
데이터 모델링
데이터 모델 개념
○ 현실 세계의 복잡한 데이터 구조를 단순화, 추상화하여 체계적으로 표현한 개념적 모형
○ 데이터 모델 구조
속성 | |||||||
↓ | ↓ | ↓ | ↓ | ||||
학번 | 이름 | 학년 | 학과 | ← | 개체 타입 | ||
개체 Set | → | 19001 | 김예소 | 2 | CD | ← | 개체 인스턴스 |
20002 | 고강민 | 1 | CD | ← | |||
19012 | 이향기 | 2 | ID | ← | |||
17032 | 김동준 | 4 | ED | ← |
○ 데이터 모델 표시해야 할 요소
- 구조(Structure) : 데이터 구조 / 개체 간 관계
- 연산(Operation) : 데이터 처리 방법
- 제약조건(Constraint) : 데이터의 논리적 제약조건
개체-관계 모델(Entity Relation Model)
○ 데이터베이스의 요구사항을 그래픽적으로 표현하는 모델
○ 개체(Entity) : 현실 세계의 독립적이고 구별 가능한 대상
- 개체 타입 : 개체를 구성하는 속성의 집합
- 개체 인스턴스 : 실제 값을 가지며 실체화된 개체
- 개체 세트 : 개체 인스턴스들의 집합
○ 속성(Attribute) : 개체나 관계의 고유한 특성을 나타내는 정보의 단위
- 단일 값 속성, 다중 값 속성, 단순 속성, 복합 속성, 유도 속성, 널 속성, 키 속성
○ 관계(Relationship) : 두 개체 간 의미 있는 연결
○ E-R 다이어그램 기호
- 개체(Entity) : 사각형
- 관계(Relationship) : 마름모
- 속성(Attribute) : 타원
- 기본키 속성 : 밑줄 타원
- 복합 속성 : 이중 타원
- 개체와 속성 연결 : 선 링크
데이터 모델의 품질 기준
○ 정확성 : 요구사항을 정확하게 반영
○ 완전성 : 요구사항이 완전하게 반영
○ 준거성 : 준수 요건들을 정확하게 준수
○ 최신성 : 현재의 시스템 상태와 최근의 이슈사항을 반영
○ 일관성 : 데이터 요소의 일관성 유지
○ 활용성 : 이해 관계자에게 의미 전달이 용이
논리 데이터베이스 설계
논리적 데이터 모델링
○ 개념적 설계 단계에서 도출된 개체, 속성, 관계를 구조적으로 표현하는 과정
데이터베이스 정규화(Normalization)
○ 관계형 데이터베이스의 설계에서 데이터 중복을 최소화하기 위한 과정
○ 정규화의 목적
- 데이터 중복 최소화
- 정보의 무손실 : 정보가 사라지지 않아야 함
- 독립적 관계는 별개의 릴레이션으로 표현
- 검색 용이성 증가
- 이상 현상 최소화
○ 이상 현상(Anomaly)
- 데이터 중복으로 인해 릴레이션 조작 시 발생하는 예기치 않은 문제점
- 이상의 종류
: 삽입 이상 - 불필요한 데이터가 함께 삽입되는 현상
: 삭제 이상 - 연쇄 삭제 현상으로 인해 정보 손실
: 갱신 이상 - 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
○ 함수적 종속(Funcional Dependency)
: 릴레이션 R의 부분집합 X, Y에서 X로 Y를 식별 가능, X에 따라 Y가 달라질 때, Y는 X에 함수적 종속(X → Y)
- 함수적 종속 관계
: 완전 함수적 종속(Full) - 종속자가 기본키에만 종속
: 부분 함수적 종속(Partial) - 기본키를 구성하는 속성 중 일부만 종속
: 이행적 함수 종속(Transitive) - X → Y, Y → Z 일 때, X → Z 가 성립
○ 정규화 과정
> 비정규 릴레이션
: 도메인이 원자값
> INF
: 부분적 함수 종속 제거
> 2NF
: 이행적 함수 종속 제거
> 3NF
: 결정자이면서 후보키 아닌 것 제거
> BCNF
: 다치 종속 제거
> 4NF
: 조인 종속성 이용
> 5NF
물리 데이터베이스 설계
물리 데이터베이스 설계 과정
> 사용자 DBMS 결정
> 데이터 타입과 크기 결정
> 데이터 용량 예측 / 업무 프로세스 분석
> 역정규화
> 인덱스 설계
> 데이터베이스 생성
반정규화
○ 성능 향상이나 개발 / 운영의 편의성을 위해 의도적으로 중복 허용하거나 데이터 재구성하는 기법
○ 반정규화 적용 순서
> 반정규화 대상 조사
> 다른 방법으로 유도
> 반정규화 수행
○ 반정규화의 유형
- 테이블 분할(수평, 수직)
- 테이블 중복(통계 테이블, 진행 테이블)
- 칼럼 기반 분할
- 칼럼 중복
데이터베이스 이중화
○ 장애에 대비하여 동일한 데이터베이스를 중복하여 관리하는 방식
○ 데이터베이스 이중화의 목적
- 장애, 재해 발생 시 빠른 서비스 재개
- 서비스의 원활한 성능 보장
○ 데이터베이스 이중화의 분류
- Eager 기법 : 트랜잭션 발생 시 즉시 반영
- Lazy 기법 : 트랜잭션 완료 후 반영
데이터베이스 백업 / 복원
○ 복구를 진행할 수 있도록 데이터를 주기적으로 복사하여 보관
- 백업 : 데이터를 복사하여 보관
- 복원 : 손상된 데이터베이스를 원래 상태로 되돌리는 과정
○ 백업(Backup) 방식
- 전체 백업(Full) : 모든 데이터를 백업
- 증분 백업(Incremental) : 변경 / 추가된 데이터만 백업
- 차등 백업(Differential) : 모든 변경 / 추가된 데이터를 백업
- 합성 백업 : 전체 백업본과 여러 개의 증분 백업 합하여 백업
○ 재난 복구 전략 시 지표
- 복구 시간 목표(RTO, Recovery Time Objective) : 복구되어 가동될 때까지 시간 목표
- 복구 시점 목표(RPO, Recovery Point Objective) : 데이터 손실을 감당할 수 있는 데이터의 양
- RP(Recovery Period) : 실제 업무 기능 복구까지 걸린 시간
- MTD(Maximum Tolerable Downtime) : 장애 시 업무가 정지 상태를 허용하는 최대 시간
데이터베이스 암호화
○ 데이터베이스 내용을 암호화하는 과정
○ 데이터베이스 암호화 방식
- API 방식 : 애플리케이션에서 수행
- Plug-in 방식 : DB 서버에 제품 설치 후 수행
- TDE 방식 : DBMS 내부의 기본 모듈로 수행
데이터베이스 물리속성 설계
파티셔닝
○ 데이터베이스의 특정 부분(데이터)을 여러 섹션으로 분할하는 방법
○ 샤딩(Sharding) : 분산 환경에서 거대한 데이터베이스나 시스템을 작은 조각으로 나눠 분산 저장 / 관리
○ 파티셔닝(Partitioning)의 종류
- 수평 분할(Horizontal)
- 수직 분할(Vertical)
○ 분할 기준
- 범위 분할(Range)
- 목록 분할(List)
- 해시 분할(Hash)
- 라운드 로빈 분할(Round Robin)
- 합성 분할(Composite)
클러스터 설계
○ 자주 사용되는 테이블의 데이터를 디스크 상 동일 위치에 저장하여 액세스 효율을 향상하는 물리적 저장 방법
인덱스(Index)
○ 데이터베이스 테이블 검색 속도 향상을 위한 저장 공간 활용 자료구조
○ 인덱스의 종류
- 클러스터 인덱스 : 테이블 당 1개, 해당 칼럼을 기준으로 테이블이 물리적으로 정렬
- 넌클러스터 인덱스 : 테이블 당 240개, 레코드의 원본은 정렬 X, 인덱스 페이지 정렬 O
- 밀집 인덱스 : 데이터 레코드 각각에 대해 하나의 인덱스 만듦
- 희소 인덱스 : 레코드 그룹 / 데이터 블록에 대해 하나의 인덱스 만듦
○ 인덱스의 구조
- 트리 기반 인덱스 : B+ 트리 인덱스 사용
- 비트맵 인덱스 : 각 값에 대한 비트 배열을 사용하여 인덱싱
- 함수 기반 인덱스 : 특정 함수의 결과에 대해 인덱스를 생성
- 비트맵 조인 인덱스 : 비트맵 인덱스의 확장
- 도메인 인덱스 : 사용자 정의 인덱스
뷰(View)
○ 기본 테이블에서 유도된 이름이 있는 가상 테이블, 물리적 존재 X, 독립적 인덱스 보유 X
시스템 카탈로그
○ 데이터베이스의 모든 데이터 개체들에 대한 정보를 저장한 시스템 테이블, 데이터 사전(Data Dictionary)
관계 데이터베이스 모델
관계 데이터 모델
○ 데이터의 논리적 구조를 테이블 형태로 표현, 튜플(행)과 속성(열)로 구성
○ 관계 데이터 릴레이션의 구조
속성(차수) | |||||||
↓ | ↓ | ↓ | ↓ | ||||
학번 | 이름 | 학년 | 학과 | ||||
카디널리티 | → | 19001 | 김예소 | 2 | CD | ← | 튜플 |
20002 | 고강민 | 1 | CD | ← | |||
19012 | 이향기 | 2 | ID | ← | |||
↑ | |||||||
학년의 도메인 |
- 속성(Attribute) : 릴레이션의 열, 개체의 특성
- 튜플(Tuple) : 릴레이션의 행, 속성들의 모임
- 도메인(Domain) : 속성이 가질 수 있는 값의 범위
- 차수(Degree) : 속성의 총 개수
- 카디널리티(Cardinality) : 튜플의 총 개수
○ 릴레이션 : 데이터들을 2차원 테이블의 구조로 저장한 것
- 릴레이션 스키마 : 릴레이션의 논리적 구조
- 릴레이션 인스턴스 : 스키마에 실제로 저장된 데이터의 집합
관계데이터 언어(관계대수, 관계해석)
○ 관계대수 : 원하는 데이터를 찾기 위한 절차적 언어
○ 순수 관계 연산자
- SELECT : σ(시그마)
- PROJECT : π(파이)
- JOIN : ⋈(보타이)
- DIVISION : ÷(나누기)
○ 일반 집합 연산자
- 합집합 : ∪
- 교집합 : ∩
- 차집합 : -
- 교차곱 : X
○ 관계해석 : 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어
- 튜플 관계해석, 도메인 관계해석
- 연산자
구분 | 기호 | 설명 |
연산자 | V | OR 연산 |
Λ | AND 연산 | |
ㄱ | NOT 연산 | |
정량 | ∀ | 모든 가능한 튜플 - For All |
∃ | 어떤 튜플 하나라도 존재 - There Exists |
키와 무결성 제약조건
속성
○ 정보의 최소 단위, 칼럼
○ 속성의 분류
- 기본 속성 : 업무로부터 추출한 모든 속성
- 설계 속성 : 코드성 데이터
- 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성
키 종류
○ 키 : 튜플을 식별하고 구별하는 데 사용되는 칼럼
○ 키의 종류 : 슈퍼키(유일성) ⊃ 후보키(유일성, 최소성) ⊃ 기본키, 대체키(유일성, 최소성)
데이터베이스 무결성
○ 데이터의 정확성, 일관성 / 유효성을 보장하는 DBMS의 중요한 기능
○ 데이터베이스 무결성(Integrity) 종류
- 개체 무결성(Entity) : NULL X, 중복 X
- 참조 무결성(Referential) : 외래키는 NULL or 참조 릴레이션의 기본키와 일치, Restrict(제한) / Cascade(연쇄삭제)
- 도메인 무결성(Domain) : 속성값은 정의된 도메인에 속해야 함
- 고유 무결성(Unique) : 릴레이션의 속성값은 서로 달라야 함
- 키 무결성(Key) : 각 릴레이션은 최소 하나의 키를 가져야 함
- 릴레이션 무결성(Relation) : 삽입, 삭제, 갱신 등 연산은 릴레이션의 무결성을 파괴하면 안 됨
물리데이터 모델 품질 검토
CRUD 분석
○ Create(생성), Read(읽기), Update(갱식), Delete(삭제), 해당 업무에 어떤 데이터 존재하는지, 무엇이 영향받는지 분석
옵티마이저(Optimizer)
○ SQL 처리 흐름
옵티마이저 | ||||
SQL | 구문분석 (Parsing) → |
실행 (Execution) → |
인출 (Fetch) → |
결과 |
↑ 참조 |
↑ 참조 |
↑ 참조 |
||
Database 통계자료 Database Data |
○ 옵티마이저 : SQL문에 대한 최적의 실행 방법을 결정
- 옵티마이저의 구분
: 규칙기반 옵티마이저(Rule Based) - 규칙(우선순위)을 가지고 실행 계획을 생성
: 비용기반 옵티마이저(Cost Based) - 소요시간이나 자원사용량을 가지고 실행계획 생성
SQL 성능 튜닝
○ 튜닝 : SQL문을 최적화하여 시스템의 처리량, 응답 속도를 개선하는 작업
○ 튜닝 영역
- 데이터베이스 설계 튜닝
- 데이터베이스 환경
- SQL 문장 튜닝
분산 데이터베이스
분산 데이터베이스
○ 여러 곳에 분산된 데이터베이스를 하나의 논리적인 시스템처럼 사용할 수 있는 데이터베이스
○ 분산 데이터베이스 구성요소 : 분산 처리기, 분산 데이터베이스, 통신 네트워크
○ 투명성 조건
- 위치 투명성(Location) : 실제 위치를 모르고 액세스 가능
- 분할 투명성(Division) : 여러 단편으로 분할
- 지역사상 투명성(Local Mapping) : 각 지역시스템 이름과 무관하게 사용
- 중복 투명성(Replication) : 데이터의 중복을 사용자에게 숨김
- 병행 투명성(Concurrency) : 다수의 트랜잭션들이 동시에 실행되어도 영향 주지 않음
- 장애 투명성(Failure) : 다양한 장애에도 트랜잭션 처리
○ CAP 이론 : 어떤 분산 환경에서도 일관성(C), 가용성(A), 분단 허용성(P) 중, 2가지만 가질 수 있음
트랜잭션
○ 하나의 논리적 기능을 수행하는 작업 단위
○ 트랜잭션의 성질
- 원자성(Atomicity) : 모두 반영 or 전혀 반영 X
- 일관성(Consistency) : 트랜잭션 완료 전과 후 데이터베이스가 일관된 상태를 유지해야 함
- 독립성, 격리성(Isolation) : 동시에 실행되는 여러 트랜잭션들은 서로 간섭 X
- 영속성(Durablility) : 시스템에 고장이 발생해도 결과는 영구적으로 반영되어야 함
○ 트랜잭션의 상태
- 활동(Active) : 트랜잭션이 실행 중인 상태
- 실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
- 철회(Aborted) : 비정상적으로 종료되어 Rollback 연산을 수행한 상태
- 부분 완료(Partially Committed) : Commit 연산이 실행되기 직전의 상태
- 완료(Committed) : 트랜잭션이 성공적으로 종료된 상태
출처 | 흥달쌤