공부/정보처리기사

정처기 1권:: 2장. 데이터 입/출력 구현

Ynghan 2023. 9. 17. 19:37

section 29. 데이터베이스 개요

1. 데이터 저장소
: 데이터들을 논리적인 구조로 조직화하거나, 물리적인 공간에 구축하는 것.
□ 논리 데이터 저장소 : 데이터 및 데이터 간의 연관성, 제약조건을 식별하여 논리적인 구조로 조직화한 것이다.
□ 물리 데이터 저장소 : 논리 데이터 저장소를 소프트웨어가 운용될 환경의 물리적 특성을 고려하여 실제 저장장치에 저장한 것이다.

2. 데이터베이스(Database)
: 여러 사람에 의해 공동으로 사용될 데이터를 중복을 배제하여 통합하고, 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터이다.
□ 다음과 같이 구분하여 정의한다. 
    - 통합된 데이터
    - 저장된 데이터
    - 운영 데이터
    - 공용 데이터

3. DBMS(DataBase Management System; 데이터베이스 관리 시스템)
: 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
: 기존에 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템이다.
□ DBMS 필수 기능 3가지 
    - 정의 기능
    - 조작 기능
    - 제어 기능

4. 데이터의 독립성
: 종속성과 대비된다.
□ 논리적 독립성
: 응용 프로그램과 데이터베이스를 독립시킴으로써, 데이터의 논리적 구조를 변경시키더라도 응용 프로그램은 영향을 받지 않는다.
□ 물리적 독립성
: 응용 프로그램과 보조기억장치 같은 물리적 장치를 독립시킴으로써, 디스크를 추가/변경하더라도 응용 프로그램은 영향을 받지 않음

5. 스키마(Schema)
: 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것
외부 스키마
: 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것
개념 스키마
: 데이터베이스의 전체적인 논리적 구조
: 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로, 하나만 존재함
내부 스키마
: 물리적 저장장치의 입장에서 본 데이터베이스 구조
: 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄

section 30. 데이터베이스 설계

1. 데이터베이스 설계
: 사용자의 요구를 분석하여 그것들을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는 것

2. 데이터베이스 설계 시 고려사항
□ 무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 함.
□ 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함.
□ 회복
□ 보안
□ 효율성
□ 데이터베이스 확장

3. 데이터베이스 설계 순서
    ① 요구 조건 분석
    ② 개념적 설계
    ③ 논리적 설계
    ④ 물리적 설계
    ⑤ 구현

4. 요구 조건 분석
: 데이터베이스의 필요한 용도를 파악하는 것이다.

5. 개념적 설계(정보 모델링, 개념화)
: 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.

6. 논리적 설계(데이터 모델링)
: 현실 세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환(mapping)시키는 과정이다.
: 개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다.
: 개념적 설계가 개념 스키마를 설계하는 단계라면, 논리적 설계에서는 개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계이다.

7. 물리적 설계(데이터 구조화)
: 논리적 설계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정이다.
: 데이터베이스 파일의 저장 구조 및 액세스 경로를 결정한다.
: 저장 레코드의 형식, 순서, 접근 경로, 조회 집중 레코드 등의 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사한다.

8. 데이터베이스 구현
: 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정이다.
: 사용하려는 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후 컴파일하여 빈 데이터베이스 파일을 생성한다.
: 응용 프로그램을 위한 트랜잭션을 작성한다.
: 데이터베이스 접근을 위한 응용 프로그램을 작성한다.

section 31. 데이터 모델의 개념

1. 데이터 모델
: 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
: 데이터 모델은 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위한 개념적 도구들로 구성되어 있다. 

□ 데이터 모델 구성 요소 : 개체, 속성, 관계
□ 데이터 모델 종류 : 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
□ 데이터 모델에 표시할 요소 : 구조, 연산, 제약 조건

2. 개념적 데이터 모델
: 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정

3. 논리적 데이터 모델
: 개념적 구조를 컴퓨터 세계의 환경에 맞도록 변환하는 과정

4. 데이터 모델에 표시할 요소
□ 구조
□ 연산
□ 제약 조건

section 32. 데이터 모델의 구성 요소

1. 개체
2. 속성
3. 속성의 특성에 따른 분류

4. 속성의 개체 구성 방식에 따른 분류
□ 기본 속성(Basic Attribute)
: 업무 분석을 통해 정의한 속성
: 속성 중 가장 많고 일반적임
: 업무로부터 분석한 속성이라도 업무상 코드로 정의한 속성은 기본 속성에서 제외됨
□ 설계 속성(Designed Attribute)
: 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
: 업무에 필요한 데이터 외에 데이터 모델링을 위해 업무를 규칙화하려고 속성을 새로 만들거나 변형하여 정의하는 속성
□ 파생 속성(Derived Attribute)
: 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성
: 파생 속성은 되도록 적은 수를 정의하는 것이 좋음.

5. 관계
6. 관계의 형태
7. 관계의 종류

section 33. E-R(개체-관계) 모델

1. E-R(Entity-Relationship, 개체-관계) 모델

2. E-R 다이어그램

section 34. 관계형 데이터베이스의 구조 / 관계형 데이터 모델

1. 관계형 데이터베이스
: 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스

2. 관계형 데이터베이스의 릴레이션 구조
: 릴레이션은 데이터들을 표의 형태로 표현한 것.
: 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다.

3. 튜플(Tuple)
: 릴레이션을 구성하는 각각의 행

4. 속성(Attribute)
: 데이터베이스를 구성하는 가장 작은 논리적 단위

5. 도메인(Domain)
: 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합

6. 릴레이션 특징

7. 관계형 데이터 모델
: 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB 구조

section 35. 관계형 데이터베이스의 제약 조건 - 키(Key)

1. 키(Key)
: 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

2. 후보키(Candidate Key)
: 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
: 기본키로 사용할 수 있는 속성들
: 후보키는 유일성과 최소성을 모두 만족시켜야 한다.

3. 기본키(Primary Key)
: 후보키 중에서 특별히 선정된 주키(Main Key)이다.

4. 대체키(Alternate Key)
: 후보키가 둘 이상일 때, 기본키를 제외한 나머지 후보키를 의미

5. 슈퍼키(Super Key)
: 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
: 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
: 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못한다.

6. 외래키(Foreign Key)
: 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

section 36. 관계형 데이터베이스의 제약 조건 - 무결성(Integerity)

1. 무결성(Intergrity)
: 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성

2. 무결성의 종류
종류 내용
개체 무결성 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
참조 무결성 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함.
즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
도메인 무결성 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다.
사용자 정의 무결성 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다.
NULL 무결성 릴레이션의 특정 속성 값이 NULL이 될 수 없도록하는 규정.
고유 무결성 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정
키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
관계 무결성 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정

3. 데이터 무결성 강화

section 37. 관계대수 및 관계해석

1. 관계대수
: 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
: 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공
: 피연산자와 연산 결과가 모두 릴레이션이다.
: 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
: 순수 관계 연산자와 일반 집합 연산자가 있다.

2. 순수 관계 연산자
: 관계 데이터베이스에 적용하기 위해 특별히 개발.
종류 특징 기호
Select - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산

- 릴레이션의 행에 해당하는 튜플을 구하는 것이므로 수평연산이라고도 함
시그마
Project - 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 연산 결과에 중복이 발생하면 중복이 제거됨
- 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함
파이
Join - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Join의 결과는 Cartesian Product(교차곱)를 수행한 것과 같음
Division - X ⊃ Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산 ÷

3. 일반 집합 연산자
: 수학적 집합 이론에서 사용하는 연산자
: 합집합, 교집합, 차집합을 처리하기 위해서는 합병 조건을 만족해야 한다.
: 합병 가능한 두 릴레이션 R과 S가 있을 때, 각 연산의 특징을 요약하면 다음과 같다.
연산자 기능 및 수학적 표현 카디널리티(속성 수)
합집합(UNION) : ∪ 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산  
교집합(INTERSECTION) : ∩ 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산  
차집합(DIFFERENCE) : - 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산  
교차곱(CARTESIAN PRODUCT) : × 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산  

4. 관계해석(Relational Calculus)
: 관계 데이터의 연산을 표현하는 방법

section 38. 이상 / 함수적 종속

1. 이상(Anomaly)
: 테이블에서 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 문제가 발생하는 현상
□ 삽입 이상
□ 삭제 이상
□ 갱신 이상

2. 함수적 종속(Functional Dependency)
: 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자. 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때, Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X → Y로 표기한다.

□ 완전 함수적 종속
: 어떤 테이블에서 어떤 속성 집합 X에 대해 다른 속성 집합 Y가 완전 함수적 종속인 경우, X의 어떠한 부분 집합 Z에 의해 Y가 결정되지 않습니다.
□ 부분 함수적 종속
: 어떤 테이블에서 어떤 속성 집합 X에 대해 다른 속성 집합 Y가 부분 함수적 종속인 경우, X의 특정 부분 집합 Z에 의해 Y가 결정됩니다.
□ 이행적 함수적 종속
: X → Y이고 Y → Z 일 때, X → Z를 만족하는 관계

section 39. 정규화(Normalization)

1. 정규화(Nomalization)
: 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다.
: 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것

2. 정규화 과정
□ 제 1 정규형
: 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다.

□ 제 2 정규형
: 제 1 정규형이면서, 기본키(primary key)에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형

□ 제 3 정규형
: 제 2 정규형이면서, 이행적 함수 종속성을 제거한 정규형

□ BCNF
: 제 3 정규형을 조금 더 강화시킨 개념. 

section 40. 반정규화(Denormalization)

1. 반정규화(= 비정규화)
: 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위

□ 반정규화 방법
    - 테이블 통합
    - 테이블 분할
    - 중복 테이블 추가
    - 중복 속성 추가

2. 테이블 통합
: 두 개의 테이블이 조인(Join)되어 사용되는 경우가 많을 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것
□ 테이블 통합을 고려하는 경우
    - 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
    - 항상 두 개의 테이블을 이용하여 조회를 수행하는 경우
□ 테이블 통합의 종류
    - 1 : 1 관계 테이블 통합
    - 1 : N 관계 테이블 통합
    - 슈퍼타입/서브타입 테이블 통합

3. 테이블 분할
: 테이블을 수직 또는 수평으로 분할하는 것
수평 분할 - 레코드를 기준으로 테이블을 분할하는 것
- 레코드별로 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함
수직 분할 - 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할하는 것
- 종류 : 갱신 위주의 속성 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안을 적용해야 하는 속성 분할
4. 중복 테이블 추가
: 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
□ 중복테이블을 추가하는 경우
    - 여러 테이블에서 데이터를 추출해서 사용해야 하는 경우
    - 다른 서버에 저장된 테이블을 이용해야 하는 경우
□ 중복 테이블 추가 방법
집계 테이블 추가  
진행 테이블 추가  
특정 부분만을 포함하는 테이블의 추가  

5. 중복 속성 추가
: 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
: 중복 속성을 추가하면 데이터의 무결성 확보가 어렵고, 디스크 공간이 추가로 필요하다.
□ 중복 속성을 추가하는 경우
    - 조인이 자주 발생하는 속성인 경우
    - 접근 경로가 복잡한 속성인 경우
    - 액세스의 조건으로 자주 사용되는 속성인 경우
    - 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우

section 41. 시스템 카탈로그

1. 시스템 카탈로그(System Catalog)
: 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
: 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다.
: 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고도 한다.

2. 메타 데이터(Meta-Data)
: 시스템 카탈로그에 저장된 정보
□ 메타 데이터 유형
    - 데이터베이스 객체 정보 : 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
    - 사용자 정보 : 아이디, 패스워드, 접근 권한 등
    - 테이블의 무결성 제약 조건 정보 : 기본키, 외래키, NULL 값 허용 여부 등
    - 함수, 프로시저, 트리거 등에 대한 정보    

3. 데이터 디렉터리(Data Directory)
: 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
: 시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만 데이터 디렉터리는 시스템만 접근할 수 있다.

section 42. 트랜잭션 분석 / CRUD 분석

1. 트랜잭션(Transaction)
: 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
: 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.

2. 트랜잭션의 특성
특성 의미
원자성 트랜잭션 연산은 DB에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함
일관성 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
독립성, 격리성, 순차성 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
영속성, 지속성 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함

3. CRUD 분석
: 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것

□ CRUD 매트릭스
: 2차원 형태의 표로서, 행(Row)에는 프로세스를, 열(Column)에는 테이블을, 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터 간의 관계를 분석하는 분석표이다.

4. 트랜잭션 분석
: CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 한다.

CRUD 매트릭스

section 43. 인덱스

1. 인덱스(Index)
: 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조

2. 인덱스의 종류
종류 내용
트리 기반 인덱스 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
비트맵 인덱스 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
함수 기반 인덱스 컬럼의 값 대신 컬럼에 특정 함수(Function)나 수식을 적용하여 산출된 값을 사용하는 것
비트맵 조인 인덱스 다수의 조인된 객체로 구성된 인덱스
도메인 인덱스 개발자가 필요한 인덱스를 직접 만들어 사용하는 것

3. 클러스터드/넌클러스터드 인덱스
종류 내용
클러스터드 인덱스(Clustered Index) - 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음
넌클러스터드 인덱스(Non-Clustered Index) - 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서 유지를 위한 데이터 재정렬이 필요 없어 속도가 빠름

section 44. 뷰 / 클러스터

1. 뷰(View)
: 하나 이상의 기본 테이블로부터 유도된, 가상테이블

2. 뷰(View)의 장/단점
장점 단점
- 논리적 데이터 독립성 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해줌
- 사용자의 데이터 관리를 간단하게 해줌
- 접근 제어를 통한 자동 보안이 제공
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름
3. 클러스터(Cluster)
: 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법

section 45. 파티션

1. 파티션(Partition)
: 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것

2. 파티션의 장/단점
장점 단점
- 데이터 접근시, 액세스 범위를 줄여 쿼리 성능이 향상됨
- 파티션별로 데이터가 분산 저장 → 디스크 성능의 향상
- 백업 및 복구 속도 빠름
- 시스템 장애시 데이터 손상 최소화
- 데이터 가용성 향상
- 파티션 단위로 입/출력 분산 가능
- 테이블 세분화 관리의 어려움
- 테이블 간 조인 비용 증가
- 테이블의 용량에 따라 성능이 저하되는 현상 발생 가능

3. 파티션의 종류
범위 분할(Range Partitioning) 지정한 열의 값을 기준으로 분할
해시 분할(Hash Partitioning) - 해시 함수를 적용한 결과 값에 따라 데이터를 분할
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터가 고르게 분산할 때 유용
조합 분할(Composite Partitioning) - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용

section 46. 분산 데이터베이스 설계

1. 데이터베이스 용량 설계
: 데이터가 저장될 공간을 정의하는 것

2. 분산 데이터베이스 설계

□ 분산 데이터베이스
: 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트(Site)에 분산된 데이터베이스

3. 분산 데이터베이스의 목표
□ 위치 투명성
□ 중복 투명성

4. 분산 설계 방법
방법 설명
테이블 위치 분산 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치하는 방법
분할 테이블의 데이터를 분할하여 분산시키는 것
- 수평 분할
- 수직 분할
할당 동일한 분할을 여러 개의 서버에 생성하는 분산 방법

section 47. 데이터베이스 이중화 / 서버 클러스터링

1. 데이터베이스 이중화(Database Replication)
: 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해
  동일한 데이터베이스를 복제하여 관리하는 것

2. 데이터베이스 이중화의 분류
Eager 기법 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법
Lazy 기법 - 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법
- 데이터베이스마다 새로운 트랜잭션이 수행되는 것으로 간주

3. 데이터베이스 이중화 구성 방법
활동 - 대기(Active - Standby) 방법 - 한 DB가 활성 상태로 서비스하고 있으면 다른 DB는 대기하고 있다가 활성 DB에 장애가 발생하면 대기 상태에 있던 DB가 자동으로 모든 서비스를 대신 수행함
- 구성 방법과 관리가 쉬워 많은 기업에서 이용됨
활동 - 활동(Active - Active) 방법 - 두 개의 DB가 서로 다른 서비스를 제공하다가 둘 중 한쪽 DB에 문제가 발생하면 나머지 다른 DB가 서비스를 제공함
- 두 DB가 모두 처리를 하기 때문에 처리율이 높지만 구성 방법 및 설정이 복잡함

4. 클러스터링(Clustering)
: 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
: 서버 이중화 및 공유 스토리지를 사용하여 서버의 고가용성을 제공
□ 종류
고가용성 클러스터링 - 하나의 서버에 장애가 발생하면 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식
- 일반적으로 언급되는 클러스터링이 고가용성 클러스터링임
병렬 처리 클러스터링 - 전체 처리율을 높이기 위해 하나의 작업을 여러 개의 서버에서 분산하여 처리하는 방식

5. RTO/RPO
RTO(Recovery Time Objective, 목표 복구 시간) - 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미함
RPO(Recovery Point Objective, 목표 복구 시점) - 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미함

section 48. 데이터베이스 보안

1. 데이터베이스 보안
: 데이터베이스의 일부 또는 전체에 대해서 권한이 없는 사용자가 액세스하는 것을 금지하기 위해 사용되는 기술
: 보안을 위한 데이터 단위는 테이블 전체부터 특정 테이블의 특정 행과 열에 있는 데이터 값에 이르기까지 다양함

2. 암호화(Encryption)
: 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알 수 없도록 평문을 암호문으로 변환하는 것
□ 암호화 과정 : 암호화되지 않은 평문을 암호문으로 바꾸는 과정
□ 복호화 과정 : 암호문을 원래 평문으로 바꾸는 과정
□ 암호화 기법
    - 개인키 암호 방식
    - 공개키 암호 방식

3. 접근통제
: 데이터가 저장된 객체(데이터베이스 개체들)와 이를 사용하려는 주체(사용자) 사이의 정보
□ 접근통제 3요소
    - 접근통제 정책
    - 접근통제 메커니즘
    - 접근통제 보안모델
□ 접근통제 기술
정책 특징
임의 접근통제 - 데이터에 접근하려는 사용자의 신원에 따라 접근 권한을 부여하는 방식
강제 접근통제 - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
역할기반 접근통제 - 사용자의 역할에 따라 접근 권한을 부여하는 방식
- 임의 접근통제와 강제 접근통제의 단점을 보완함

4. 접근통제 정책
: 어떤 주체가 언제, 어디서, 어떤 객체에게, 어떤 행위에 대한 허용 여부를 정의하는 것
□ 종류
종류 특징
신분 기반 정책 - 주체나 그룹의 신분에 근거해 객체의 접근을 제한하는 방법
규칙 기반 정책 - 주체가 갖는 권한에 근거하여 객체의 접근을 제한하는 방법
역할 기반 정책 주체의 신분이 아닌 주체가 맡은 역할에 근거하여 객체에 접근을 제한하는 방법

5. 접근통제 메커니즘
: 정의된 접근통제 정책을 구현하는 기술적인 방법이다.
: 접근통제 목록, 능력 리스트, 보안 등급, 패스워드, 암호화 등이 있다.

6. 접근통제 보안 모델
: 보안 정책을 구현하기 위한 정형화된 모델이다.
□ 종류
종류 특징
기밀성 모델 - 군사적인 목적으로 개발된 최초의 수학적 모델
- 기밀성 보장이 최우선
무결성 모델 기밀성 모델에서 발생하는 불법적인 정보 변경을 방지하기 위해 무결성을 기반으로 개발된 모델
접근통제 모델 - 접근통제 메커니즘을 보안 모델로 발전시킨 것

7. 접근통제 조건
: 접근통제 메커니즘의 취약점을 보완하기 위해 접근통제 정책에 부가하여 적용할 수 있는 조건이다.

값 종속 통제 : 객체에 저장된 값에 따라 다르게 접근통제를 허용해야 하는 경우에 사용
다중 사용자 통제 : 지정된 객체에 다수의 사용자가 동시에 접근을 요구하는 경우에 사용
컨텍스트 기반 통제 : 특정 시간, 네트워크 주소, 접근 경로, 인증 수준 등에 근거하여 접근을 제어하는 방법

8. 감사 추적
: 사용자나 애플리케이션이 데이터베이스에 접근하여 수행한 모든 활동을 기록하는 기능

section 49. 데이터베이스 백업

1. 데이터베이스 백업
: 전산 장비의 장애에 대비하여 데이터베이스에 저장된 데이터를 보호하고 복구하기 위한 작업

2. 로그 파일
: 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일

3. 데이터베이스 복구 알고리즘
NO-UNDO / REDO - 데이터베이스 버퍼의 내용을 비동기적으로 갱신한 경우의 복구 알고리즘
- NO-UNDO : 트랜잭션 완료 전에는 변경 내용이 데이터베이스에 기록되지 않으므로 취소할 필요가 없음
- REDO : 트랜잭션 완료 후 데이터베이스 버퍼에는 기록되어 있고, 저장매체에는 기록되지 않았으므로 트랜잭션 내용을 다시 실행해야함
UNDO / NO-REDO - 데이터베이스 버퍼의 내용을 동기적으로 갱신한 경우의 복구 알고리즘
- UNDO : 트랜잭션 완료 전에 시스템이 파손되었다면 변경된 내용을 취소함
- NO-REDO : 트랜잭션 완료 전에 데이터베이스 버퍼 내용을 이미 저장 매체에 기록했으므로 트랜잭션 내용을 다시 실행할 필요가 없음
UNDO / REDO - 데이터베이스 버퍼의 내용을 동기/비동기적으로 갱신한 경우의 복구 알고리즘
- 데이터베이스 기록 전에 트랜잭션이 완료될 수 있으므로 완료된 트랜잭션이 데이터베이스에 기록되지 못했다면 다시 실행해야함
NO-UNDO / NO-REDO - 데이터베이스 버퍼의 내용을 동기적으로 저장 매체에 기록하지만 데이터베이스와는 다른 영역에 기록한 경우의 복구 알고리즘
- NO-UNDO : 변경 내용은 데이터베이스와 다른 영역에 기록되어 있으므로 취소할 필요가 없음
- NO-REDO : 다른 영역에 이미 기록되어 있으므로 트랜잭션을 다시 실행할 필요가 없음
*Undo(복귀) : 로그에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구함
*Redo(재생) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행 시킴
*비동기적 갱신 : 트랜잭션이 완료된 내용을 일정 주기나 작업량에 따라 시간 차이를 두고 저장매체에 기록하는 것
*동기적 갱신 : 트랜잭션이 완료되기 전에 데이터베이스 버퍼 내용을 동시적으로 저장매체에 기록하는 것

4. 백업 종류
: 복구 수준에 따라서 운영체제를 이용하는 물리 백업과 DBMS 유틸리티를 이용하는 논리 백업으로 나뉜다.

□ 물리 백업
    - 데이터베이스 파일을 백업하는 방법
    - 백업 속도가 빠르고 작업이 단순하지만 문제 발생 시 원인 파악 및 문제 해결이 어렵다.

□ 논리 백업
    - DB 내의 논리적 객체들을 백업하는 방법
    - 복원 시 데이터 손상을 막고 문제 발생 시 원인 파악 및 해결이 수월하지만 백업/복원 시 시간이 많이 소요된다.

section 50. 스토리지

1. 스토리지(Storage)
: 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술

□ 종류
    - DAS, NAS, SAN 등

2. DAS(Direct Attached Storage)
: 서버와 저장장치를 전용 케이블로 직접 연결하는 방식

3. NAS(Network Attached Storage)
: 서버와 저장장치를 네트워크를 통해 연결하는 방식

4. SAN(Storage Area Network)
: 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식

section 51. 논리 데이터 모델의 변환

1. 엔티티(Entity)를 테이블로 변환
: 논리 데이터 모델에서 정의된 엔티티를 물리 데이터 모델의 테이블로 변환하는 것이다.

2. 슈퍼타입/서브타입을 테이블로 변환
: 논리 데이터 모델에서 이용되는 형태이므로 물리 데이터 모델을 설계할 때는 슈퍼타입/서브타입을 테이블로 변환해야 한다.
: 슈퍼타입 기준 테이블 변환, 서브타입 기준 테이블 변환, 개별타입 기준 테이블 변환 등이 있다.

3. 슈퍼타입 기준 테이블 변환
: 서브타입을 슈퍼타입에 통합하여 하나의 테이블로 만드는 것

4. 서브타입 기준 테이블 변환
: 슈퍼타입 속성들을 각각의 서브타입에 추가하여 서브타입들을 개별적인 테이블로 만드는 것

5. 개별타입 기준 테이블 변환
: 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환하는 것

6. 속성을 컬럼으로 변환
: 논리 데이터 모델에서 정의한 속성을 물리 데이터 모델의 컬럼으로 변환한다.
일반 속성 변환 속성과 컬럼은 명칭이 반드시 일치할 필요는 없으나, 개발자와 사용자 간 의사소통을 위하여 가능한 한 표준화된 약어를 사용하여 일치시키는 것이 좋음
Primary UID를 기본키로 변환 논리 데이터 모델에서의 Primary UID는 물리 데이터 모델의 기본키로 만듦
Primary UID(관계의 UID Bar)를 기본키로 변환 다른 엔티티와의 관계로 인해 생성된 Primary UID는 물리 데이터 모델의 기본키로 만듦
Secondary(Alternate) UID를 유니크키로 변환 논리 모델링에서 정의된 Secondary UID 및 Alternate Key는 물리 모델에서 유니크키로 만듦

7. 관계를 외래키로 변환
: 논리 데이터 모델에서 정의된 관계는 기본키와 이를 참조하는 외래키로 변환한다.

section 52. 자료 구조

1. 자료 구조
: 자료를 기억장치의 공간 내에 저장하는 방법자료 간의 관계, 처리 방법 등을 연구 분석하는 것을 말함.
: 저장 공간의 효율성과 실행시간의 단축을 위해 사용

2. 배열
: 크기와 형(Type)이 동일한 자료들이 순서대로 나열된 자료의 집합

3. 연속 리스트
: 연속되는 기억장소에 저장되는 자료 구조

4. 연결 리스트
: 자료들을 임의의 기억공간에 기억시키되, 노트의 포인터 부분을 이용하여 서로 연결시킨 자료 구조

5. 스택
: 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조

6. 큐
: 리스트의 한쪽에서는 삽입 작업, 다른 한쪽에서는 삭제 작업이 이루어지는 자료 구조

7. 그래프
: 정점(Vertex)과 간선(Edge)의 두 집합으로 이루어지는 자료 구조

8. 방향/무방향 그래프의 최대 간선 수
□ 방향 그래프의 최대 간선 수 : n(n-1)
□ 무방향 그래프의 최대 간선 수 : n(n-1)/2

section 53. 트리(Tree)

1. 트리
: 정점(Vertex)과 선분(Edge)을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
: 트리는 하나의 기억 공간을 노드(Node)라고 하며, 노드와 노드를 연결하는 선을 링크(Link)라고 한다.

2. 트리 관련 용어
□ 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지를 합친 것
□ 근 노드(Root Node)
□ 디그리(Degree) : 각 노드에서 뻗어나온 가지의 수
□ 단말 노드(Terminal Node) : 자식이 하나도 없는 노드
□ 비단말 노드(Non-Terminal Node) : 자식이 하나라도 있는 노드
□ 조상 노드(Ancestors Node)
□ 자식 노드(Son Node)
□ 부모 노드(Parent Node)
□ 형제 노드(Brother Node)
□ Level
□ 깊이(Depth, Height)
□ 숲(Forest)
□ 트리의 디그리

section 54. 이진 트리(Tree)

1. 이진 트리 : 차수(Degree)가 2 이하인 노드들로 구성된 트리

2. 트리의 운행법
□ 운행법(Traversal) : 트리를 구성하는 각 노드들을 찾아가는 방법
    - Preorder 운행
    - Inorder 운행
    - Postorder 운행

3. Preorder 운행법
: 이진 트리를 Root → Left → Right 순으로 운행  

4. Inorder 운행법
: 이진 트리를 Left → Root → Right 순으로 운행

5. Postorder 운행법
: 이진 트리를 Left → Right → Root 순으로 운행

section 55. 정렬(Sort)

1. 삽입 정렬(Insertion Sort)
: 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식

2. 선택 정렬(Selection Sort)
: 최소값을 찾아 첫 번째 레코드 위치에 놓고, 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식

3. 버블 정렬(Bubble Sort)
: 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식

4. 쉘 정렬(Shell Sort)
: 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 Insertion 정렬 방식으로 순서 배열하는 정렬 방식

5. 퀵 정렬(Quick Sort)
: 키를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브 파일에 분해시키는 정렬 방식

6. 힙 정렬(Heap Sort)
: 전이진 트리를 이용한 정렬 방식

7. 2-Way 합병 정렬(Merge Sort)
: 이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬 방식

8. 기수 정렬(Radix Sort) = Bucket Sort
: Queue를 이용하여 자릿수(Digit) 별로 정렬하는 방식