데이터 전환
- 운영 중인 데이터를 추출하여 변환한 후 적재하는 과정
- Data Migration 이라고도 함
데이터 검증
- 원천 시스템의 데이터를 목적 시스템의 데이터로 전환하는 과정이 정상적으로 수행되었는지 여부 확인 과정
오류 데이터 측정 및 정제
- 고품질 데이터를 운영 및 관리하기 위해 수행
- 데이터 품질 분석 --> 오류 데이터 측정 --> 오류 데이터 정제
데이터베이스
- 공동 사용 데이터를 중복 배제 후 통합하고 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 통합 데이터 (Integrated Data) : 자료 중복 배제한 데이터 모임
- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
DBMS
- 사용자 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 필수 3가지 기능 (정의, 조작 , 제어 기능)
스키마
- 데이터베이스의 구조와 제약조건에 전반적인 명세 기술
- 외부 스키마 : 데이터베이스의 논리적 구조 정의
- 개념 스키마 : 하나만 존재
- 내부 스키마 : 물리적 저장장치의 입장에서 본 데이터베이스 구조
데이터베이스 설계 순서
- 요구 조건 분석 (명세서 작성)
- 개념적 설계 (개념 스키마, 트랜잭션 모델링, E-R 모델)
- 논리적 설계 (논리 스키마 , 트랜잭션 인터페이스 설계)
- 물리적 설계 (물리적 구조의 데이터로 변환)
- 구현 (DDL로 데이터 베이스 생성, 트랜잭션 작성)
개념적 설계
- 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
논리적 설계
- 현실 세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환 시키는 과정
물리적 설계
- 논리적 설계에서 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정
데이터 모델
- 현실 세계의 정보들을 체계적으로 표현한 개념적 모형
요소 | 내용 |
구조 | 논리적 표현된 개체 타입들 간의 관계 |
연산 | 데이터베이스를 조작하는 기본 도구 |
제약 조건 | 실제 데이터의 논리적 제약 조건 |
개체
- 개념이나 정보 단위 같은 현실 세계의 대상
관계
- 개체와 개체 사이의 논리적인 연결을 의미한다.
- 일 대 일 (1:1)
- 일 대 다 (1:N)
- 다 대 다 (N:M)
E-R 모델
- 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 사각형 : 개체 타입
- 마름모 : 관계 타입
- 타원 : 속성
- 이중 타원 : 다중값 속성
- 밑줄 타원 : 기본키 속성
- 복수 타원 : 복합 속성
- 관계 : 1:1, 1:N, N:M
- 선 링크 : 개체 타입과 속성을 연결
관계형 데이터베이스의 릴레이션 구조
- 튜플 : 릴레이션 구성하는 각각의 행 ( 튜플의 수 = 카디널리티)
- 속성 : 데이터베이스 구성하는 가장 작은 논리적 단위 ( 속성의 수 = 디그리 , 차수 )
- 도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합
후보키
- 속성들 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 유일성, 최소성 만족
기본키
- 후보키 중 특별히 선정된 주키
- NULL, 중복 불가
대체키
- 후보키 중 기본키를 제외한 나머지 키들 (= 보조키라고도 함)
슈퍼키
- 속성들의 집합으로 구성된 키
- 유일성은 만족 , 최소성은 불만족
외래키
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
무결성
- 데이터베이스에 저장된 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미
- 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL이나 중복값 못가짐
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
관계 대수
- 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적 언어
순수 관계 연산자
- Select : 선택 조건 만족하는 부분집합 구하기
- Project : 제시된 속성 값만 추출해 새로운 릴레이션 만들기
- Join : 합치기
- Division : 제외한 속성만 구하는 연산
일반 집합 연산자
- 합집합 (UNION)
- 교집합 (INTERSECTION)
- 차집합 (DIFFERENCE)
- 교차곱 (CARTESIAN PRODUCT)
관계 해석
- 관계 데이터의 연산을 표현하는 방법
- E. F. Codd 가 제안
- 비절차적 특성을 지니며 질의어로 표현
이상
- 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 현상
- 삽입 이상(Insertion Anomaly) : 원하지 않는 값들로 인해 삽입 불가한 현상
- 삭제 이상(Deletion Anomaly) : 의도와는 상관없는 값들도 함께 삭제되는 현상
- 갱신 이상(Update Anomaly) : 갱신 시 일뷰 튜플 정보만 갱신되어 정보의 불일치성이 생기는 현상
함수적 종속
- 속성 X의 값 각각에 대해 항상 속성 Y의 값이 하나만 연관되어 있을 때 Y는 X에 함수적 종속이라고 함 (X -> Y 표현)
완전 함수적 종속
- 속성 Y가 X 전체에 대해 종속이면서, X의 어떠한 진부분집합Z에도 함수적 종속이 아닐 때 완전 함수적 종속이라고 함
부분 함수적 종속
- Y가 X전체에 함수적 종속이면서 X의 진부분 집합에 대해 함수적 종속일 때 부분 함수적 종속이라고 함
정규화
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정
- 중복을 제거하여 삽입 삭제 갱신 이상의 발생 가능성을 줄이기 위한 것
정규화 과정 정리
- 비정규 릴레이션
- (도메인이 원자 값)
- 1NF
- (부분적 함수 종속 제거)
- 2NF
- (이행적 함수 종속 제거)
- 3NF
- (결정자 이면서 후보키 아닌것 제거)
- BCNF
- (다치 종속 제거)
- 4NF
- (조인 종속성 이용)
- 5NF
--> 도부이결다조
반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
- 성능 향상, 관리 효율성은 증가하지만 데이터 일관성 및 정합성이 저하될 수 있음
- 과도하면 오히려 성능 저하
중복 테이블 추가
- 중복 테이블 추가는 작업의 효율성을 향상 시키기 위해 테이블을 추가하는 것이다.
집계 테이블 추가 | 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것 |
진행 테이블 추가 | 이력 관리 등의 목적으로 추가하는 테이블 |
특정 부분만을 포함하는 테이블 추가 | 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성 |
시스템 카탈로그
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 카탈로그 생성 --> 데이터 사전에 저장
- 좁은 의미로 카탈로그를 데이터 사전이라고도 한다.
트랜잭션
- 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산
트랜잭션 특성
특성 | 의미 |
Atomicity (원자성) | 트랜잭션 연산은 완료되든지 전혀 반영되지 않도록 복구 되어야 함 |
Consistency (일관성) | 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함 |
Isolation (독립성, 격리성, 순차성) | 트랜잭션이 병행 실행 되는 경우 다른 트랜잭션 연산에 끼어들 수 없음 |
Durability (영속성, 지속성) | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함 |
CRUD 분석
- 프로세스와 테이블 간 CRUD 매트릭스를 만들어 트랜잭션을 분석하는 것
인덱스
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 레코드가 저장된 물리적 구조에 접근하는 방법 제공
- 빠르게 액세스 가능
클러스터드/넌클러스터드 인덱스
- 클러스터드 : 인덱스 키 순서에 따라 데이터가 정렬되어 저장되는 방식 (데이터 빠르게 찾기 가능)
- 넌클러스터드 : 인덱스 키 값만 정렬 ,데이터는 정렬 XX (데이터 삽입, 삭제 발생시 데이터 재정렬 해야함)
뷰
- 하나 이상의 기본 테이블로부터 유도된 가상 테이블
- 정의 : CREATE , 삭제 : DROP
파티션
- 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 데이터 처리는 테이블 단위, 데이터 저장은 파티션별로 수행
파티션 종류
범위 분할 (Range Partitoning) | 지정한 열의 값을 기준으로 분할 |
해시 분할 (Hash Partitioning) | - 해시 함수 적용 결과 값에 따라 데이터 분할 - 데이터 고르게 분산할 때 유용 - 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적 |
조합 분할 (Composite Partitioning) | 범위 분할로 분할하고 해시 함수 적용해 다시 분할 |
분산 데이터베이스의 목표
위치 투명성 (Location Transparency) | 실제 위치 알 필요 X, 논리적 명칭으로 액세스 O |
중복 투명성 (Replication Transparency) | 중복되어 있어도, 하나의 데이터만 존재하는 것처럼 사용 |
병행 투명성 (Concurrency Transparency) | 다수 트랜잭션 동시 실현 --> 트랜잭션 결과는 영향을 받지 X |
장애 투명성 (Failure Transparency) | 장애에도 불구하고 트랜잭션을 정확하게 처리함) |
RTO/RPO
- RTO : 목표 복구 시간 , 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요시간을 의미
- RPO : 목표 복구 시점 , 업무 중단 시점으로부터 복구할 수 있는 기준점을 의미
암호화
- 암호화(Encryption) : 평문을 암호문으로 바꾸는 과정
- 복호화(Decryption) : 암호문을 평문으로 바꾸는 과정
- 암호화 기법 : 개인키 암호 방식, 공개키 암호 방식
임의 접근 통제 (DAC)
- 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- 데이터 소유자가 접근 통제 권한을 지정 및 제어
강제 접근 통제 (MAC)
- 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근 통제 권한을 지정 및 제어
역할 기반 접근 통제 (RBAC)
- 사용자 역할에 따라 접근 권한을 부여하는 방식
- 중앙관리자가 접근 통제 권한을 지정
스토리지 (Storage)
- 대용량 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS , NAS , SAN
DAS
- 서버와 저장장치를 전용 케이블로 직접 연결(Direct) 하는 방식
- ex) 외장하드 연결
- 다른 서버에서 접근이 불가하고 파일 공유 X
NAS
- 서버와 저장장치를 네트워크를 통해 연결하는 방식
- 다른 서버에서도 스토리지 접근 O , 파일 공유 O
SAN
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 광 채널 스위치를 이용, 처리 속도가 빠름
- 파일 공유 O
자료 구조
- 자료를 저장하는 방법과 자료간의 관계, 처리 방법 등을 연구 분석하는 것
- 선형 구조 : 배열 , 선형 리스트, 스택 , 큐 , 데크
- 비선형 구조 : 트리, 그래프
배열
- 크기와 형이 동일한 자료들이 순서대로 나열된 자료의 집합
- 반복적인 데이터 처리 작업에 적합한 구조
- 정적인 자료 구조, 기억장소의 추가가 어려움
스택
- 후입선출 (LIFO)
- 저장 공간 없는데 데이터 삽입 --> 오버플로우
- 삭제 데이터 없는데 데이터 삭제 --> 언더플로우
큐
- 선입선출 (FIFO)
- 시작 표시 프런트, 끝 표시 리어 (rear)
그래프
- 정점과 , 간선으로 이루어지는 자료구조
- 방향, 무방향 그래프
방향/무방향 그래프 최대 간선 수
- 방향 : n(n-1)
- 무방향 : n(n-1)/2
트리
- 정점과 선분을 이용해 사이클을 이루지 않도록 구성한 그래프의 특수 형태
- 노드와 , 링크 존재
트리 관련 용어
- 노드 : 트리 기본 요소
- 근노드 : Root 노드
- 디그리 (차수) : 노드에서 뻗어나온 가지 수
- 단말 노드 : 자식 없는 노드
- Level : Level 이 L이면, 자식은 L+1
- 깊이 : Tree에서 노드가 가질 수 있는 최대 레벨
- 숲 : 여러개 트리가 모여 있는 것
- 트리의 디그리 : 가장 높은 디그리
Preorder
- Root -> Left -> Right
Inorder
- Left -> Root -> Right
Postorder
- Left -> Right -> Root
Infix , Prefix, Postfix
- infix : A+B
- prefix : +AB
- postfix : AB+
삽입 정렬
- 두번째 값부터 앞의 값들과 비교하며 정렬하는 방법 (순서에 맞게 삽입)
- 시간 복잡도 O(n^2)
선택 정렬
- 첫번째 값부터 뒤의 모든 값들과 비교하며 정렬하는 방식
- 시간 복잡도 O(n^2)
버블 정렬
- 인접한 레코드 키 값을 비교하여 교환하는 정렬 방식
- 시간 복잡도 O(n^2)
퀵 정렬
- 키를 기준으로 작은 값 왼쪽, 큰 값 오른쪽
- 평균 시간 복잡도 O(nlogn)
- 최악 수행 시간 복잡도 O(n^2)
힙 정렬
- 전이진 트리를 이용한 정렬 방식
- 시간 복잡도 O(nlogn)
합병 정렬
- 이미 정렬되어 있는 두 개 파일을 한 개의 파일로 합병하는 정렬 방식
- 시간 복잡도 O(nlogn)