데이터베이스 - 실기 정리 노트

이보아·2024년 9월 28일
0

정보처리기사

목록 보기
4/16
post-thumbnail

데이터베이스 구축

데이터베이스란? (공.장.통.운)

공유 데이터(Shared Data) : 여러 사용자가 공동으로 사용하는 데이터
저장 데이터(Stored Data) : 저장 매체에 저장된 데이터
통합 데이터(Integrated Data) : 중복이 최소화된 데이터 모임
운영 데이터(Operational Data) : 조직의 목적을 위한 필수 데이터

데이터베이스 특징

  • 실시간 접근성(Real Time Accessibility)
  • 계속적인 변화 (Continuous Evolution)
  • 동시 공유 (Concurrent Sharing)
  • 내용에 의한 참조 (Content Reference)
  • 데이터의 독립성 (Independence)

데이터 언어

  • DDL (Data Definition Language): 구조와 제약 조선 정의
  • DML (Data Manipulation Language): 데이터 처리 및 조작
  • DCL (Data Control Language): 보안, 권한, 무결성 및 병행 제어

스키마(Schema) [20년 3회]

데이터베이스의 구조, 제약 조건, 속성, 개체, 관계를 포함한 전반적인 명세를 기술한 것이다.

데이터 베이스 관리 시스템

DBMS

데이터베이스를 효과적으로 관리하고 조작하기 위한 전용 소프트웨어

DBMS 기능

  • 데이터 정의
  • 데이터 조작
  • 데이터 제어
  • 데이터 공유
  • 데이터 보호
  • 데이터 구축
  • 유지보수

DBMS 종류

  • 계층형 : 트리 구조
  • 네트워크형 : 다대다 관계 가능, CDDASYL
  • 관계형 : 테이블 구조의 모델
  • 객체 지향형 : 객체지향 프로그래밍 개념에 기반
  • 객체 관계형 : 관계형 + 객체지향 개념
  • NoSQL : 다양한 특성을 지원
  • NewSQL : RDBMS와 NoSQL의 장점을 결합

데이터베이스 설계

요구 조선에서부터 데이터베이스 구조를 도출하는 과정

데이터베이스 설계 시 고려사항

  • 제약조건
  • 데이터베이스 무결성
  • 일관성
  • 회복
  • 보안
  • 효율성
  • 데이터베이스 확장성

데이터베이스 설계 단계 (요.개.논.물)[20년 2회, 21년 1회 기출]

요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계

개념적 설계

  • 개념적 스키마 구성(ERD)

논리적 설계

  • 현실 세계의 요구사항과 목표 데이터 모델 기반 설계
  • 정규화, 트랜잭션 인터페이스 설계

물리적 설계

  • 구조 및 성능에 대한 설계
  • 반정규화

데이터 모델링

데이터 모델

현실 세계의 복잡한 데이터 구조를 단순화, 추상화하여 체계적으로 표현한 개념적 모형

데이터 모델 구조


이미지 참조 - 관계형 데이터베이스의 릴레이션 구조 및 특징

데이터모델 표시해야 할 요소 [21년 1회]

  • 구조(Structure) : 데이터 구조 및 개체 간 관계
  • 연산(Operation) : 데이터 처리 방법
  • 제약조건(Constraint) : 데이터의 논리적 제약조건

개체 - 관계 모델(Entiy Relation Model)

데이터베이스의 요구사항을 그래픽적으로 표현하는 모델

개체(Entiy)

현실 세계의 독립적이고 구별 가능한 대상

애트리뷰트, 속성(Attribute)

  • 개체나 관계의 고유한 특성을 나타내는 정보의 단위
  • 단일 값 속성, 다중 값 속성, 단순 속성, 복합 속성, 유도 속성, 널 속성, 키 속성

관계(Relationship)

두개체 간의 의미 있는 연결

E-R 다이어그램 기호

정처기-필기-3과목-데이터베이스-구축

데이터 모델의 품질 기준 (정완준최일활)

  • 정확성 : 요구사항을 정확하게 반영
  • 완전성 : 요구사항이 완전하게 반영
  • 준거성 : 준수 요건들이 정확하게 준수
  • 최신성 : 현재의 시스템 상태와 최근의 이슈사항을 반영
  • 일관성 : 데이터 요소와 일관성 유지
  • 활용성 : 이해 관계자에게 의미 전달이 용이

논리 데이터베이스 설계

논리적 데이터 모델링

개념적 설계 단계에서 도출된 개체, 속성, 관계를 구조적으로 표현하는 과정

데이터베이스 정규화(Normalization)

관계형 데이터베이스의 설계에서 데이터 중복을 최소화하기 위한 과정

정규화의 목적

  • 데이터 중복 최소화
  • 정보의 무손실 : 정보가 사라지지 않아야함
  • 독립적인 관계는 별개의 릴레이션으로 표현
  • 검색 용이성 증가
  • 이상 현상 최소화

이상 현상(Anomaly) [20년 4회, 22년 1회 기출]

데이터 중복으로 인해 릴레이션 조작 시 발생하는 예기치 않은 문제점

이상의 종류

  • 삽입 이상 : 불필효한 데이터가 함께 삽입되는 현상
  • 삭제 이상 : 연쇄 삭제 현상으로 인해 정보 손실
  • 갱신 이상 : 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

함수적 종속(Functional Dependency) [22년 2회 기출]

어떤 릴레이션 R의 X와 Y를 각각 속성의 부분집합이라고 가정했을 때

  • X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 함
  • 이를 기호로 표현하면 X → Y

함수적 종속 관계

  • 완전 함수정 종속(Full Functional Dependency)

    종속자가 기본키에만 종속

  • 부분 함수적 종속(Partial Functional Dependency)

    기본키를 구성하는 속성 중 일부만 종속되는 경우

  • 이행적 함수 종속(Transitive Functional Dependency)

    X → Y → Y → Z 일때, X → Z 가 성립되는 경우

⭐정규화 과정 (도.부.이.결.다.조)

이미지 참조 - 정보처리기사 정처기|정규화 - 데이터베이스

이미지 참조 - 정보처리기사 정처기|정규화 - 데이터베이스의 설계 과정

물리 데이터베이스 설계

물리 데이터베이스 설계 과정

  • 사용자 DBMS 결정
  • 데이터 타입과 그 크기 결정
  • 데이터 용량 예측 및 업무 프로세스 분석
  • 역정규화(반정규화)
  • 인덱스 설계
  • 데이터베이스 생성

반정규화 [20년 1회, 21년 1회]

성능향상이나 개발 및 운영의 편의성을 위해 의도적으로 중복을 허용하거나 데이터를 재구성하는 방법

반정규화 적용 순서

  • 반정규화 대상 조사
  • 다른 방법으로 유도
  • 반정규화 수행

반정규화 유형

  • 테이블 분할(수평, 수직)
  • 테이블 중복(통계테이블, 진행테이블)
  • 컬럼기반 분할
  • 컬럼 중복

데이터베이스 이중화

장애에 대비해서 동일한 데이터베이스를 중복하여 관리하는 방식

데이터베이스 이중화 목적

  • 장애나 재해 발생 시 빠른 서비스 재개
  • 서비스의 원활한 성능 보장

데이터베이스의 이중화의 분류

  • Eager 기법 : 트랜잭션 발생 시 즉시 반영
  • Lazy 기법 : 트렌젝션 완료 후 반영

데이터베이스 백업

  • 데이터를 주기적으로 복사하여 보관하는것
  • 백업: 데이터를 복사하여 보관하는 과정
  • 복원: 손상된 데이터를 원래 상태로 되돌리는 과정

백업 방식

  • 전체 백업 (Full Backup) : 모든 데이터를 백업
  • 증분 백업 (Incremental Backup) : 변경/추가된 데이터만 백업
  • 차등 백업 (Differential Backup) : 모든 변경/추가된 데이터를 백업
  • 합성 백업 : 전체 백업본과 여러 개의 증분 백업을 합하여 백업

복구 시간 목표/복구 시점 목표 (20년 2회)

1) ⭐ 복구 시간 목표(RTO) - Recovery Time Objective

서비스 사용할 수 없는 상태로 허용되는 기간

2) ⭐ 복구 시점 목표(RPO)

마지막 백업 이후 허용되는 최대 데이터 손실 시간

데이터베이스 암호화

데이터베이스 내용을 암호화하는 과정

데이터베이스 암호화 방식

  • API 방식 : 애플리케이션에서 수행
  • Plug-in 방식: DB 서버에 제품 설치 후 수행
  • TDE 방식 : DBMS 내부의 기본 모듈로 수행

데이터베이스 물리 속성 설계

파티셔닝

데이터베이스의 특징 부분(데이터)을 여러 섹션으로 분할하는 방법

샤딩(Sharding)

거대한 데이터베이스나 시스템을 작은 조각(샤드)으로 나우어 분산 저장 및 관리하는 기법

파티셔닝의 종류

  • 수평 분할(Horizontal Partitioning)
  • 수직 분할(Vertical Partitioning)

분할 기준

  • 범위 분할(Range Partitioning)
  • 목록 분할(List Partitioning)
  • 해시 분할(Hash Partitioning)
  • 라운드 로빈 분할(Round Robin Partitioning)
  • 합성 분할(Composite Partitioning)

클로스터 설계

클로스터란?

자주 사용되는 테이블의 데이터를 디스크 상 동일한 위치에 저장하여 데이터 엑세스 효율을 형상시키는 물리적 저장 방법

인덱스(Index)

데이터베이스 테이블 검색 속도 향상을 위한 저장 공간 활용 자료구조

인덱스의 종류

1) 클러스터 인덱스

  • 테이블당 1개만 허용되며, 해당 컬럼을 기준으로 테이블이 물리적으로 정렬

2) 넌클러스터 인덱스

  • 테이블당 약 240개의 인덱스 생성 가능
  • 레코드 원본은 정렬되지 않고, 인덱스 페이지만 정렬

3) 밀집 인덱스

  • 데이터 레코드 각각에 대해 하나의 인덱스가 만들어짐

4) 희소 인덱스

  • 레코드 그룹 또는 데이터 블록에 대해 하나의 인덱스가 만들어짐

인덱스의 구조

1) 트리 기반 인덱스

  • B+ 트리 인덱스 사용

2) 비트맵 인덱스

  • 각 값에 대한 비트 배열을 사용하여 인덱싱

3) 함수 기반 인덱스

  • 특정 함수의 결과에 대해 인덱스를 생성

4) 비트맵 조인 인덱스

  • 비트맵 인덱스의 확장

5) 도메인 인덱스

  • 사용자 정의 인덱스

뷰(view)

기본 테이블에서 유도된 이름이 있는 가상 테이블

시스템 카탈로그

데이터베이스의 모든 데이터 개체들에 대한 정보를 저장한 시스템 테이블로, 데이터 사전(Data Dictionary)이라고도 한다.

관계 베이스 모델

  • 데이터의 논리적 구조를 테이블 형태로 표현
  • 테이블은 튜플(행) 속성(열)로 구성된다.

이미지 참조 - [정보처리기사 실기] 데이터베이스 씹어먹을거야 -(2)

  • 속성(Attribute): 릴레이션의 열, 개체의 특성
  • 튜플(Tuple): 릴레이션의 행, 속성들의 모임
  • 도메인(Domain) : 속성이 가질 수 있는 값의 범위
  • 차수(Degree) : 속성의 총 개수
  • 카디널리티(Cardinality) : 튜플의 총 개수

릴레이션

데이터들을 2차원 테이블 구조로 저장한 것

릴레이션 구성

  • 릴레이션 스키마 : 릴레이션의 논리적 구조
  • 릴레이션 인스턴스 : 스키마에 실제로 저장된 데이터의 집합

관계데이터 언어(관계대수, 관계해석) [22년 1회, 22년 3회 기출]


이미지 참조 - 논리데이터베이스설계/관계데이터베이스모델/관계데이터언어/

관계대수

원하는 데이터를 찾기 위한 절차적 언어

일반 집합 연산자, 순수 관계 연산자


이미지 참조 - 논리데이터베이스설계/관계데이터베이스모델/관계데이터언어/

관계 해석

원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성

키와 무결성 제약 조건

속성

  • 정보의 최소 단위
  • 컬럼을 속성(Attribute)이라고도 한다.

속성의 분류

  • 기본속성 : 업무로부터 추출한 모든 속성
  • 설계속성 : 코드성 데이터
  • 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성

1.수퍼키(Super Key)

  • 어떤 엔터티를 유일하게 식별할 수 있는 속성의 집합
  • 수퍼키는 하나 이상의 속성으로 구성될 수 있으며, 중복된 튜플 없이 테이블 내의 모든 튜플을 유일하게 식별할 수 있어야 한다.

2.후보키(Candidate Key)

  • 수퍼키 중에서 불필요한 속성을 제거하여 가장 간단한 형태로 만든 키
  • 후보키는 테이블을 유일하게 식별할 수 있는 최소한의 속성으로 구성
  • 후보키는 중복을 허용하지 않으며, 모든 속성이 반드시 식별에 필요

3.기본키(Primary Key)

  • 후보키 중에서 선택된 메인 키로, 테이블의 각 행을 유일하게 식별하는 데 사용
  • 기본키는 NULL 값을 가질 수 없으며, 테이블 내에서 각 튜플을 유일하게 식별

4.대체키(Alternate Key)

  • 후보키 중에서 기본키로 선택되지 않은 나머지 키들입니다.
  • 대체키는 기본키를 제외한 후보키이며, 필요에 따라 대체 식별자로 사용될 수 있습니다.

참조 - [정보처리기사] 데이터베이스 구축 - 키(key)의 종류

데이터베이스 무결성

데이터의 정확성, 일관성 및 유효성을 보장하는 데이터베이스 관리 시스템(DBMS)의 중요한 기능

데이터베이스 무결성 종류

1) 개체 무결성(Entity Integrity)

데이터의 정확성, 일관성 및 유효성을 보장하는 데이터베이스 관리 시스템(DBMS)의 중요한 기능

2) 참조 무결성(Referential Integrity)

  • 외래키는 NULL이거나 참조 릴레이션의 기본키와 일치해야 함
  • Restrict, Cascade

3) 도메인 무결성(Domain Integrity)

  • 속성 값은 정의된 도메인에 속해야 한다.

4) 고유 무결성(Unique Integrity)

  • 릴레이션의 특징 속성 값은 서로 달라야 한다.

5) 도메인 무결성(Key Integrity)

  • 각 릴레이션은 적어도 하나의 키를 가져야 한다.

6) 도메인 무결성(Relation Integrity)

  • 삽입, 삭제, 갱신 등의 연산은 릴레이션의 무결성을 해치지 않도록 수행되어야 한다.

물리데이터 모델 품질 검토

CRUD

  • Create(생성), Read(읽기), Update(갱신), Delete(삭제)
  • 해당 업무에 어떤 데이터가 존재하는지 무엇이 영향을 받는지 분석

옵티마이저

SQL 처리 흐름 +

옵티마이저: 구문분석(Parsing) → 실행(Execution) → 인출(Fetch)

이미지 참조 - 정보처리기사 - 오답노트

옵티마이저

SQL문에 대한 최적의 실행 방법을 결정

  • 옵티마이저의 구분

    • 규칙기반 옵티마이저(Rule Based Optimizer) : 규칙(우선순위)을 가지고 실행 계획을 생성
    • 비용기반 옵티마이저(Cost Based Optimizer) : 소요시간이나 자원 사용량을 가지고 실행계획 생성

    SQL 성능 튜닝

    SQL문을 최적화하여 시스템의 처리량과 응답 속도를 개선하는 작업

    튜닝 영억

    • 데이터베이스 설계튜닝
    • 데이터페이스 환경
    • SQL 문장 튜님

분산 데이터베이스

여러 곳에 분산된 데이터베이스를 하나의 논리적인 시스템처럼 사용할 수 있는 데이터 베이스

분산 데이터베이스 구성 요소

  • 분산 처리기
  • 분산 데이터베이스
  • 통신 네트워크

투명성 조건

  • 위치 투명성(Location) : 실제 위치를 모르고 엑세스 가능
  • 분할 투명성(Division) : 여러 단편으로 분할
  • 지역사상 투명성(Local Mapping) : 각 지역시스템 이름과 무관하게 사용
  • 중복 투명성(Replication) : 데이터의 중복을 사용자에게 숨김
  • 병행 투명성(Concurrency) : 다수의 트랜젝션들이 동시에 실행되어도 영향을 주지 않음
  • 장애 투명성(Failure) : 다양한 장애에도 트랜잭션 처리

CAP 이론

어떤 분산 환경에서도 일관성(C), 가용성(A), 분단 허용성(P) 세 가지 송성중, 두가지만 가질 수 있다는것

트랜잭션 (ACID)

하나의 논리적 기능을 수행하는 작업 단위

트렌잭션의 성질 [20년 1회, 21년 2회 기출]

  • 원자성(Atomicity) : 모두 반영되거나 아니면 전혀 반영되지 않아야 한다.
  • 일관성(Consistency) : 트랜잭션이 완료 후에는 데이터베이스가 일관된 상태를 유지해야 한다.
  • 독립성, 격리성(Isolation) : 동시에 실행되는 여러 트랜잭션들은 서로 간섭할 수 없다.
  • 영속성(Durablility) : 결과는 시스템이 고장이 발생해도 영구적으로 반영되어야 한다.

트랜잭션의 상태

  • 활동(Atomicity) : 트랜잭션이 실행 중인 샅애
  • 실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
  • 철회(Aborted): 비정상적으로 종료되어 Rollback 연산을 수행한 상태
  • 부분 완료(Partially Committed) : Commit 연산이 실행되기 직전의 상태
  • 완료(Committed) : 트랜잭션이 성공적으로 종료된 상태

SQL

데이터베이스 시스템에서 데이터를 처리하기 위해 사용되는 구조적 데이터 질의 언어

SQL문법의 종류

1) Data Definition Language (DDL) - 데이터 정의어

CREATE, ALTER, DROP, RENAME, TRUNCATE

2) Data Manipulation Language (DML) - 데이터 조작어

SELECT, INSERT, UPDATE, DELETE

3) Data Control Language (DCL) - 데이터 제어어

GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT [GRANT - 21년 3회 , ROLLBACK 21년 2회 기출]

절차형 SQL

저장 프로시저(Stored Procedure)

일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합 (여러 SQL 문을 하나의 단위로 묶어 데이터베이스에 저장)

트리거

테이블에 대한 이벤트에 반응해 자동으로 실행 되는 작업

트리거의 유형

  • 행 트리거 : FOR EACH ROW 옵션 사용
  • 문장 트리거

사용자 정의 함수

프로시저와 사용자 정의 함수 모드 호출하게 되면 미리 정의해 놓은 기능을 수행하는 모듈 ( 특정 작업을 수행하고 결과를 반환하는 함수)

저장 프로시저와 사용자 정의 함수 차이점

저장 프로시저는 복잡한 작업을 처리하는 데 적합하고, 사용자 정의 함수는 특정 계산을 수행하는 데 적합

병행제어와 데이터전환

병행제어

여러 트랜잭션이 동시에 실행되면서도 데이터베이스의 일관성을 유지하는 기법

병행제어의 문제점

1) 갱신 분실(Lost Update)

일부 갱신 결과가 손실되는 현상

2) 비완료 의존성(Uncommitted Dependency)

실패한 트랜잭션의 결과를 다른 트랜잭션이 참조하는 현상

3) 모순성(Inconsistency)

병행 수행 중 원치 않는 자료를 사용함으로써 발생하는 문제

4) 연쇄 복귀(Cascading Rollback)

하나의 트랜잭션이 살패해 롤백되면, 다른 트랜잭션도 함께 롤백되는 현상

병행제어 기법[21년 2회 기출]

1) 로킹(Loking)

1) 2단계 로킹 규약(Two-Phase Locking Protocol)

1) 타임스탬프(Time Stamp)

1) 낙관적 병행제어(Optimistic Concurrency Control)

1) 다중 버전 병행제어(Multi-verison, Concurrency Control)

회복(Database Recovery)

장애로 인해 손상된 데이터베이스를 이전의 정상 상태로 복구하는 작업니다.

장애의 유형

  • 트렌잭션 장애
  • 시스템 장애
  • 미디어 장애

회복 기법 [22년 1회 기출]

1) 로그 기반 회복 기법

  • 지연 갱신 회복 기법(Deferrd Update)
  • 즉시 갱신 회복 기법(Immediate Update)

2) 그림자 페이징 기법(Shadow Paging Recovery)

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

4) ARIES 회복 기법(Algorithms for Recovery amd Isolation Exploting Semantics)

데이터 전환

ETL

데이터 전환은 기존 원칙시스템에서 데이터를 추출(Extraction)히거, 이를 목적시스템의 데이터베이스에 적합한 형식 내용으로 변환(Transformation)한 후, 목적시스템에 적재(Loading)하는 일련의 과정

데이터 정제

  • 데이터 품질 관리대상
    • 데이터 값
    • 데이터 구조
    • 데이터 관리 프로세스
profile
매일매일 틀깨기

0개의 댓글