chapter2. 데이터 입출력 구현

Yeppi's 개발 일기·2022년 5월 9일
12

정보처리기사

목록 보기
2/7

😳혹시 요약집 복사하실 분들은 댓글이나 공감 눌러주세요😳

DB(Database)

공동, 중복배제, 통합, 저장, 항상 사용, 운영 데이터

공동으로 사용될 데이터를 중복 배제하여 통합하고, 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영데이터

DBMS(DataBaseManagementSystem)

사용자 요구, 정보 생성, DB관리 ,SW

사용자 요구에 따라 정보생성해주고, 데이터베이스 관리를 해주는 소프트웨어


Schema 스키마

DB, 구조, 제약조건, 명세

데이터베이스의 구조제약조건에 관한 전반적인 명세를 기술한 것

Schema 스키마 종류 (3가지)

외부 스키마 → 개인, 논리적 구조
개념 스키마 → 전체, 논리적 구조, 종합, 하나만 존재
내부 스키마 → 물리적, 저장장치


DB 설계 순서 (5단계)

  1. 요구 조건 분석
    DB를 사용할 사람들로부터 필요한 용도 파악
  1. 개념적 설계 (정보 모델링, 개념화)
    현실세계에 대한 인식추상적 개념으로 표현하는 과정

  2. 논리적 설계 (데이터 모델링)
    현실세계에서 발생한 자료를 특정 DBMS가 지원하는 논리적 자료 구조변환시키는 과정

  3. 물리적 설계 (데이터 구조화)
    논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정

  4. 데이터베이스 구현
    논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마파일로 생성하는 과정


Schema 스키마

현실세계 정보 / 체계적 표현 / 개념적 모형

현실 세계정보들을 컴퓨터에 체계적으로 표현한 개념적 모형

데이터 모델 종류 (3가지)

개념적 데이터 모델

현실 세계에 대한 인간의 이해를 돕기 위해,
현실 세계에 대한 인식추상적 개념으로 표현하는 과정. ex) E-R 모델


논리적 데이터 모델

개념적 구조컴퓨터 세계의 환경에 맞도록 변환하는 과정


물리적 데이터 모델

실제 컴퓨터에 데이터가 저장되는 방법을 정의하는 물리 데이터베이스 설계과정


데이터 모델에 표시하는 요소 / 데이터 모델 구성 요소 (3가지)


구조(Structure)

개체 관계 / 구조 / 정적성질

논리적으로 표현된 개체 타입간의 관계로, 데이터 구조정적 성질 표현


연산(Operation)

실제 데이터 처리 / 조작

DB에 저장된 실제 데이터 처리 작업의 명세로, DB 조작하는 기본 도구


제약조건(Constraint)

논리적인 제약 조건

실제 데이터의 논리적인 제약 조건


데이터 모델 구성 요소 (3가지)

개체(Entity)

DB에 표현하려는 것. 개념, 정보 단위 같은 현실 세계대상체


속성(Attribute)

DB를 구성하는 가장 작은 논리적 단위
속성의 수 → 디그리(Degree) or 차수


관계(Relationship)

개체논리적인 연결


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

현실세계, 데이터, 개념적, 논리 데이터

현실 세계의 무질서한 데이터개념적논리 데이터로 표현하는 방법


관계형 데이터베이스(Relational Database)

2차원 표, 상호 관계, 정의

2차원적인 를 이용해서 **데이터 상호 관계정의**하는 데이터베이스


관계형 데이터 모델(Relational Data Medel)

2차원 표, 상호 관계, 정의, DB구조

2차원적인 를 이용해서 **데이터 상호 관계정의하는 데이터베이스 구조**


관계형 데이터베이스의 릴레이션 구조

릴레이션(Relation)

데이터들을 표 형태로 표현. 릴레이션 스키마 + 릴레이션 인스턴스


튜플(Tuple)

릴레이션의 각
튜플의 수 → 카디널리티(Cardinality) = 기수 = 대응수


속성(Attribute)

DB를 구성하는 가장 작은 논리적 단위
속성의 수 → 디그리(Degree) = 차수


도메인(Domain)

하나의 속성이 취할 수 있는 같은 타입의 원자(Atomic)들의 집합

릴레이션(Relation) 특징

한 릴레이션에 포함된 튜플모두 상이하다

한 릴레이션에 포함된 튜플 사이에 순서는 없다.

릴레이션은 시간에 따라 변한다

속성들 간의 순서는 중요하지 다.

속성의 명칭유일해야 하지만, 속성을 구성하는 값동일한 값이 있을 수 있다.

튜플을 유일하게 식별하기 위해 속성들의 부분집합Key로 설정한다.

속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장한다.


관계형 데이터 베이서의 제약조건 - 키(Key)

튜플 찾, 정렬, 기준, 속성

튜플거나 순서대로 정렬할 때 기준이 되는 속성

키 종류 5가지

후보키(Candidate Key)

튜플, 유일식별, 속성 부분집합

튜플유일하게 식별하기 위해 사용되는 속성들의 부분집합

→ 유일성(Unique) 만족O, 최소성(Minimality) 만족O

기본키(Primary Key)

후보키, 선정, 주키

후보키 중에서 특별히 선정주키(Main Key)

중복된 값/Null 값 X, 특정 튜플 유일하게 구별

대체키(Alternate Key) = 보조키

후보키 둘 이상, 기본키 제외

후보키둘 이상일 때, 기본키제외나머지 후보키

슈퍼키(Super Key)

속성 집합

한 릴레이션 내에 속성들의 집합으로 구성된 키

→ 유일성(Unique) 만족O, 최소성(Minimality) 만족X

외래키(Forign Key)

다른 릴레이션, 기본키 참조, 속성

다른 릴레이션의 기본키참조하는 속성 또는 속성들의 집합


무결성(Integrity)

저장된 값, 실제 데이터, 일치, 정확성

데이터베이스에 저장된 값과 현실 세계의 실제 데이터 값일치하는 정확성을 의미

개체 무결성

기본키, 속성, NULL, 중복 값, 없

테이블의 기본키를 구성하는 어떤 속성NULL 값이나 중복된 값을 가질 수

참조 무결성

외래키 - NULL, 참조 - 기본키, 같

외래키 값은 NULL이거나, 참조 릴레이션의 기본키아야한다.

→ 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.


관계대수

정보, 검색, 어떻게 유도, 절차적 언어

원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는 가를 기술한 절차적언어

순수 관계 연산자 (4가지)

관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자

Select σ

/튜플을 구함 = 수평 연산자


Project π

/속성을 추출함 = 수직 연산자


Join

공통 속성을 중심으로 두 릴레이션을 하나로 합침

Join 결과 = Cartesian Product(교차곱)를 수행한 후 Select 수행


Division ÷

X⊃Y인 두 릴레이션 R(X), S(Y) 있을 때,
R의 속성 = S의 속성 값모두 가진 튜플에서 - S가 가진 속성
을 제외한 속성만을 구하는 연산

일반 집합 연산자

수학적 집합 이론에서 사용하는 연산자

합집합 UNION

튜플의 합집합. 중복 튜플 제거


교집합 INTERSECTION

튜플의 교집합


차집합 DIFFERENCE

튜플의 차집합


교차곱 CARTESIAN PRODUCT X

튜플들의 순서쌍. 두 릴레이션에 존재하는 모든 튜플을 대응

교차곱의 <행수/튜플수/Cardinality> = 두 릴레이션의 카디널리티의 곱
교차곱의 <속성수/차수/Degree> = 두 릴레이션의 디그리의 합

관계해석

관계 데이터의 연산을 표현하는 방법. 술어 해석에 기반. 비절차적


이상(Anomaly)

테이블, 데이터 중복, 조작, 문제

테이블에서 데이터 중복이 발생하면, 테이블 조작 시 문제가 발생하는 현상


삽입 이상 → 삽입 불가

삭제 이상 → 연쇄 삭제

갱신 이상 → 정보의 불일치성


함수적 종속(Functional Dependency)

‘ 속성 X ⊃ (X의 부분 집합) 속성 Y ’ 일 때
Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다


X → Y
X는 결정자(Determinant)
Y는 종속자(Dependent)

데이터 의미를 표현, 현실 세계를 표현하는 제약 조건


완전 함수적 종속

속성 집합 X 전체 ⊃ 속성 Y ⇒ 함수적 종속이면서
속성 집합 X의 진부분집합 Z (X⊃Z) 에 함수적 종속이 아닐 때

Y는 X에 완전 함수적 종속이다.


부분 함수적 종속

속성 집합 X 전체 ⊃ 속성 Y ⇒ 함수적 종속이면서
속성 집합 X의 진부분집합 Z (X⊃Z) 에 함수적 종속일 때

Y는 X에 부분 함수적 종속


정규화(Normalization)

속성, 상호 종속 관계, 특성, 무손실 분해

테이블의 속성들이 상호 종속적관계를 갖는 특성을 이용하여
테이블을 무손실 분해하는 과정

중복성 최소화, 일관성, 품질 보장, 성능향상

정규화 종류 p.197

제 1정규형 1NF → 도메인이 원자값

모든 속성 값이 원자 값으로만


제 2정규형 2NF → 부분적 함수 종속 제거

모든 속성이 기본키에 대해 완전 함수적 종속만족(부분 함수적 종속 제거)


제 3정규형 3NF → 이행적 함수 종속 제거

모든 속성이 기본키에 대해 이행적 함수적 종속(A→B, B→C ⇒ A→C)을 만족하지


BCNF → 결정자이면서 후보키 아닌 것 제거

모든 결정자가 후보키


제 4정규형 4NF→ 다치 종속 제거

다중 값 종속(MVD; A→→ B, B는 복합속성(A,C)중 A에만 종속) 이 존재하는 경우
모든 속성이 A에 함수적 종속 관계를 만족


제 5정규형 5NF → 조인 종속성 이용

모든 조인 종속은 후보키를 통해서만 성립


반정규화

정규화, 중복/통합/분리, 원칙 위배

정규화된 데이터 모델을 의도적으로 중복, 통합, 분리하여 정규화 원칙위배하는 행위

성능향상, 관리 효울성

데잉터 일관성/정합성 저하

과도한 반정규화 → 성능 저하

반정규화 종류

테이블 통합 → 두 테이블이 조인되어 사용 많이 할 경우 테이블 통합

테이블 분할 → 행/레코드-수평분할, 열-수직분할

중복 테이블 추가 → 중복되는 테이블 추가-집계/진행/특정부분만 포함하는 테이블 추가

중복 속성 추가 → 자주사용하는 속성 추가


시스템 카탈로그(System Catalog)

다양한 객체, 정보, 시스템DB

다양한 객체에 대한 정보를 저장하는 시스템 데이터베이스

좁은 의미 → 카탈로그 = 데이터 사전(Data Dictionary)

메타 데이터(Meta-Data)

시스템 카탈로그, 정보

시스템 카탈로그에 저장된 정보

데이터 디렉터리(Data Directory)

데이터사전, 접근, 정보, 유지관리, 시스템

데이터 사전접근하는 데 필요한 정보유지 관리하는 시스템


트랜잭션(Transaction)

논리적 기능, 수행. 작업 단위

데이터베이스의 논리적인 기능수행하기 위한 작업 단위
또는 한꺼번에 모두 수행되어야 할 일련의 연산

트랜잭션 특성 4가지

Atomicity 원자성

연산, DB, 모두반영, 완료, 전혀반영, 복구

트랜잭션 연산데이터베이스모두 반영되도록 완료(Commit)하던지
아니면, 전혀 반영되지 도록 복구(Rollback)되어야 한다


Consistency 일관성

실행, 성공적 완료, 일관성, DB상태, 변함

트랜잭션 실행성공적으로 완료하면
언제나 일관성있는 데이터베이스 상태한다


Isolation 격리성, 독립성, 순차성

두, 동시 병행 실행, 하나 실행중, 다른 끼어들기X

두 트랜잭션동시에 병행 실행하는 경우
하나의 트랙잭션이 실행 중다른 트랙잭션의 연산이 끼어들 수 없다.


Durability 영속성, 지속성

결과, 성공적, 고장, 영구적 저장

트랙잭션 결과성공적이라면
시스템이 고장나더라도 데이터베이스영구적으로 저장된다

CRUD 분석

프로세스-테이블, CRUD 매트릭스, 트랜잭션 분석

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


인덱스(Index)

레코드, 빠른 접근, 쌍(키값-포인터), 데이터 구조

데이터 레코드빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성된 데이터 구조

인덱스 종류

트리기반 인덱스

블록, 트리구조

인덱스를 저장하는 블록들트리 구조


비트맵 인덱스

데이터, Bit 값, 변환, 인덱스 키

데이터를 Bit 값(0 또는 1) 으로 변환하여, 인덱스 키로 사용하는 것


함수 기반 인덱스

컬럼, 특정 함수/수식, 산출된 값

컬럼특정 함수수식을 적용하여, 산출된 값을 사용하는 것


비트맵 조인 인덱스

다수, 조인된 객체

다수조인된 객체로 구성된 인덱스


도메인 인덱스

개발자, 인덱스, 직접

개발자가 필요한 인덱스직접 만들어 사용하는 것


뷰(View)

하나 이상 기본, 유도, 이름, 가상 테이블

하나 이상기본 테이블로부터 유도된, 이름을 가지는 가상 테이블

정의 CREATE 제거 DROP

분포도 좁은 테이블이 좋음

클러스터(Cluster)

동일 성격, 동일 데이터 블록, 물리적 저장 방법

동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적인 저장 방법

분포도 넓은 테이블이 좋음


처리 범위 넓다 → 단일 테이블 클러스터링

조인 많다 → 다중 테이블 클러스터링

파티션(Partition)

대용량 테이블, 인덱스, 작은 논리적 단위, 나누기

대용량테이블이나 인덱스작은 논리적 단위파티션으로 나누는 것

용량 작은 테이블에 파티셔닝 → 성능 저하


범위 분할 → 열 값 기준

해시 분할 → 해시 함수 적용, 고르게 분산할 때

조합 분할 → 범위 분할 후 해시함수 적용 후 다시 분할, 파티션 너무 클 때


분산 데이터베이스

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

분산 데이터베이스 목표

위치 투명성

실제 데이터 위치, DB 논리적 명칭

실제 데이터 위치 알필요 DB논리적인 명칭만으로 액세스


중복 투명성

동일 데이터, 여러곳 중복, 사용자-하나, 시스템-여러

동일 데이터여러 곳중복되어 있더라도

사용자는 마치 하나데이터만 존재하는 것처럼 사용
시스템자동으로 여러 데이터의 작업을 수행


병행 투명성

다수 트랜잭션, 동시 실행, 결과, 영향 없

다수트랜잭션동시에 실행되더라도
트랙잭션의 결과영향을 받지


장애 투명성

장애, 트랜잭션, 정확 처리

컴퓨터 장애에도 불구하고, 트랙잭션정확하게 처리


데이터베이스 이중화

동일한 데이터베이스를 복제하여 관리하는 것

분류(변경 내용 전달 방식에 따라)

Eager 기법 → 변경 내용을 즉시 전달 + 즉시 적용

Lazy 기법 → 변경 사실을 새로운 트랜잭션에 작성


구성 방법

활동-대기 방법 Active-Standby → 활성 1 에 장애 ⇒ 대기 1을 활성으로

활동-활동 방법 Active-Active → 활성 1,2 중 1에 장애 ⇒ 활성 2가 1까지 제공

클러스터링(Clustering)

두 개 이상 서버, 하나, 운영

두 개 이상서버하나의 서버처럼 운영하는 기술


종류

고가용성 클러스터링 → 한 서버에 장애 시 다른 서버가 처리. 일반적

병렬 처리 클러스터링 → 한 작업을 여러 서버에 분산

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

RPO (Recovery Point Objective) 목표 복수 시점


암호화(Encryption)

송신자가 지정한 수신자 외에는 내용을 알 수 없도록 평문을 암호문으로 변환

개인키 암호화 방식

공객키 암호화 방식

접근통제(Access Control)

데이터가 저장된 객체와 이를 사용하려는 주체간의 정보 흐름을 제한하는 것

접근통제 3요소

1.접근통제 정책

신분 기반 정책 → IBP, GBP

규칙 기반 정책 → MLP, CBP

역할 기반 정책 → GBP 변형


2.접근통제 매커니즘


3.접근통제 보안 모델

기밀성 모델 → 군사목적 최초

무결성 모델 → 불법 변경 방지

접근통제 모델 → 접근통제 행렬

접근통제 기술

임의 접근통제 DAC → 사용자 신원

강제 접근통제 MAC → 주체-객체 등급 비교

역할기반 접근통제 DBAC → 사용자 역할


로그 파일

데이터베이스의 상태 변화시간의 흐름에 따라 모두 기록한 파일

스토리지(Storage)

대용량 데이터, 저장, 서버, 저장장치 연결

대용량 데이터를 저장하기위해 서버저장장치연결하는 기술

스토리지 종류

DAS Direct Attached Storage

서버저장장치전용 케이블직접 연결

NAS Network Attached Storage

서버와 저장장치를 네트워크를 통해 연결

SAN Storage Area Network

서버와 저장장치를 전용 네트워크별도로 구성


선형 구조(Linear Structure)

배열(Array)

크기, 형, 동일, 자료, 순서대로, 집합

크기형(type)동일한 자료들순서대로 나열된 자료의 집합

반복적, 정적, 삭제 시 빈 공간(메모리낭비)


선형 리스트(Linear List)

연속 리스트(Contiguous List)

연속되는 기억장소에 저장
빈 공간 없이 데이터 저장,


연결 리스트(Linked List)

자료들을 임의 기억공간에 기억시키되,
노드(data, link)포인터 부분을 이용해 서로 연결


스택(Stack)

리스트한 쪽끝으로만 자료의 삽입, 삭제

LIFO 후입선출 Last In First Out
오버플로 / 언더플로


큐(Queue)

리스트한쪽에서 삽입, 다른 한쪽에서는 삭제

FIFO 선입선출 First In First Out
Front 포인터 / Rear 포인터


비선형 구조(Non-Liear Structure)

그래프(Graph)

정점(Vertex)간선(Edge)의 두 집합으로 이루어짐

정점의 개수 n에서 최대 노드 수

방향 그래프 → n(n-1)
무방향 그래프 → n(n-1)/2


트리(Tree)

정점(Node)선분(Branch)을 이용하여
사이클을 이루지 도록 구성한 그래프의 특수한 형태


이진트리

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

레벨 n에서 최대 노드 수 → 2^(n-1)

Preorder → root left right
Inorder → left root right
Postoreder → left right root

PreFix 전위 표기법 → + AB
InFix 중위 표기법 → A+B
PostFix 후위 표기법→ AB+


정렬(Sort) p258

삽입 정렬(Insertion Sort)

이미 순서화, 파일, 새로운, 순서맞, 삽입

가장 간단, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입


선택 정렬(Selection Sort)

최소값, 레코드 앞, 반복

레코드의 최소값을 찾아 레코드의 앞쪽에 놓는 것을 반복


버블 정렬(Bubble Sort)

인접, 두 개 레코드, 키 값, 교환

인접한 두 개의 레코드 키 값을 비교하여, 크기에 따라 레코드 위치를 서로 교환


쉘 정렬(Shell Sort)

매개변수 값으로 서브파일 구성, 각 서브파일Insertion 방식으로 순서 배열


퀵 정렬(Quick Sort)

키, 작은 왼, 큰 오른, 서브트리, 분해

를 기준으로, 작은 값은 왼쪽 큰 값은 오른쪽 서브 파일분해


힙 정렬(Heap Sort)

전이진 트리→힙 트리

전이진 트리(Complete Binary Tree)를 Heap Tree로 변환


2-Way 정렬(Merge Sort)

이미 정렬, 2개 파일, 합병

이미 정렬되어 있는 2개의 파일1개의 파일로 합병


기수 정렬 = Bucket Sort

Queue를 이용하여 자릿수(Digit)별로 정렬

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

2개의 댓글

comment-user-thumbnail
2022년 9월 28일

감사합니다! 잘보고가요 :)

답글 달기
comment-user-thumbnail
2022년 10월 3일

잘 보고 갑니다😊

답글 달기