8 분 소요

정보처리기사를 취득하기 위해 공부하는 과정에 작성한 ‘데이터베이스 구축’ 관련 정리이다.

데이터베이스의 개념

데이터베이스 : DBMS

  • 지료 : 단순한 데이터, 정보 : 의미 있는 데이터, 지식 : 가공되어 의미 있는 데이터
  • 정보 시스템 : 조직체의 데이터를 바탕으로 정보를 추출 및 생성하는 시스템
    • 정보 시스템 종류 : 일괄 처리 시스템, 온라인 실시간 처리 시스템, 분산 처리 시스템
  • DB정의 : 통합 데이터, 저장 데이터, 운영 데이터, 공용 데이터
  • DB 특성 : 실시간 접근성, 내용에 의한 참조, 동시 공유, 계속적 변화
  • DB 시스템 구성 : DB, DBMS, DB 관리자, DB 언어

데이터 관리 / 빅데이터 관리

  • 데이터 마이닝 : 데이터 웨어하우징에서 수집·분석된 자료를 사용자에 제공하기 위해 분류·가공하는 요소 기술
    • 분류 : 데이터를 여러 그룹으로 분류
    • 연관 규칙 분석 : 특정 규칙 탐색
    • 연속 : 순서 정보를 갖는 데이터에서 순서 관련 패턴 탐색
    • 군집화 : 데이터를 비슷한 특성의 그룹으로 나눔
    • 예측 : 과거 데이터를 분석해 미래 예측
    • 이상 탐지 : 데이터에섯 비정상적인 패턴 탐색
    • 회귀 분석 : 데이터 간의 관계를 분석
    • 차원 축소 : 데이터 차원을 줄여서 분석
  • 하둡 : 빅데이터 세트를 병렬로 처리하기 위한 데이터 분산 처리를 돕는 자바 기반 소프트웨어 오픈소스 프레임워크
    • 맴리듀스 : 대용량 데이터를 분산 처리하기 위한 프로그래밍 모델 (Map, Reduce 함수로 구성)
    • Sqoop : RDBMS과 하둡 간의 데이터 전송을 지원하는 도구

데이터베이스 스키마와 언어

  • 스키마 : 데이터베이스 구조 (개체, 속성, 관계) 정의 (데이터베이스의 논리적 구조를 기술해 데이터 일관성·무결성 보장)
    • 외부 스키마 : 데이터베이스 사용자, 응용 프로그램의 관점에서 데이터베이스 정의
    • 개념 스키마 : 데이터베이스 전체를 정의한 것으로, 데이터 개체·관계·제약 조건·접근 권한·무결성 규칙을 명세
    • 내부 스키마 : 내부 물리적 저장 구조를 정의해 데이터의 실제 저장 방법을 기술
  • 스키마 간 독립성 : 논리적 독립성, 물리적 독립성
  • 데이터베이스 언어 : 데이터베이스 내에서 활용되는 언어
    • SQL : 관계형 데이터베이스의 표준 질의어

데이터베이스 설계와 관계형 모델

데이터베이스 설계

  • 데이터베이스 설계 단계 : 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
    • 개념적 설계 : 목표 DBMS에 독립적인 개념 스키마 설계 (기념 스키마 모델링, 트랜잭션 모델링)
    • 논리적 설계 : 목표 DBMS에 종속적인 논리 스키마 설계 (스키마 평가 및 정제, 트랜잭션 인터페이스 설계)
    • 물리적 설계 : 목표 DBMS에 종속적인 물리적 구조 설계 (저장 레코드 양식 설계, 레코드 클러스터링)
      • 물리적 설계 고려사항 : 인덱스 구조, 레코드 크기·개수, 트랜잭션 갱신·참조 성향, 개념 스키마 변경 여부

데이터 모델 / 관계형 데이터베이스 모델

  • 데이터 모델 : 데이터베이스 설계 과정에서 데이터 구조를 표현하기 위해 사용되는 도구
    • 데이텉 모델 구성 요소 : 데이터 구조, 연산, 제약 조건
  • 개념 데이터 모델 : 속성들로 기술된 개체 타입과 개체 타입 간의 관계를 이용해 현실 세계를 표현
    • 개체-관계 모델 (E-R 모델): 개체 타입과 이들 간 관계 타입을 이용해 개념적 표현
    • 논리 데이터 모델 : 엔티티와 속성들의 관계를 구조적으로 정의
      • 논리 데이터 모델 종류 : 계층적 데이터 모델, 네트워크형 데이터 모델, 관계형 데이터 모델
        • 논리 데이터 모델 구성 요소 : 개체, 속성, 관계
  • 관계형 데이터베이스 모델 : 관계형 데이터베이스를 구성하는 개체나 관계를 릴레이션으로 표현
    • 릴레이션 스키마 : 개념 모델에 도출된 개체를 컴퓨터로 처리 가능한 단위로 매핑한 모델(릴레이션 이름과 속성의 집합)
    • 릴레이션 인스턴스 : 릴레이션 스키마에 따라 저장된 튜플 (테이블의 각 행)
    • 릴레이션 속성 : 순서가 없는 데이터베이스의 가장 작은 논리적 단위로서의 릴레이션의 열
    • 디그리 : 릴레이션이 가지는 속성의 개수 (디그리 값이 클수록 복잡한 구조 → 정규화 필요)
    • 도메인 : 하나의 속성이 가질 수 있는 원자값들의 집합 (데이터 무결성·일관성 유지에 활용)
    • 튜플 : 순서가 없는 릴레이션의 행 (카디널리티 : 튜픙의 수)
  • 릴레이션의 특징 : 튜플의 유일성, 튜플의 무순서성, 속성의 원자성, 속성의 무순서성
  • CRUD 매트릭스 : 데이터베이스에 영향 주는 CRUD 연산으로 프로세스·테이블 간 메트릭스를 만들어 트랜잭션 분석

키와 무결성

  • 슈퍼 키 : 튜플을 고유하게 식별하는 하나 이상의 속성 집합 (유일성O, 최소성X)
  • 후보 키 : 튜플을 고유하게 식별하는 하나 이상의 속성 집합 (유일성O, 최소성O)
  • 기본 키 : 후보 키 중 대표인 키 (NullX, 중복X, 유일성O, 최소성O)
  • 대체 키 : 후보 키 중 기본 키 외의 나머지 키
  • 외래 키 : 릴레이션 간 연결을 위해 다른 테이블의 기본 키로 사용되는 키
  • 무결성 : 데이터에 적용되는 연산에 제한을 두어 데이터의 정확성·일관성·유효성 유지
    • 개체 무결성 : 기본 키는 NullX, 중복X
    • 참조 무결성 : 외래 키를 변경하려면, 외래 키가 참조하는 대상의 기본 키도 변경해야 함
    • 도메인 무결성 : 각 속성은 해당 속성 도메인에 지정된 값이어야 함

데이터베이스 정규화

이상 현상과 함수적 종속

  • 이상 현상 : 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 현상
    • 삽입 이상 : 데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상
    • 삭제 이상 : 릴레이션의 한 튜플을 삭제할 때 연쇄적으로 삭제되는 현상
    • 갱신 이상 : 튜플 중에 일부 속성을 갱신해 정보의 모순성이 발생하는 현상
  • 함수적 종속 : 개체 내에 존재하는 속성 간의 관계를 종속적인 관계로 정리하는 방법
    • 부분적 함수 종속 : 혼한 속상 기본키 {A, B}에 대해 A → C가 성립
    • 이행 함수적 종속 : 속성 X, Y, Z가 주어졌을 때, X → Y, Y → Z하면 X → Z

데이터베이스 정규화 / 반정규화

  • 정규화 : 논리적 설계 단계에서 발생할 수 있는 종속으로 인한 이상 현상의 문제를 해결하기 위해 여러 테이블로 분해
    • 정규화 목적 : 데이터 구조 안정성 확보, 중복 데이터·수정 및 삭제 시 이상·테이블 불일치 최소화
    • 정규화 과정 : 비정규 릴레이션 → 1NF2NF3NFBCNF4NF5NF
  • 1정규형 : 어떤 테이블에 속한 모든 도메인이 원자값만으로 되어 있는 테이블
  • 2정규형 : 1정규형을 만족하면서, 테이블의 부분 함수적 종속을 제거해 완전 함수적 종속이 되도록 분해된 테이블
  • 3정규형 : 1,2정규형을 만족하면서, 속성 간 이행 함수 종속을 만족하는 테이블
  • BCNF정규형 : 1,2,3정규형을 만족하면서, 결정자가 후보키가 아닌 함수 종속이 제거된 테이블
  • 4정규형 : 1,2,3정규형을 만족하면서, 다치 종속이 제거된 테이블
  • 5정규형 : 1,2,3,4정규형을 만족하면서, 조인 종속이 제거된 테이블
  • 반정규화 : 정규화된 결과를 시스템 성능 향상 및 개발·운영 단순화를 위해 중복·통합·분리를 수행
    • 반정규화 기법 : 테이블 반정규화 (테이블 병합, 테이블 분할, 테이블 추가), 컬럼 반정규화, 관계 반정규화
    • 파티셔닝 : 데이터베이스의 테이블을 분할하는 것
      • 파티셔닝 키 기준 유형 : 범위 분할, 목록 분할, 해시 분할, 합성 분할, 라운드로빈 분할

SQL

관계 대수와 연산자

  • 관계 대수 : 원하는 정보 및 정보를 어떻게 유도하는지 기술하는 절차적 방법 (일반 집합 연산, 순수 관계 연산)
  • 관계 해석 : 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 방법 (도메인 관계 해석, 튜플 관계 해석)
    • 관계 해석 자유 변수 : 전칭 정량자 (For All), 존재 정량자 (For Some)
  • 순수 관계 연산자 : Select (튜플 집합 검색), Project (속성 집합 추출), Join (두 릴레이션 공통 속성 결합), Division (두 릴레이션에서 특정 속성를 제외한 속성으로 나눔)
  • 집합 산자 : 합집합 (Union), 교집합 (Intersection), 차집합 (Difference), 교차곱 (Cartesian Product)

뷰, 시스템 카탈로그

  • 뷰 : 사용자에 접근 허용된 자료만을 제한적으로 보여주기 위해 기본 테이블에서 유도되는 가상 테이블
    • 뷰 생성 시 CREATE, 검색 시 SELECT 사용
    • 뷰 정의 변경 시 ALTER 대신 DROP 사용
    • 뷰를 이용한 또다른 뷰의 생성이 가능 (하나의 뷰 제거 시 기반한 뷰들도 함꼐 삭제)
    • 뷰에 대한 조작에서 삽입·갱신·삭제는 제약
    • 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동 제거
  • 시스템 카탈로그 (데이터 사전) : 시스템 자신이 필요하는 여러 객체들에 대한 정보를 가진 시스템 데이터베이스
    • 메타 데이터 : 시스템 카탈로그에 저장되는 내용
    • 시스템 카탈로그 기능 : 테이블·뷰·인덱스·사용자 계정 정보 조회
  • 인덱스 : 원하는 자료를 검색하기 위해, 인덱스 파일 및 인덱스 파일 (키, 주소)로 구성된, 독립적인 저장 공간

DDL

  • 데이터 정의어 (DDL) : 스키마 정의·변경·삭제 (논리적 데이터 구조와 물리적 데이터 구조 간의 사상 정의)
    • CREATE : 스키마·도메인·테이블·뷰 정의
      • CREATE TABLE : 테이블 생성
    • ALTER : 테이블 정의 변경 (필드 추가·삭제·갱신)
      • ALTER TABLE : 테이블 구조 변경
    • DROP : 스키마·도메인·테이블·뷰 삭제

DCL

  • 데이터 제어어 (DCL) : 데이터 무결성·제어
    • COMMIT : 명령어로 수행된 실제 물리적 디스크에 저장한 뒤에 결과 반환
    • ROLLBACK : 명령어로 수행에 실패했음을 알리고, 수행된 결과를 원상 복귀
    • GRANT : 관리자가 사용자에 데이터베이스에 대한 권한을 부여
    • REVOKE : 관리자가 사용자에 데이터베이스에 대한 권한을 취소

DML

  • 데이터 조작어 (DML) : 데이터 검색·삽입·삭제·변경
    • SELECT : 튜플 검색
      • BETWEEN ~ AND ~ : 튜플 검색 시 구간 값 조건식
      • 그룹 함수 (GROUP BY~) : COUNT (행의 수), SUM (하나 이상의 열 합게),
        AVG (하나 이상의 열 평균), MAX (열의 최댓값), MIN (열의 최솟값)</br>
        • HAVING : 튜플 검색 시 그룹 함수와 결합해 탐색 조건을 지정하는 조건식
      • ORDER BY~ : 특정 항목 기준으로 검색 테이블의 행들을 오름차순·내림차순으로 정렬
      • 하위 질의 = 서브 퀴리 : 하위 질의를 1차 수행한 다음, 반환값을 상위 릴레이션의 WHERE에서 사용
    • INSERT : 튜플 삽입
    • UPDATE : 튜플 내용 변경
    • DELETE : 튜플 삭제

NoSQL, 절차형 SQL

  • NoSQL : 스키마가 고정되지 않은 비관계형 데이터 모델로 데이터를 저장·검색하는 데이터베이스
  • 절차형 SQL : SQL의 연속 실행, 조건에 따른 반복, 분기 등의 제어 가능
    • 저장 프로시저 : 사용자가 자주 사용하는 명령문을 작성해 데이터베이스에 저장한 PL/SQL 명령문
      • 트리거 : 데이터베이스에 특정 사건이 발생할 때마다 자동으로 수행되는 저장 프로시저

데이터베이스 병행 제어와 보안

트랜잭션

  • 트랜잭션 : 하나의 논리적 기능을 수행하기 위한 작업 단위
    • 트랜잭션의 특징 : 원자성 (완전 수행 안되면 수행 X), 일관성 (트랜잭션 실행 전후 상태가 일관성 유지)
      고립성 (트랜잭션 실행 시 다른 트랜잭션에 독립적), 영속성 (트랜잭션 결과가 데이터베이스에 저장)
    • 트랜잭션 상태 : 활동, 부분 완료 (실행 마치고 저장 직전), 완료, 실패, 철회
    • 리커버리 연산 : 트랜잭션 수행 중에 장애로 손상된 데이터베이스를 정상 상태로 복구 (Redo, Undo)
    • 즉각 갱신 : 데이터를 갱신하면 트랜잭션 완료 전에 실제 데이터베이스에 반영

병행 제어, 회복

  • 병행 제어 : 동시에 수행되는 트랜잭션을 일관성 있게 처리하기 위해 제어
    • 병행 제어 목적 : 데이터베이스 공유·일관성·시스템 활용도 최대화, 사용자 응답 시간 최소화
    • 병행 제어 종류 : 로킹, 타임스탬프, 최적 병행 수행, 다중 버전 기법
  • 로킹 : 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스 불가하게 함
    • 2단계 로킹 : 트랜잭션의 로크·해제 요청을 2단계로 실시 (직렬성은 보장하지만, 교착상태 예방은 불가능)
      • 2단계 로킹 단계 : 확장 단계 (트랜잭션 시작 시 모든 잠금 확보), 축소 단계 (트랜잭션 완료 시 잠금 해제)
      • 2단계 로킹 잠금 상태 : 공유 잠금 (타 트랜잭션 읽기 가능), 배타적 잠금 (타 트랜잭션 읽기 불가능)
  • 타임스탬프 : 시간 허가 인증 도장을 부여받아 트랜잭션 간 순서를 미리 정함
  • 회복 : 데이터 손실 및 손상이 발생했을 때 이를 복구
    • 회복 기법 종류 : 즉시 갱신, 지연 갱신, Redo, Undo

데이터베이스 보안과 권한 설정

  • 암호화 : 네트워를 통하거나 컴퓨터 내부에 자료를 저장할 때 권한을 가진 사람 외엔 데이터를 보지 못하도록 함
    • 암호화 기법 : 비밀 키 (대칭 키), 공개 키 (비대칭 키)
  • 데이터베이스 보안 적용 주의사항 : 접근 제어, 데이터 암호화, 취약점 관리, 백업과 복원, 감시와 모니터링

분산 데이터베이스

  • 분산 데이터베이스 : 네트워크를 통해 연결된 여러 컴퓨터에 데이터가 분산된 데이터베이스 → 분산 데이터베이스 투명성
    • 위치 투명성 : 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
    • 중복 투명성 : 사용자에 통지할 필요 없이 시스템 안에 자원들의 부가적인 복사를 자유롭게 할 수 있다.
    • 병행 투명성 : 다중 사용자들이 자원을 자동으로 공유할 수 있다.
    • 장애 투명성 : 사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없다.
  • 분산 데이터베이스 구성 요소 : 분산 처리기, 분산 데이터베이스, 틍신 네트워크
  • 분산 데이터베이스 연결 모델 : 클라이언트·서버 모델, Peer-to-Peer 모델, 클러스터 모델