정보처리기사

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

hminor 2023. 7. 6. 20:39

데이터베이스 개념

  • 데이터베이스
    • 개념
      • 특정 조직의 업무를 수행하는데 필요한 상호 관련된 데이터들의 모임
    • 데이터베이스 정의
      • 저장 데이터: 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터
      • 공유 데이터: 여러 응용 프로그램들이 공동으로 사용하는 데이터
      • 통합 데이터: 검색의 효율성을 위해 중복이 최소화된 데이터의 모임
      • 운영 데이터: 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터
    • 데이터 언어
      • DDL(Data Definition Language: 데이터 정의어)
        • 개념
          • DB의 구조, 데이터 형식, 접근 방식 등 DB의 구축과 변경 목적으로 사용하는 언어
          • 스키마에 사용되는 제약 조건을 정의
        • 종류
          • CREATE
          • ALTER
          • DROP
          • RENAME
          • TRUNKATE
      • DML(Data Manipulation Language: 데이터 조작어)
        • 개념
          • 데이터 처리를 위한 응용 프로그램과 데이터베이스 관리 시스템 간의 인터페이스를 위한 언어
          • 데이터의 검색, 삽입, 갱신, 삭제 연산 등을 포함한 집한
        • 종류
          • SELECT
          • INSERT
          • UPDATE
          • DELETE
      • DCL(Data Control Language: 데이터 제어어)
        • 개념
          • 보안 및 권한 제어, 무결성, 회복, 병행 제어를 위한 언어
        • 종류
          • GRANT
          • REVOKE
      • TCL(Transaction Control Language: 트랜젝션 제어어)
        • 개념
          • 트랜잭션의 DML 작업 단위를 제어하는 명령어
        • COMMIT
        • ROLLBACK
    • 스키마(Schema)
      • 정의
        • 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것
        • 개체, 속성, 관계에 대한 정의와 이들이 유지해야 할 제약조건들을 기술한 것
        • 스키마는 데이터 사전(DD, Data Dictionary)에 저장
      • 3계층 스키마
        • 외부 스키마
          • 사용자 뷰
          • 데이터베이스의 논리적 구조 정의
        • 논리적 독립성
          • 개념 스키마가 변경 되어도 외부 스키마에 영향을 끼치지 않는다는 의미
        • 개념 스키마
          • 전체적인 뷰
          • 데이터베이스의 전체적인 논리적 구조
        • 물리적 스키마
          • 내부 스키마가 변경 되어도 외부, 개념 스키마에 영향을 끼치지 않는다는 의미
        • 내부 스키마
          • 저장 스키마
          • 물리적 저장장치의 입장에서 본 데이터베이스 구조
  • 데이터베이스 관리 시스템
    • DBMS의 정의
      • DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공
    • DBMS의 기능
      • 데이터 정의
        • 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능
      • 데이터 조작
        • 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능
      • 데이터 제어
        • 데이터 무결성, 보안, 권한 검사, 동시성 제어
    • DBMS의 종류
      • 계층형(Hierarchical DataBase)
        • 데이터 간의 관계가 트리 형태의 구조
      • 네트워크형(Network DataBase)
        • 계층형 데이터베이스의 단점을 보완하여 데이터 간 N:N 구성이 가능한 망형 모델
        • CODASYL이 제안한 것으로 CODASYL DBTG 모델이라고도 한다.
      • 관계형(Relational DataBase)
        • 키와 값으로 이루어진 데이터들을 행과 열로 구성된 테이블 구조로 단순화시킨 모델
      • 객체 지향형(Object-Oriented DataBase)
        • 객체지향 프로그래밍 개념에 기반하여 만든 데이터베이스 모델
        • 비정형 데이터들을 데이터베이스화할 수 있도록 하기 위해 만들어진 모델
      • 객체 관계형(Object-Relational DataBase)
        • 관계형 데이터베이스에 객체 지향 개념을 도입하여 만든 데이터베이스 모델
      • NoSQL
        • Not Only SQL의 줄임말로 SQL + 다양한 특성을 지원
      • NewSQL
        • RDBMS의 SQL과 NoSQL의 장점을 결합한 관계형 모델

데이터베이스 설계 단계

  • 요구조건 분석
    • 데이터베이스의 사용자, 사용목적, 사용범위, 제약조건 등에 대한 내용을 정리하고 명세서를 작성
  • 개념적 설계
    • 현실세계를 데이터관점으로 추상화 단계
    • DBMS에 독립적으로 설계
    • 데이터베이스의 개념적 스키마 구성
    • ERD
      • 개체: 사각형
      • 속성: 원
      • 관계: 마름모
      • 다중 값: 두 개의 원
      • 유도 속성: 점선으로 된 원
  • 논리적 설계
    • 자료를 컴퓨터가 이해할 수 있도록 목표 DBMS의 논리적 자료 구조로 변환하는 과정
    • 특정 데이터모델(계층형, 관계형, 객체지향형 등)을 적용한 설계
    • 데이터베이스의 논리적 스키마 생성
    • 관계형 테이터베이스인 경우 이 단계에서 테이블을 설계하는 정규화 과정 수행
    • 트랜잭션 인터페이스 설계
  • 물리적 설계
    • 특정 DBMS의 물리적 구조와 내부적인 저장구조, 분산형태, 데이터타입의 특징, 인덱스의 특징 등을 구체화하는 설계단계
    • 레코드 집중의 분석 및 설계
    • 오브젝트, 접근방법, 트랜잭션분석, 인덱스, 뷰, 데이터베이스 용량설계 등을 수행
    • 데이터베이스의 물리적 스키마 생성
    • 트랜잭션 세부 설계
    • 성능 향상을 위한 반정규화
  • 데이터모델 구조
    • 개체: 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등
    • 개체 타입: 개체를 구성하고 있는 속성들의 집합
    • 개체 인스턴스: 데이터베이스에 저장되는 구체적인 객체
    • 개체 세트: 개체 인스턴스의 집합
    • 속성: 데이터의 가장 작은 논리적 단위
  • 데이터 모델 표시해야 할 요소
    • 구조
      • 데이터베이스에 표현될 대상으로서의 개체 타입과 개체 타입들 간의 관계
    • 연산
      • 데이터베이스에 저장될 실제 데이터를 처리하는 방법
    • 제약조건
      • 저장될 수 있는 데이터의 논리적인 제약조건
  • 개체-관계 모델
    • 속성
      • 속성의 유형
        • 단일 값 속성
          • 값을 하나만 가질 수 있는 속성
          • ex) 이름, 학번
        • 다중 값 속성
          • 값을 여러 개 가질 수 있는 속성
          • ex) 취미
        • 단순 속성
          • 의미를 더는 분해할 수 없는 속성
          • ex) 성별 등
        • 복합 속성
          • 의미를 분해할 수 있는 속성
          • ex) 주소, 생년월일
        • 유도 속성
          • 기존의 다른 속성의 값에서 유도되어 결정되는 속성
          • ex) 성별에 따른 주민번호
        • 널 속성
          • 아직 결정되지 않은 존재하지 않는 값
        • 키 속성
          • 각 개체를 식별하는데 사용하는 속성
    • 관계
      • 개념
        • 서로 다른 개체가 맺고 있는 의미 있는 연관성
        • ERD에서는 마름모로 표현
  • 데이터 모델의 품질 기준
    • 기준 항목 (정완준최일활)
      • 정확성
        • 데이터 모델이 표기법에 따라 정확하게 표현되었고, 업무영역 또는 요구사항이 정확하게 반영되었음을 의미
      • 완전성
        • 데이터 모델의 구성 요소를 정의하는데 있어서 누락을 최소화하고, 요구사항 및 업무 영역 반영에 있어서 누락이 없음을 의미.
      • 준거성
        • 제반 준수 요건들이 누락 없이 정확하게 준수되었음을 의미
      • 최신성
        • 데이터 모델이 현행 시스템의 최신 상태를 반영하고 있고, 이슈 사항들이 지체 없이 반영되고 있음을 의미
      • 일관성
        • 여러 영역에서 공통으로 사용되는 데이터 요소가 전사 수준에서 한 번만 정의되고 이를 여러 다른 영역에서 참조, 활용되면서 모델 표현상의 일관성을 유지하고 있음을 의미
      • 활용성
        • 작성된 모델과 그 설명 내용이 이해 관계자에게 의미를 충분하게 전달할 수 있으면서, 업무 변화시에 설계 변경이 최소화되도록 유연하게 설계되어 있음을 의미

논리 데이터베이스 설계

  • 논리적 데이터 모델링
    • 개념
      • 개념적 설계에서 추출된 실체(ERD)와 속성들의 관계를 구조적으로 설계하는 단계
      • 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
  • 데이터베이스 정규화
    • 정규화 개념
      • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화
      • 중복이 많이 발생하게 되면 이상 현상이 발생하게 됨
        • 이상 현상(Anomaly) 종류
          • 삽입 이상
          • 삭제 이상
          • 갱신 이상
        • 함수적 종속 관계로 정규화를 수행
          • 부분 함수 종속과 이행 함수 종속을 제거해서 완전 함수 종속을 만들기 해결
          • 종속
            • 완전 함수 종속
            • 부분 함수 종속
            • 이행 함수 종속
    • 순서
      • 1정규형: 원자성
      • 2정규형: 부분함수 종속 제거
      • 3정규형: 이행함수 종속 제거
      • BCNF: 결정자이면서 후보키 아닌것 제거
      • 4정규형: 다치 종속제거
      • 5정규형: 조인 종속제거
    • 정규화의 장/단점
      • 장점
        • 데이터 중복 최소화
        • 저장 공간의 효율성 사용
        • 릴레이션에서 발생 가능한 이상 현상 제거
      • 단점
        • 실행 속도 저하
        • 처리 명령의 복잡성 증가
        • 분리된 여러 개의 테이블에서 정보를 취합하기 위한 JOIN 연산이 필요
        • 분리된 두 릴레이션 간 참조 무결성 유지를 위한 노력 필요
  • 이상 현상
    • 개념
      • 데이터 중복으로 인해 릴레이션 조작 시 예상하지 못한 곤란한 현상이 발생
    • 이상 현상 종류
      • 삽입 이상
        • 데이터를 삽입시 불필요한 데이터가 함께 삽입되는 현상
      • 삭제 이상
        • 한 튜플에서 삭제를 할 때 연쇄 삭제 현상으로 인해 정보 손실
      • 갱신 이상
        • 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 무결성을 해치는 이상
  • 함수적 종속
    • 개념
      • 어떤 릴레이션 R의 X와 Y를 각각 속성의 부분집합이라고 가정했을 때
        • X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 함
      • X → Y
    • 함수적 종속 관계 종류
      • 완전 함수적 종속
        • 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우
        • ex) X의 속성들을 알 때 Y를 알 수 있는 것으로
          • 학번과 과목을 알 때 점수를 알 수 있는 것
      • 부분 함수적 종속
        • 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 속성 중 일부만 종속되는 경우
        • 부분함수를 완전 함수로 만드는 것을 의미
        • ex) 한 릴레이션에 학번, 과목, 점수, 이름이 있을 경우
          • 점수는 학번과 과목 두 가지를 알아야 알 수 있지만
          • 이름은 학번만 알면 알 수 있기에 부분 함수적 종속이라고 한다.
      • 이행적 함수 종속
        • X → Y, Y → Z 의 종속 관계가 있을 경우, X → Z가 성립되는 경우

물리 데이터베이스 설계

  • 물리 데이터베이스 설계 과정
    • 사요자 DBMS 결정
    • 데이터 타입 크기 결정
    • 데이터 용량, 설계 및 업무 프로세스 분석
    • 역정규화(반정규화)
    • 인덱스 정의
    • 데이터베이스 생성
  • 반정규화
    • 개념
      • 시스템의 성능향상과 개발 편의성 등을 위해 정규화에 위배되는 중복을 허용하는 기법
    • 반정규화 시 고려사항
      • 데이터의 중복이 발생해 데이터 수정 시 무결성이 깨질 수 있다.
      • 읽기 속도는 향상되지만, 삽입, 삭제, 수정 속도는 느려진다.
      • 저장 공간의 효율이 떨어짐
      • 테이블이 크고 복잡해져 유지보수가 어려움
      • 과도한 반정규화는 오히려 성능을 저하시킴
  • 데이터베이스 이중화
    • 데이터베이스 이중화 구성
      • 장애발생 시 데이터베이스를 보호하기 위한 방법으로 동일한 데이터베이스를 중복시켜 동시에 갱신하여 관리하는 방법
      • 고가용성을 위해 사용
    • 데이터베이스 이중화의 목적
      • 장애 또는 재해 시 빠른 서비스 재개를 위함
      • 원활한 서비스의 성능을 보장하기 위함
    • 데이터베이스 이중화의 분류
      • Eager 기법
        • 트랜잭션 수행 중에 발생한 변경은 발생 즉시 모든 이중화서버로 전달하여 변경 내용 반영
      • Lazy 기법
        • 트랜잭션의 수행이 완전히 완료된 후에 변경 사실에 대한 새로운 트랜잭션을 작성하여 각 노드에게 전달하는 기법
    • 데이터베이스 이중화의 종류
      • Active-Active
        • 다중화된 장비가 모두 가동되는 방식
      • Active-StandBy
        • 두 대 중 하나는 가동이 되고, 하나는 장애 상황의 경우를 대비해서 준비 상태로 대기
        • Active-StandBy 타입
          • Hot StandBy
            • StandBy 장비가 가동되었을 때 즉시 사용가능
          • Warm StandBy
            • StandBy 장비가 가동되었을 때 설정에 대한 준비 시간이 필요함
          • Cold StandBy
            • StandBy 장비를 평소에는 정지시켜두며 필요에 따라서 직접 켜서 구성을 함
  • 데이터베이스 백업
    • 개념
      • 정전, 사이버 공격 및 다른 중단 사태에 대비하여 복구를 진행할 수 있도록 데이터를 주기적으로 복사하는 것을 의미
    • 백업 방식
      • 전체 백업: 특정 날에 전체 백업
      • 차등 백업: 전체 백업 이후 변경된 모든 것을 백업
      • 증분 백업: 전체 백업 이후 변경된 Data 만 백업
      • 실시간 백업: 즉각적으로 모든 변경사항을 분리된 스토리지 디바이스에 복사
      • 트랜잭션 로그 백업: 데이터베이스에서 실행되는 모든 SQL 문을 기록한 로그
        • REDO
        • UNDO
      • 합성 백업: 전체 백업본과 여러 개의 증분 백업을 합해 새로운 전체 백업을 만드는 작업
    • 복구 시간 목표/복구 시점 목표
      • 복구 시간 목표(RTO)
        • 서비스 중단 시점과 서비스 복원 시점 간에 허용되는 최대 지연 시간
        • 서비스를 사용할 수 없는 상태로 허용되는 시간
        • 즉, 복구까지 중간의 걸리는 시간
      • 복구 시점 목표(RPO)
        • 마지막 데이터 복구 시점 이후 허용되는 최대 시간
        • 마지막 복구 시점과 서비스 중단 시점 사이에 허용되는 데이터 손실량
        • 즉, 손실된 데이터 량
  • 데이터베이스 암호화
    • 개념
      • 데이터베이스의 내용을 암호화하는 것
    • 데이터베이스 암호화 방식
      • API 방식
        • 애플리케이션에서 데이터의 암/복호화를 수행
      • Plug-In 방식
        • 데이터베이스 서버에 제품을 설치→ 암/복호화 수행
      • TDE(Transparent Data Encryption) 방식
        • DBMS에 내장 또는 옵션으로 제공되는 암 호화 기능을 이용하는 방식
      • 파일 암호화 방식
      • 하드웨어 방식

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

  • 파티셔닝
    • 개념
      • 데이터베이스를 여러 부분으로 분할하는 것
    • 샤딩(Sharding)
      • 하나의 거대한 데이터베이스나 네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것
    • 파티셔닝 종류
      • 수평 분할
        • 하나의 테이블의 각 행들을 분할
      • 수직 분할
        • 테이블의 일부를 컬럼을 기준으로 분할
    • 파티셔능 분할 기준
      • 범위 분할(Range Partitioning)
        • Partition Key의 연속된 범위로 파티션을 정의
        • ex) 월별, 분기별 등
      • 해시 분할(Hash Partitioning)
        • Partition Key값에 해시 함수를 적용하고, 거기서 반환된 값으로 Partition Mapping
      • 목록 분할(List Partitioning)
        • 특정 Partition에 저장될 Data에 대한 명시적 제어
        • ex) [한국, 일본, 중국 → 아시아]
      • 합성 분할(Composite Partitioning)
        • 다른 분할 기법들을 복합적으로 사용하는 방식
      • 라운드 로빈 분할(Round Robin Partitioning)
        • 데이터를 균일하게 분배해서 저장하는 방식
  • 클러스터 설계
    • 개념
      • 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해서 조인이나 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법
    • 클러스터 대상 테이블
      • 분포도가 넓은 테이블
      • 대량의 범위를 자주 조회하는 테이블
      • 입력, 수정, 삭제가 자주 발생하지 않는 테이블
      • 자주 JOIN 되어 사용되는 테이블
      • ORDER BY, GROUP BY, UNION이 빈번한 테이블
  • 인덱스
    • 개념
      • 추가적인 저장 공간을 활용해 데이터베이스 테이블의 검색 속도를 향상 시키기 위한 자료구조
    • 인덱스 종류
      • 클러스터 인덱스
        • 데이블당 1개만 허용되며, 해당 컬럼으 기준으로 테이블이 물리적으로 정렬
      • 넌클러스터 인덱스
        • 테이블당 약 240개의 인덱스 생성 가능
        • 레코드의 원본은 정렬되지 않고, 인덱스 페이지만 정렬
      • 밀집 인덱스
        • 데이터 레코드 각각에 대해 하나의 인덱스가 만들어짐
      • 희소 인덱스
        • 레코드 그룹 또는 데이터 블록에 대해 하나의 인덱스가 만들어짐
    • 개념
      • 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
    • 장점
      • 논리적 데이터 독립성을 제공한다
      • 동일 데이터에 대해 동시에 여러 사용자의 상이한 요구를 지원해준다.
      • 접근 제어를 통한 자동 보안이 제공된다.
    • 단점
      • 독립적인 인덱스를 가질 수 없다.
      • ALTER VIEW문을 사용할 수 없다
  • 시스템 카탈로그
    • 개념
      • 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어 있는 시스템 테이블
      • 시스템 카탈로그를 데이터 사전(DD)이라고도 한다.
    • 특징
      • 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 사용자가 SQL문을 이용해 내용을 검색해 볼 수 있다.
      • 시스템 카탈로그는 데이터베이스 관리 시스템에 의해 생성되고 유지된다.