정보처리기사

[정보처리기사] 데이터베이스 구축 (2)

hminor 2023. 7. 7. 02:25

관계 데이터베이스 모델

  • 관계 데이터 모델
    • 개념
      • 데이터의 논리적 구조가 릴레이션, 즉 테이블 형태의 평면 파일로 표현되는 데이터 모델
      • 표 형태로 이루어져있다.
    • 관계 데이터 릴레이션의 구조
      • 튜플: 하나의 행
      • 커디널리티: 튜플의 개수
      • 차수: 속성들의 개수(열)
      • 도메인: 하나의 속성이 가질 수 있는 값의 범위
  • 관계데이터 언어(관계 대수, 관계 해석)
    • 관계 대수
      • 개념
        • 원하는 데이터를 얻기 위해 데이터를 어떻게 찾는지에 대한 처리 과정을 명시하는 절차적인 언어
    • 순수 관계 연산자(셀프조디)
      • SELECT
        • 릴레이션에서 주어진 조건을 만족하는 튜플을 선택하는 연산자
        • 기호: σ (시그마)
        • 표기법: σ<조건>(R)
          • σ성적>90(학생)
          • σ성적≥90^학과=’컴퓨터’(학생)
      • PROJECT
        • 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하는 연산자
        • 기호: π(파이)
        • 표기법: π<리스트>(R)
          • π학번,성적(학생)
          • π학번,이름,성적(σ성적≥90(학생))
      • JOIN
        • 두 개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자
        • 기호: ⋈(보타이)
        • 표기법: R⋈<조건>S
          • (학생)⋈학번=학번(수강과목)
      • DIVISION
        • 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환 (앞에 있는 것 기준)
        • 기호: ÷(나누기)
        • 표기법: R÷S
          • (R) ÷ (S1)
          • (R) ÷ (S2)
    • 일반 집합 연산자(합교차카)
      • 합집합(Union)
        • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거
        • 표기법: U
          • A과목 U B과목
        • Union All: 중복되는 튜플 또한 포함 시킨다.
      • 교직합(Intersection)
        • 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
        • 표기법: ∩
          • A과목 ∩ B과목
      • 차집합(Difference)
        • 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
        • 표기법: -
          • A과목 - B과목
      • 교차곱(Cartesian Product)
        • 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
        • 표기법: X
          • 학생 X 과목
    • 관계 해석
      • 개념
        • E.F.Codd가 수학의 Predicate Calculus에 기반을 두고 관계 데이터베이스를 위해 제안
        • 관계해석은 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때 계산 수식을 사용
        • 비절차적인 언어
      • 연산자
        • 구분
          • 연산자
            • ∨: OR 연산
            • ∧: AND 연산
            • ㄱ: NOT 연산
          • 정량자
            • A 거꾸로: 모든 가능한 튜플, ALL의 의미
            • E 좌우대칭: 어떤 튜플 하나라도 존재, Exist의 의미
  • 키 종류
      • 개념
        • 릴레이션에서 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 컬럼
      • 종류
        • 슈퍼키(유일성)
        • 후보키(유일성,최소성)
        • 대체키(유일성,최소성, 기본키X)
        • 기본키(유일성, 최소성 모두 만족)
  • 데이터베이스 무결성
    • 개념
      • 데이터의 정확성, 일관성, 유효성이 유지되는 것
    • 데이터베이스 무결성 종류
      • 개체 무결성
        • 모든 릴레이션은 기본 키를 가져야 한다.
        • 기본키는 중복되지 않은 고유한 값을 가져야 한다
        • 릴레이션의 기본키는 NULL 값을 허용하지 않는다.
      • 참조 무결성
        • 외래키 값은 NULL 이거나 참조하는 릴레이션의 기본키 값과 동일해야한다. (Null도 가능)
        • 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
        • 참조 무결성 제약조건
          • 제한(Restrict)
            • 문제가 되는 연산을 거절
          • 연쇄(Cascade)
            • 부모 릴레이션에서 튜플을 삭제하면 자식 릴레이션에서 이 튜플을 참조하는 튜플도 함께 삭제
      • 도메인 무결성
        • 속성들의 값은 정의된 도메인에 속한 값이어야 한다.
        • 성별이라는 컬럼에는 남, 여 가 아닌 사과와 같은 데이터는 제한되어야 한다.
      • 고유 무결성
        • 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다.
      • 키 무결성
        • 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다.
      • 릴레이션 무결성
        • 삽입, 삭제, 갱신과 같은 연산을 수행하기 전과 후에 대한 상태의 제약
  • 옵티마이저
    • 개념
      • 사용자가 질의한 SQL 문에 대해 최적의 실행 방법을 결정하는 역할을 수행
    • SQL 처리 흐름
      • SQL
      • 옵티마이저
        • 구문 분석(Parsing)
        • 실행(Execution)
        • 인출(Fetch)
      • 결과
    • 옵티마이저 구분
      • 규칙기반 옵티마이저
        • **규칙(연산자 우선순위)**를 가지고 실행 계획을 생성
      • 비용기반 옵티마이저
        • 통계 정보와 시스템 통계정보를 활용한 비용이 가장 적은 실행계획을 선택
  • SQL 성능 튜닝
    • 개념
      • SQL문을 최적화하여 빠른 시간 내에 원하는 결과값을 얻기 위한 작업
      • 보통 Index를 사용하고 Hint를 함께 사용한다.
    • Row Migration/ Row Chaining
      • Row Migration
        • 데이터가 수정되면서 데이터가 더 커져서 기존 블록에 못들어가 다른 블록에 데이터를 넣고, 기본 블록 위치에는 링크를 남기기
      • Row Chaining
        • 컬럼이 너무 길어서 DB Block 사이즈보다 길어진 경우 두 개에 이어서 한 Row가 저장

분산 데이터베이스

  • 분산 데이터베이스
    • 정의
      • 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
    • 분산 데이터베이스 구성요소
      • 분산 데이터베이스
      • 분산 처리기
      • 통신 네트워크
    • 분산 데이터베이스의 적용 기법
      • 테이블 분할 분산
        • 각각의 테이블을 쪼개어 분산하는 방법
      • 종류
        • 수평분할
          • 컬럼은 불리되지 않으며 특정 컬럼의 값을 기준으로 Row를 분리
        • 수직분할
          • 테이블 칼럼을 기준으로 컬럼을 분리
    • 투명성 조건(위분할지중장병)
      • 위치 투명성
        • 액세스하려는 데이터베이스의 실제 위치를 알 필요가 없다.
      • 분할 투명성
        • 하나의 논리적 테이블이 여러 단편으로 분할되어 각 단편의 사본이 여러 위치에 저장
      • 지역 사상 투명성
        • 지역 DBMS와 물리적 DB사이의 Mapping을 보장
        • 어디에서 어떤 DBMS를 사용하는지 알 필요가 없다는 식.
      • 중복 투명성
        • 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고 시스템은 자동으로 여러 자료에 대한 작업을 수행
      • 장애 투명성
        • 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리
        • 장애가 생기더라도 사용자는 알 필요가 없어야 한다.
      • 병행 투명성
        • 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는다.
    • CAP 이론
      • 개념
        • 어떤 분산 환경에서도 일관성(C), 가용성(A), 분단 허용성(P) 세 가지 속성 중, 두 가지만 가질 수 있다는 것
    • 트랜잭션
      • 개념
        • 데이터베이스의 상태를 변환시키는 하나의 논리적인 기능을 수행하는 작업 단위
      • 트랜잭션 성질(ACID)
        • 원자성(Atomicity)
          • 트랜잭션의 연산은 DB에 모두 반영되거나, 전혀 반영되지 않아야 한다.
          • Commit과 Rollback 명령어에 의해 보장받는다
        • 일관성(Consistency)
          • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 변환
        • 독립성(Isolation)
          • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에는 다른 트랜잭션의 연산이 끼어들 수 없다.
        • 영속성(Durability)
          • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장이 나더라도 영구적으로 반영되어야 한다.

절차형 SQL

  • 저장 프로시저(Stored Procedure)
    • 개념
      • 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
    • 저장 프로시저 구조
      • CREATE OR REPLACE PROCEDURE 프로시저명
  • 트리거
    • 개념
      • 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업
    • 트리거의 유형
      • 행 트리거
        • 테이블 안의 영향을 받은 행 각각에 대해 실행
        • FOR EACH ROW 옵션 사용
      • 문장 트리거
        • INSERT, UPDATE, DELETE 문에 대해 단 한 번만 실행
  • 사용자 정의 함수
    • 개념
      • 프로시저와 사용자 정의 함수 모두 호출하게 되면 미리 정의해 놓은 기능을 수행하는 모듈
      • 파라미터는 입력 파라미터만 가능하고, 리턴값이 하나이다.
      • 리턴 값이 무조건 하나 있어야 한다.

병행제어와 데이터 전환

  • 병행제어
    • 개념
      • 여러 트랜잭션들이 동시에 실행되면서도 DB의 일관성을 유지할 수 있도록 해준다.
    • 병행제어 문제점(갱현모연)
      • 갱신 분실
        • 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상
      • 비완료 의존성(현황 파악 오류)
        • 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
      • 모순성
        • 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제
        • 갱신 분실과 비슷해 보이지만 여러 데이터를 가져올 때 발생하는 문제
      • 연쇄 복귀
        • 병행 수행 된 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback 되는 현상
    • 로킹(Locking)
      • 개념
        • 트랜잭션이 어떤 데이터에 접근하고자 할 때 로킹 수행
        • 로킹 단위: 필드, 레코드, 파일, 데이터베이스 모두 로킹 단위가 될 수 있다.
      • 로킹 단위에 따른 구분(화장실 생각하기)
        • 로킹 단위가 크면
          • 로크수: 적어짐
          • 병행성: 낮아짐
          • 오버헤드: 감소
        • 로킹 단위가 작으면
          • 로크수: 많아짐
          • 병행성: 높아짐
          • 오버헤드: 높아짐
      • 2단계 로킹 규약
        • 개념
          • Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로 Lock만 가능한 단계와 Unlock만 가능한 단계를 구분
          • 단계 종류
            • 확장 단계(화장실 배아플때)
              • 새로운 Lock은 가능하고 Unlock은 불가능하다
              • 빨리 화장실 문을 잠글 생각만 하기
            • 축소 단계(화장실 나올때)
              • Unlock은 가능하고 새로운 Lock은 불가능하다
              • 이제 나올 생각을 하기
      • 타임 스탬프
        • 데이터에 접근하는 시간을 미리 정해서, 정해진 시간의 순서대로 데이터에 접근하여 수행
      • 낙관적 병행제어
        • 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사
      • 다중 버전 병행제어
        • 여러 버전의 타임스탬프를 비교하여 스케줄상 직렬가능성이 보장되는 타임스탬프를 선택
  • 회복
    • 개념
      • 트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
    • 회복 기법
      • 로그 기반 회복 기법
        • 지연갱신 회복 기법
          • 트랜잭션의 부분 완료 상태에서 변경 내용을 로그 파일에만 저장
          • 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음
        • 즉시갱신 회복 기법
          • 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록
          • 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요
      • 검사점 회복 기법
        • 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복에서 제외하고 검사점 이후 처리된 트랜잭션은 회복 작업 수행
      • 그림자 페이징 회복 기법
        • 트랜잭션이 실행되는 메모리상의 Current Page Table과 하드디스크의 Shadow Page Table 이용
      • 미디어 회복 기법
        • 디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법
  • ETL(Extraction, Transformation, Loading)
    • 개념
      • 기존의 원천 시스템에서 데이터를 추출하여 목적 시스템의 데이터베이스에 적합한 형식과 내용으로 변환한 후, 목적 시스템에 적재하는 일련의 과정
    • ETL 기능
      • 추출: 하나 또는 그 이상의 데이터 소스로부터 데이터 획득
      • 변환: 데이터 클렌징, 형식 변환 및 표준화, 데이터 통합
      • 적재: 변형 단계의 처리가 완료된 데이터를 목표 시스템에 적재