DataBase Flashcards Preview

PE > DataBase > Flashcards

Flashcards in DataBase Deck (122):
1

데이터 과학자

▣ 정의
- 대규모 데이터 속에서 최적의 분석으로 숨겨진 패턴을 찾는 엔지니어
▣ 역할
- 업무분석 : 모델링, 아키텍팅
- 인프라구축 : 벤치마킹
- 데이터수집 : 도구활용
- 데이터처리 : 분산병렬처리
- Analytics : 수학, 통계학
▣ 역량
1) 관리수행
- 비즈니스
- 데이터 관리
- 데이터 분석
- 변화 관리
2) 기술역량
- 통계분석 도구 이해
- 프로그래밍 언어
- RDBMS기술
- 분산컴퓨팅
- 수리적 지식

2

Opinion Mining

▣ 정의
- 인터넷의 모든 웹 문서, 댓글 등에서 소비자들의 의견을 수집 및 분석해 제품이나 서비스 등에 대한 평판을 추출하는 Mining 기술
▣ 필요성
- 소셜 미디어 영향력 확대
- 소비자들의 평가, 불만, 니즈등의 의견을 파악
- 기법 및 브랜드의 잠재위기 조기에 감지
▣ 구성요소
1) Crawler
- 데이터 수집
2) NLP & Test Mining
- 전처리
- 도메인 의존적 단더
- 연어정보
- 단서 단어
3) 관계 분석기
- 개체 명 인식
- 관계 추출
4) 검색
- 검색 및 서비스
5) 대용량 지원
- 하둡에코 시스템
▣ 프로세스
1) 자연어 처리
- 형태소 분석 : 품사 결정
- 구문분석 : 문장 구성성분 결정
2) 문장평가
- 의견단어 추출 : 팩트/의견 구분
- 긍정, 부정 평가
- 스코어링
▣ 활용방안
- 트위터를 통한 오피니언 발견
- SNS 기반 핫토픽 추출

3

데이터 시각화 (Data Visualization)

▣ 정의
- 보이지 않는 새로운 패턴 또는 관계를 발견하도록 도와주는 시각화 기술
▣ 그래프 기술
- Trand Mindmap
- Newmap
- Hierarchical Clustering Explorer
- CrazEgg
- Info Graphics
▣ 시각화 지원 도구
- 태블로 : VizQLTM, 선언 언어
- 구글 오픈 차트
- Flickr API
- IBM Many eyes
- R

4

인포그래픽스(Infographics)

▣ 정의
- Information + Graphic의 합성어로 다량의 정보를 차트, 지도, 다이어그램, 로고, 일러스트레이션 등을 활용하여 쉽고, 빠르고, 정확하게 전달할 수 있게 하는 디자인
▣ 특징
- 흥미 유발 : 호기심, 행동유도
- 정보 습득시간 절감 : 직관적
- 빠른 확산 : SNS공유
- 다양한 시각적 표현 : 흥미
▣ 핵심요소
- 핵심 숫자 강조
- 관련 이미지 선택
- 정보에 대한 상세 설명
- 보충설명
▣ 작성 가이드
- 그래픽과 데이터 균형
- 퍼블릭 데이터 활용
- 템플릿과 아이콘 배치
- 무료 툴 활용
- 저작권 설정
- 인포그래픽스 홍보
▣ 작성시 고려사항
- 명확한 계획
- 정보의 융합
- 경제성 추구

5

빅데이터 거버넌스

▣ 정의
- 데이터 거버넌스의 일부로 빅데이터의 최적화, 프라이버시, 가치창출과 관련된 정책을 수립하여 빅데이터의 품질을 관리하기 위한 체계
▣ 필요성
- 분석 대상의 품질 : 데이터정제
- 데이터의 수명관리 : 비용절감
- 전담 조직 필요
- 법/규제 대응
▣ 데이터 거버넌스와 빅데이터 거버넌스의 관계
- 빅데이터 거버넌스는 데이터 거버넌스에 포함되는 개념
▣ 빅데이터 거버넌스 프레임워크
1) 빅데이터 유형
- 웹과 소셜 미디어
- M2M 데이터
- 빅 트랜잭션 데이터
- 생체 정보
- 사람이 생성한 데이터
2) 정보 거버넌스
- 전담 조직
- 메타 데이터
- 프라이버시
- 데이터 품질
- 비즈니스 프로세스 통합
- 마스터 데이터 통합
- 정보 수명주기 관리
3) 산업분야
- 헬스케어
- 유틸리티
- 소매
- 통신
- 보험
- 고객서비스
- IT
▣ 필요사례
- 의료산업 : 환자 모니터링
- 시설관리 : 스마트 계량기
- 보험사 : 클레임 조사

6

빅데이터 큐레이션

▣ 정의
- 빅데이터 전략을 제시하고 최적의 빅데이터 구축에서 분석 및 결과 활용까지 전 과정을 지휘하는 활동
▣ 포지션
- 빅데이터 운영자(DB설계 및 관리), 빅데이터 전략가(활용전략 및 조직구성), 데이터과학자(방법론 및 분석 실무)
- 직능간 유기적 협업 조율
▣ 역할
- 실시간으로 경영상 기회와 위기요인을 정확히 읽어내고 즉시 대응할 수 있는 체계를 구축
- 데이터 선별/발굴
- 실시간 변화 정보
- 노이즈 제거
- 현실 인사이트
▣ 분야
- 미래 예측 : 인과관계, 패턴
- 숨은 니즈 발견 : 무의식 니즈
- 리스크 경감 : 불만제거
- 맞춤형 서비스 : 서비스 효용
- 실시간 대응 : 즉각대응

7

스마트 데이터

▣ 6v
- Volume : data size
- Viability : outcome prediction
- Velocity : data speed
- Variety : data types
- Value : data knowledge
- Veracity : data quality

▣ 정의
- 3VC(Volume, Velocity, Variety, Complexity)의 빅데이터에 비해 빠르고, 실시간 분석 서비스 가능한 데이터 품질요소를 갖춘 정확성, 행동성, 민첩성의 특징을 가진 데이터
▣ 필요성
1) 데이터 측면
- 데이터 품질
- 데이터 범위
- 데이터 객관성 유효성 입증
2) 활용측면
- 실시간성 판단
- 행동성
- 실행자원 구축
- 유연성 확보
▣ 스마트 데이터이 3A
- Accurate : 정확성
- Actionable : 행동성
- Agile : 민첩성
▣ 구성요소
- Open, Link, Share, Resue
- 데이터 플랫폼
- 데이터 브로커 시스템
- 데이터 클린징 하우스
- 법률, 정책, 프로세스
- 데이터 인프라
- 데이터 생산자
- 데이터 소비자
▣ 스마트데이터와 빅데이터 구분 기분
1) 데이터 품질평가
- 품질관련 문제 발생 여부
- 데이터 정확도 의문 여부
2) 데이터 범위
- 설득력 있는 근거
- 기업 수익이나 점유율 관련성
- 비용 절충 여부
3) 실시간성 판단
- 처리, 분석, 결과, 행동 까지의 시간
4) 데이터의 객관적 유효성 입증
- 제3자에 의한 정확함 평가
5) 행동성
- 비즈니스 근거, 작동 원동력
6) 실행 자원 구축
- 컨설턴트, 플랫폼, 벤더 필요 여부
7) 유연성 확보
- 변화하는 비즈니스 조건

8

빅데이터 (비교)

(관특품활기분환사)
▣ 관점
- 데이터의 물리적 특성 측면
▣ 특징
- 3V(Volume, Velocity, Variety)
▣ 데이터 품질평가
- 빅 노이즈 발생에 대한 후속 프로세스 미흡
▣ 데이터 활용
- 다양한 데이터의 수집, 축적, 공유, 분석
▣ 기반 기술
- Hadoop Eco System
▣ 분석 기술
- 평판분석, SNS분석
▣ 컴퓨팅 환경
- 모바일, 클라우드
▣ 사회
- 정보화 사회, 지식사회, 모바일 사회

9

스마트 데이터 (비교)

(관특품활기분환사)
▣ 관점
- 데이터의 품질 측면
▣ 특징
- 3A(Accurate, Actionable, Agile)
▣ 데이터 품질평가
- 데이터 정확도에 관한 지속적 평가
▣ 데이터 활용
- 데이터의 통합, 사용의 편의성, 시맨틱 기반의 서비스 지향
▣ 기반 기술
- LOD, 시맨틱웹, 인공지능, IoT
▣ 분석 기술
- 상황인식 분석, 신경망 컴퓨팅, 인공지능, 자율학습
▣ 컴퓨팅 환경
- 사물통신 환경
▣ 사회
- 초연결 사회, 지능화 사회

10

Small Data, Dark Data, Fast Data, Smart Data

▣ Small Data : 전통적인
▣ Dark Data : 분석되지 않은
▣ Fast Data : 실시간 강조
▣ Smart Data : 품질 좋은

11

빅데이터 분석도구 R

▣ 개념
- 통계분석 및 그래프 분석 프로그램을 포함하는 개방형 소프트웨어 기반 패키지
▣ 특징
- In Memory Computing
- Object-Oriented
- Statistical Package
- Visualization
- Connectivity
▣ 역사
- 태동 : The S System
- 전파 : S-PLUS
- 확산 : R, Package
▣ 주요기능
1) 분산처리
- 하둡 통계분석 엔진
2) Dynamic Visualization
- GIS, 차트, 산점도, 그라데이션
3) 통계분석엔진 기반의 분석
- Data in rest : DB기록후 분석
- Event-captured : 기록전 분석
- HPC(High Performance Computing)

12

Big Data 분석 - 모델 평가 방법

▣ 개념
- 데이터마이닝을 통해 생성된 모델의 에러율 예측을 통해 모델의 타당성을 평가하는 검증 방법
▣ 종류
1) Train-validation
2) 재 샘플링 기법
- Cross Validation
- BootStrap
※ 데이터의 양이 충분치 않은 경우, 데이터 모델의 성능 측정의 통계적 신뢰도를 높이기 위해 재 샘플링 기법을 사용하는데, Cross-validation, Bootstrap 이 대표적 방법임

13

Train-validation

▣ 절차
1) Training data : 모델 학습
- 모형 적합화를 위한 데이터
2) Validation data : 모델선택
- 모형의 접합화 정도 평가 선택
3) Test data : 모델 평가
- 최종 선택모형 성과 평가

14

Cross Validation

▣ 개념 (부분집합 나머지 샘플링)
- Training Set을 k개의 부분 집합으로 등분
- k-1 개로 학습하고 나머지 한 개로 테스트. 이런 과정을 서로 다른 부분 집합으로 k번 수행하여 얻은 성능을 평균함
- 이를 k-fold Cross Validation
- k=N인 경우(N은 샘플 개수) 하나 남기기(Leave-one-out) 또는 잭나이프(Jackknife) 기법이라함

15

BootStrap

▣ 개념 (중복허용 임의 샘플링)
- 중복을 허용하는 기법으로, N개의 샘플을 가진 샘플 집합 X가 존재, 집합 X에서 N개의 샘플을 임의로 추출
- N개의 Training Sample 에서 Bootstrap sample 을 취하는데, 중복을 허용하여 B개를 샘플링함
- 이와 같은 Bootstrap sample을 t번 반복하고 측정하고, 그 결과를 평균한 값을 최종 성능으로 취함
- Bootstrap sample 로 모델을 학습하ㄱㄱ, 오류를 예측할 때 Training set을 이용하는 방법

16

Train-validataion (비교)

▣ 개념
- 훈련집합, 테스트집합, 검증집합을 통해서 모델의 정확도 검증
▣ 활용기준
- 데이터가 충분히 많은 경우
▣ 데이터 Set
- Train Set, Test Set, Validation Set
▣ 정확도
- 에러율 예측의 정확도 다소 낮음
▣ 특징
- 데이터 Set의 분리 비율이 결과에 영향을 미침

17

Cross-Validation (비교)

▣ 개념
- 데이터를 K개의 집합으로 나누어 검증한 결과의 평균치로 모델 검증
▣ 활용기준
- 데이터가 충분하지 않은 경우
▣ 데이터 Set
- k개의 Set분류(K-fold)
- k-1 : Train Set
- 1 : Test Set
▣ 정확도
- Train-Validation 보다 높은 정확도
▣ 특징
- 분류의 수에 따라 결과 영향 미침

18

Bootstrap (비교)

▣ 개념
- 전체 데이터에서 무작위 복원 추출로 훈련집합을 생성하여 검증하는 방법
▣ 활용기준
- 데이터가 충분하지 않은 경우, 모집단 분포 가정이 어려운 경우
▣ 데이터 Set
- N개의 Bootstrap sample
▣ 정확도
- Train-validation 보다 높은 정확도
▣ 특징
- 모집단의 분포의 가정없이 검증 가능

19

Column-Oriented Database (비교)

▣ 개념
- 대량의 비슷한 특성을 가진 데이터를 저장하기 위해 DW등에서 Column 순으로 저장하는 데이터베이스
- 같은 필드의 값을 모아서 저장
▣ 적용DBMS
- 연관된 데이터 위주
- Read 위주의 DBMS
▣ 압축률
- 동일 도메인의 컬럼 값이 연속 되므로 압축효율이 좋음
▣ 활용구조
- 컬럼에 대한 범위 선택에 유리
▣ 용도
- Read 중심의 대용량 DB (Data Warehouse, BI)
▣ 장점
- 적은수의 선택적 Column 조회시 I/O량이 적어 속도 빠름
▣ 단점
- 많은 join이 사용된 query 수행시 성능 저하
- 하나의 레코드 변경시 여러 값 수정
▣ 업무성격
- 배치 형태의 대량의 트랜잭션 처리
▣ 조회 데이터
- 컬럼수가 적은 query
▣ 데이터 중복
- 중복 값이 많은 DB
▣ 제약조건
- 특정 제약 조건하의 상세 업무 데이터 추출
▣ 트랜잭션 특성
- 트랜드 분석 위한 거래 데이터 요약 (DW, BI)

20

Row-Oriented Database (비교)

▣ 개념
- 레고크 단위의 Row순으로 데이터를 저장하는 데이터베이스
- 일반적으로 상용화 된 DBMS
▣ 적용DBMS
- 레코드를 추가 및 삭제 위주의 DBMS
▣ 압축률
- 레코드 단위의 압축은 상대적으로 효율 저하
▣ 활용구조
- 레코드 단위의(B+tree 등) 인덱스 구성하여 랜덤 엑세스에 유리
▣ 용도
- 실시간 온라인 처리 DBMS
▣ 장점
- 많은 수의 column을 한번에 처리시 빠름
▣ 단점
- 불필요한 컬럼 값 존재
▣ 업무성격
- 실시간 업데이트 형태의 거래
▣ 조회 데이터
- Full data 추출(Select * from)
▣ 데이터 중복
- 중복 값이 적은 DB
▣ 제약조건
- 제약 조건의 적은 데이터 처리
▣ 트랜잭션 특성
- OLTP 성격의 데이터 처리

21

빅데이터 분석기법

▣ 정의
- 대량의 데이터로부터 숨겨진 패턴과 알려지지 않은 정보간의 관계를 찾아내기 위한 기술
▣ 중요성
- 데이터 관계 숨은 가치 중요도 증가
- 데이터 가치 발견 지속적 탐색 필요
- 빠른 분석으로 시장경쟁 우위 선점
▣ 분석기법의 특징
- 대용량 데이터 기반
- 기술적인 진화
- 다양한 분야에 활용
- 의사결정지원(RTE지향)
- 모바일 산업으로 확대
▣ 분석기법 종류 (연연분데특 의신텍프)
- 연관성 탐사 : 지지도, 신뢰도, 향상도
- 연속성 규칙 : 시간의 흐름 연속 수행
- 분류 규칙 : 신용등급 높은/중간/낮음)
- 데이터 군집화 : 집단화 과정에서 군집별 특성 파악)
- 특성화 : 요약과정 통한 특성 규칙 발견
- 의사결정트리 : 과거 패턴 분류, 분류의 값 예측
- 신경망 : 뇌세포 모방, 반복학습 모형 생성 기법
- 텍스트 마이닝 : 비정형 텍스트의 패턴 또는 관계 추출
- 프로세스 마이닝 : 업무 처리 시스템의 이벤트 로그 분석
▣ 분석 방법론 (SEMMA)
1) Sampling
- 랜덤, 계통 샘플링, 중화 추출법
2) Exploration
- 통계적 탐색, 이상치 검출
3) Modify
- 변수 생성, 선택, 변형
- 데이터 품질 향상 단계
4) Modeling
- 패턴발견 문제해결모델
- 알고리즘 적용
- 신경망, 의사결정트리, 회귀/군집/연관성 분석
5) Assessment
- 모형 신뢰성, 유용성 평가
▣ 활용사례
- 금융 : 은행, 카드, 증권, 보험
- 제조 : 불량율, 생산성, 품질관리
- 통신 : 연체자, 이탈율, 충성도
- 유통 : 마케팅 전략, 고객관리
- 소매 : 고객세분화, 교차판매
- 의학 : 질병예측, 환자특성
- 수사 : 범죄발생율, 과학수사
- 과학 : 생명공학
- IT : 네트워크망, 포렌식, 위험관리

22

딥러닝

▣ 정의
- 인공신경망(ANN)에 기반한 일련의 기계학습의 집합체로서 컴퓨터에게 사람의 사고 방식을 가르치는 알고리즘
▣ 등장배경
- 인공신경망 모델의 단접 극복 : Overfitting 문제해결
- 하드웨어의 발전 : GPU
- BigData
▣ 주요기술
- 패턴인식 : 도형,문자,음성 식별
- 자연어처리 : 인간언어 인식
- 자동제어 : 오차 자동 조정
- 로보틱스 인지공학 로봇
- 컴퓨터 비전 : 로봇의 눈 연구
- 가상현실 : 컴퓨터 가상환경
- 데이터 마이닝
- 시멘틱웹 : 추론 가능 웹
▣ 동향
1) 구글
- 맨해튼 프로젝트
- 딥마인드 인수
2) IBM
- 왓슨그룹
- 자연어 분석 및 질의응답 특화
3) MS
- 아담 프로젝트
- 영상인식 인공지능 프로젝트
4) 페이스북
- 얼굴인식 프로그램
- 딥페이스
5) 바이두
- 딥러닝 연구소
- 구글 따라잡기

23

Bagging과 Boosting

▣ Bagging과 Boosting의 개념
1) 접근방법
- 단일분류자
- 다중분류자 조합(앙상블)
2) 기법
- Bagging (안정성) : BootStrap
- Boosting (정확성) : 순차추출
▣ Bagging의 정의
- 모델의 안정성을 높이기 위하여 분석데이터로 부터 여러 개의 단순 복원 임의 추출하여 다수결을 통해 최종의 예측 모델을 도출하는 알고리즘
▣ Boosting의 정의
- 모델의 정확성을 높이기 위하여 오분류된 개체들에 가중치를 부여함으로써 새로운 분류 규칙을 만드는 단계를 반복하여 약한 분류모델을 강한 분류모델로 변형하는 알고리즘
▣ Bagging의 알고리즘
1) 분석용 데이터로부터 n개의 BootStrap데이터 추출(동일크기)
2) BootStrap데이터에 적합한 모델적용하여 n개의 단일분류자 생성
3) n개의 단일분류자 중 다수결(Majority Voting)을 통해 최종 모델 결정
▣ Boosting 알고리즘
1) 동일한 가중치의 원 분석용 데이터로 분류자 생성
2) 이전 분석용 데이터의 분류 결과에 따라 가중치 부여
3) 목표하는 정확성이 나올때 까지 n회 반복 후 최종 분류자 결정
※ 위 두가지 방법은 공통적으로 분류 정확도가 낮은 경우에만 효과를 볼 수 있음. 만약 이미 정확도가 높은 방법이라면, 효과가 크지 않음에 유의

24

Bagging (비교)

▣ 목표
- 전반적으로 분류를 잘 할 수 있도록 유도(분산감소)
▣ 최적 모델결정방법
- 독립수행 후 다수결로 결정
- 연속형 변수 : 다중 투표
- 범주형 변수 : 평균
▣ 특장점
- 일반적으로 항상 성능을 향상 시킴
- 결측치가 존재 할 때 강함
▣ 계산복잡도
- 높음
▣ 적용방안
- 소량의 데이터 일수록 유리
- 목표변수, 입력변수의 크기가 작아 단순할 수록 유리
▣ 주요알고리즘
- MetaCost Algorithm

25

Boosting (비교)

▣ 목표
- 분류하기 힘든 관측 값들에 대해서 정확하게 분류를 잘하도록 유도(예측력 강화)
▣ 최적 모델결정방법
- 순차 수행에 따른 가중치 재조정으로 결정
- 정분류 데이터 : 가중치 낮춤
- 오분류 데이터 : 가중치 높힘
▣ 특장점
- 특정 케이스의 경우 상당히 높은 성능 보장
- 일반적으로 과적함 없음
▣ 계산복잡도
- 다소 높음
▣ 적용방안
- 대용량 데이터 일수록 유리
- 데이터와 데이터의 속성이 복잡할 수록 유리
▣ 주요알고리즘
- AdaBoost(Adaptive Boost) Algorithm

26

BigData 분석, 활용을 위한 SW Architecture

1) Front End : 경량 Script 언어, 경량 App 서버, Front 캐시 서버
- JavaScript, PHP, Python, Rube on Rails
- Apache Thrift/Avro, Tomcat
2) Middle Tier : 객체 Data캐시 서버, 일반 Data캐시 서버, 분산미들웨어
- Memcached, Oracle Coherence
- Zero MQ, Fault Tolrerant, Apache Active MQ
3) Back End : 분산파일시스템, 분산DB(NoSQL), 분산검색엔진
- GFS, HDFS, OwFS
- MapReduce, 몽고DB, HBase, 카산드라

27

Hadoop

▣ 정의
- 이 기종간 하드웨어로 구성된 클러스터에서 대용량 데이터 처리를 위해 만들어진 분산 응용프로그램 지원 플랫폼
▣ 특징
- Chunk 단위 : 64MB 블록
- MapReduce : 4000개 Data Node 분산 병렬 처리
- 가용성
- 고신뢰성
▣ Hadoop 클러스터 구성요소
1) Master Node
- Job Tracker : 병렬처리관리
- Name Node : 데이터저장관리
2) Slave Node
- Data Node : 대용량데이터처리
- Task Tracker : 병렬처리
3) Client
- Hadoop
▣ 인프라 기술
- Ambri : 관리
- Zookeeper : 통합
- PIG, HIVE : SQL 지원
- Map&Reduce : 데이터 가공
- HBASE : NoSQL
- HDFS : 분산파일시스템

28

Hadoop 2.0

▣ 정의
- 하둡 기반 Scheduling, 자원관리, 다양한 종류의 분산환경을 지원하는 차세대 하둡 플랫폼 기술
▣ 특징
- Yarn : HDFS Multiple Search
▣ 주요 구성요소
- Resource Manager : 리소스 할당, 중재, 관리
- Node Manager : Application Master, Container

29

맵리듀스

▣ 정의
- 맵(map) : 흩어져 있는 데이터를 관련 있는 데이터끼리 묶는 작업을 통해서 임시 데이터 집합으로 변형 (입력 데이터를 key value형태로 분할, 컬럼기반 병렬처리)
- 리듀스 : 맵 작업에서 생성된 임시 데이터 집합에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업 진행
▣ 특징
- HDFS 연동
- Scheduler
- 작업 단위 : Map or Reduce
- 다양한 옵션
▣ 처리과정
1) Input : HDFS에서 Load
2) Splitting : 64MB chunk단위 split, 분할과 복제
3) Mapping : Key value형태로 분할, 병렬 저장
4) Shuffling : 병합 및 정렬
5) Reduce : 죽복 데이터 제거
6) Output : 최종결과 HDFS 내 디렉토리에 저장

30

빅데이터 참조 아키텍처

▣ 정의
- 빅데이터 시장의 다양한 구성원들이 공통의 언어로 표현된 아키텍처를 공유하여 상호 운용성, 이식성, 재사용성 및 확장성을 위한 빅데이터 아키텍처 기본 패턴
▣ 구성요소
1) 데이터 제공자
2) 데이터 중계자
3) 빅데이터 서비스 제공자
- 데이터 기능
- 데이터 보존
- 통합 기능
- 처리 기능
- 관리 기능
4) 빅데이터 소비자

31

HDFS (Hadoop Distributed File System)

▣ 정의
- 저비용의 수백 내지 수천 노드를 가지는 클러스터를 이용하여 페타 바이트의 대용량 데이터 집합을 처리하는 응용 프로그램에 적합하도록 설계한 분산 파일 시스템
▣ 특징
- 다중복제 : 1 file = n block, 1 block = 64MB => 3 replication
- Replication : 3 Replica Data node
- Fault-tolerant
- 범용서버 기반 : 저가의 x86
▣ 구성요소
1) Name Node
- 디렉토리, Access 권한 관리
- 메타데이터, 파일저장위치
2) Data Node
- 실제 데이터 저장
- 디폴트 64MB, 일반적 128MB
- Name Node와 주기적 통신
3) Secondary Name Node
- Backup Node
4) Job Tracker
- 작업 분산 스케쥴링
- Master:Task Tracker에 작업할당)
5) Task Tracker
- Data Node에서 Map-Reduce 역할 수행
- Slave:할당 받은 작업 처리
6) Replication
- Data Node 간 정보 복제
7) TCP/IP 프로토콜
8) 계층적 파일구조
▣ HDFS 동작원리
- HDFS 클라이언트는 네임노드에서 블록에 대한 위치정보를 전달 받아서, 해당 데이터노드에서 파이프 라인 방식으로 직접 블록을 조회

32

카산드라

▣ 정의
- 대용량 자료의 저장과 처리를 목적으로 하는 Key-Value 기반의 높은 가용성을 가지는 DBMS
▣ 필요성
- 대용량 데이터 저장 및 처리
- 비용측면의 분산처리 환경
- 고가용성 기능 필요
▣ 특징
- Key-Value Based DBMS
- 저장의 유연성 : Non Schema, Row마다 다른 속성 정의 가능
- 빠른 성능 : Key-value구조의 Hash 알고리즘
- 언어의 호환성 : Thrift
- 이차 인덱스 지원
- 사용의 편리성
▣ 논리 스토리지 구조
- 클러스터(Cluster)하위에 키스페이스(Keyspace) 모임으로 구성
- 키스페이스(keyspace)하위는 컬럼패밀리(Column Family) 모임으로 구성
- 컬럼패밀리(Column Family)는 컬럼(Column) 또는 슈퍼컬럼(Super Column)으로 구성
- 가장 하부조직인 컬럼(Column)은 이름(name)과 값(value)으로 구성
▣ 논리 스토리지 구조 설명
1) Column : 이름:값
{title:"Blog", content:"My Blog"}
2) Super Column : 컬럼 구조체
{name:{first:"kim", last:"sm"}}
3) Column Family : 컬럼과 슈퍼 컬럼들의 집합 키(key)로 식별
PersonalStruct={
Info1={name:"RHK", age:"20"}
Info2={name:"KEV", age:"25", email:"kev@aaa.com"}
Info3={name:"KKE", age:"30", address:"korea seoul"}
4) Keyspace
- 최상위 개념
▣ 물리적 스토리지 구조
- 노드들을 토큰링으로 구성하고 노드의 수에 따라서 구간 분할
1) Node
- 하나의 서버에서 구동되는 카산드라 프로세스
2) Token ring
- 클러스터링 서버 구성
- 토큰링 구성, 노드 구간 분할
3) Key
- Key 값 해싱값으로 저장 노드 결정

33

몽고DB

▣ 정의
- 웹 프로그램과 인터넷 기반 서비스를 위해 만들어진 도큐먼트 지향 데이터베이스 관리 시스쳄
▣ 필요성
- 웹 어플리케이션 분석과 로깅 어플리케이션 중간 정도의 캐시를 필요로 하는 어플리케이션에서 1차 데이터저장 시스템에 적합
- 스키마가 존재하지 않는 데이터를 저장하기에 용이하며 미리 구조가 알려지지 않은 데이터를 저장하는데 유용
▣ 특징
- Documented Oriented DB
- Easy Scaling : Auto Sharding
- 고가용성 : Master/Slave
- 비정형처리 : 조인연산 없이 원하는 분석결과 도출 가능
- 오픈소스 : GPL과 아파치 라이선스를 결합한 자유 오픈 소스
▣ 다큐먼트 모델
- 저장소 : 보통 XML, JSON, BSON 형태
- 데이터 형식 : 형식이 정해져 있지 않음
- 검색 기능 : RDBMS에 비해 다소 떨어짐
▣ 저장소 예시
- 기본구조는 key-value의 집합
- 배열의 형태로도 저장
- 속성값 : 문자열, 숫자, 날짜와 같이 간단한 데이터 타입 또는 배열, 다큐먼트
- 태그 : 문자열의 배열로 저장
- 코멘트 : 객체의 배열로 저장
▣ 복제 정책
1) 복제
- 데이터를 다른 서버에 백업하고 보조서버를 핵심서버의 역할로 변경
2) 읽기에 대한 확장
- 읽기 작업 분산 처리
3) 복제 방법
- 기본적으로 마스터/슬레이브 방식 채택(mongod, DataStore, Oplog)
- 쓰기 연산은 마스터에서만 이루어 지고 Data Store와 Oplog 두군데 영역에 저장
- Data Store에는 쓰기 연산을 수행한 결과 저장
- Oplog에는 연산 수행과 관련된 명령 자체를 타임스탬프와 같이 저장
- 슬레이브는 읽기만 가능
▣ 확장
1) 수직적 확장(Vertical Scaling)
- Scale up
- 기존 스토리지에 필요한 만큼의 용량증가
- 디스크만 추가되기 때문에 상대적으로 비용 감소
- 심플한 구성
2) 수평적 확장(Horizontal)
- Scale out
- 용량과 성능 요구조건에 맞추기 위해 node단위(스토리지)로 증가되고 하나의 시스템처럼 운영
- 기존의 하드웨어 장비를 그대로 사용가능
- 장애 발생시 복제 서버를 통한 지속 서비스 가능

34

RDB vs MongoDB

▣ 용어차이
Table, View - Collection
Row, Record - Document
Column - Field
Index - Index
Join - Embedded Document
Foregin Key - Reference
Partition - Shard
▣ 쿼리비교
- RDB : select * from where
- MongoDB : db.parts.find ({ })

35

Redis (REmote DIctionary System)

▣ 정의
- BSD 기반 오픈소스 NoSQL 중 하나로 Key/Value Store의 성격을 가진 in-memory 데이터베이스
▣ 특징
- pub/sub 모델 지원
- Sharding 용량 확장
- 데이터 자동삭제 정책 : Active방식, Passive방식
▣ 데이터형
1) String
- 최대 512MB 길이
- Text, Integer, JPEG 저장
2) Set
- String의 집합
- Set 간 연산, 교집합, 합집합, 차이 추출
3) Sorted set
- set에 score(가중치) 필드 추가
- 오름차순 정렬
- score범위에 따른 range query, top rank 쿼리 가능
4) Hashes
- value 내에 field/string value 쌍의 테이블 저장
5) List
- String 들의 집합
- 양방향 Linked List
- List 앞과 뒤에서 Push/Pop 연산
- Index 값을 통해 데이터 추가 삭제
▣ Redis의 데이터 저장 방식
1) Snapshotting(RDB)방식
- 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
2) AOF (Append On File) 방식
- Redis의 모든 write/update 연산 자체를 log파일에 기록하는 방식

36

Snapshotting(RDB)방식

▣ 정의
- 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
▣ 특징
- SAVE방식 : 순간적으로 Redis의 모든 동작을 정지시키고, snapshot 디스크에 저장 (Blocking)
- BGSAVE방식 : 별도의 프로세스를 띄운 후 명령어 수행시의 메모리 snapshot을 디스크에 저장, redis는 정지 안함 (Non-blocking call)
▣ 장점
- 메모리의 snapshot을 그대로 뜬 것이기 때문에 서버 재시작 시 snapshot만 로드하면 되므로 재시작 시간이 빠름
▣ 단점
- snapshot을 추출하는 데 시간이 오래 걸림
- snapshot이 추출된 후 소실 (백업 시점의 데이터만 유지됨을 의미)

37

AOF (Append On File) 방식

▣ 정의
- Redis의 모든 write/update 연산 자체를 log파일에 기록하는 방식
▣ 특징
- 서버가 재 시작할 때 기록된 write/update Operation을 순차적으로 재실행해 데이터 복구
- Operation이 발생할 때마다 매번 기록해 RDB방식과는 달리 특정 시점이 아니라 항상 현재 시점까지의 로그를 기록 (Non-blocking call)
▣ 장점
- log파일에 대해 append만 하기 때문에 log write속도가 빠르며 어느 시점에 서버가 다운되더라도 데이터 유실이 발생 안함
▣ 단점
- 모든 write/update Operation 에 대해 log를 남기기 때문에 로그 데이터 양이 RDB 방식에 비해 과다하게 크며 복구 시 저장된 write/update Operation을 다시 리플레이하기 때문에 재시작 속도가 느림

38

NoSQL

▣ 정의
- Not Only SQL의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술
▣ 특징
- 데이터 간 관계 정의 안함
- 분산형 구조
- 고정되지 않은 테이블 스키마
▣ 데이터 저장 구조
1) Key/Value Store
2) Ordered Key/Value Store
3) Document Key/Value Store

39

NoSQL Key/Value Store

▣ 정의
- 가장 기본적인 패턴
▣ 특징
- Unique한 Key에 하나의 Value를 가지고 있는 형태
- Put(key, value), Value := get(key) 형태의 API로 접근
▣ 상용제품
- Oracle Coherence, Redis
▣ 구조
- Key-Value

40

NoSQL Ordered Key/Value Store

▣ 정의
- 기본적인 Key/Value Stor에서 Key 순서로 Sorting되어 저장
▣ 특징
- Key/Value Store와 데이터 저장 방식은 동일하나, 내부적으로 Key순서로 Sorting되어 저장
▣ 상용제품
- Apache HBase, Cassandra
▣ 구조
- key {Column:Value}

41

NoSQL Document Key/Value Store

▣ 정의
- Key/Value Store의 확장, 저장되는 Value의 데이터 타입이 Document 타입 사용
▣ 특징
- XML, JSON, YAML 같은 구조화된 데이터 타입 사용
▣ 상용제품
- MongoDB, CouchDB, Riak
▣ 구조
- key : {JSON, XML Document}

42

NoSQL의 데이터 모델링 기법

▣ NoSQL의 유형별 특징
- KVS(Key-Value Store)
- Ordered Key-Value
- Column (Big-Table)
- Document
- Graph : 데이터의 관계(노드, 관계, 속성) 정보 저장
▣ NoSQL의 데이터 모델링 기법
1) 개념적 기법
- 비정규화(Denormalization)
- 집계(Aggregates)
- Application Side Join
2) 일반적 모델링 기법
- 원자집계(Atomic Aggregate)
- 열거 가능한 키(Enumerable Keys)
- 인덱스 테이블(Index Table)
- 복합 키 인텍스(Composite Key Index)
- 복합 키를 활용한 집계(Aggregation with Composite Keys)
3) 계층 모델링 기법
- 트리 집계(Tree Aggregation)
- 인접리스트(Adjacency Lists)
- 중첩된 세트(Nested Sets)
- 배치 그래프 프로세싱

43

비정규화 (Denormalization)

▣ 개념
- 비정규화는 NoSQL 데이터 모델링의 필수 불가결한 원칙
- 쿼리의 단순화, 최적화를 위해 동일한 데이터를 여러 도큐먼트 또는 테이블에 존재하도록 함
- KVS, Document, BigTable

44

집계 (Aggregates)

▣ 개념
- 엔티티의 중첩을 통해 one-to-many 관계를 최소화하여 조인을 효과적으로 줄임
- 정규화 테이블을 Aggregation 하여 군집화 함 (중첩 엔티티)

45

Application Side Join

▣ 개념
- NoSQL은 조인을 허용하는 경우가 거의 없음
- 비정규화 또는 군집화를 통해 조인 최소화
- 불가피할 경우 애플리케이션을 이용하여 가능하도록 모델링 필요

46

원자집계 (Atomic Aggregage)

▣ 개념
- NoSQL에서 트랜잭션을 지원 할 필요가 있을 경우 적용 가능한 기법
- 하나의 레코드에 대해 변경이 발생할 경우 그 레코드의 원래 버전은 그대로 유지한 채 새로운 버전을 만들어 그 새로운 버전에 대해 변경을 수행함
- KVS, Document, BigTable 계열

47

열거 가능한 키 (Enumerable Keys)

▣ 개념
- 키를 순차적으로 자동 생성되는 ID를 사용하여 저장될 수 있도록 하는 모델링 기법
- ex. 특정 날짜나 현재날짜 앞뒤로 시작하는 메시지들의 검색
- KVS 계열에 적용

48

인덱스 테이블 (Index Tables)

▣ 개념
- 내부적으로 인덱싱을 지원하지 않는 저장소에 인덱싱 기술을 활용할 수 있도록 해주는 기법
- 액세스 패턴에 따라 키의 특별한 테이블을 만들고 유지
- BitTable 계열에 적용

49

복합 키 인덱스 (Composite Key Index)

▣ 개념
- 정렬된 키를 사용할 때 유용한 기법
- 보조 정렬을 결합한 복합키로 위의 차원 축소 기법과 근본적으로 유사한 다차원 인덱스를 만들 수 있음

50

복합 키를 활용한 집계 (Aggregation with Composite Keys)

▣ 개념
- 복합 키는 인덱싱뿐만 아니라 다른 유형의 그룹화에도 사용됨
- 모든 레코드에 각 사용자 정보가 함께 저장되기 때문에 해시 테이블이나 다른 방법들을 사용해 사이트의 중복정보를 삭제한 뒤 메모리에 적재
- Ordered KVS, BigTable 계열에 적용

51

트리 집계 (Tree Aggregation)

▣ 개념
- 트리가 한 번에 접근하는 경우에 효과적인 기법
- ex. 블로그 댓글 트리를 가져와 게시물과 함께 표시하는 경우
- KVS, Document 계열에 적용

52

인접리스트 (Adjacency List)

▣ 개념
- 그래프 모델링의 직선적인 방법
- 각 노드는 선조 또는 자손을 가리키는 배열을 포함하는 별도의 레코드로 모델링 됨
- 노드를 부모 또는 자식의 식별자로 검색가능
- 노드의 모든 하위 트리를 깊이우선탐색 또는 너비우선탐색하는 경우 비효율저임
- KVS, Document 계열에 적용

53

중첩된 세트 (Nested Sets)

▣ 개념
- 트리 모양의 구조를 모델링 하기 위한 표준 기법
- RDBMA에서 널리 활용되며, KVS, Document 계열에 완벽하게 적용가능
- 메모리 사용량이 적고 탐색 없이 주어진 노드의 모든 리프에 접근가능
- 변화없는 데이터 구조에 적합
- 리프 추가시 Overhead 발생
- KVS, Document 계열에 적용

54

배치 그래프 프로세싱

▣ 개념
- MapReduce와 Message Passing 패턴을 이용한 그래프 유형 계열 NoSQL의 대용량 처리를 지원하는 분산 프로세싱을 위한 기법
- 분산네트워크를 노드집합으로 저장하고 각 노드는 인접노드의 ID목록을 포함
- MapReduce 작업이 반복적으로 수행되며 각 노드는 이웃 노드에 메시지를 전달하고 상태를 갱신하며 큰 규모의 그래프 프로세싱 처리가 가능하도록 함

55

Apache Spark

▣ 정의
- 하둡의 맵리듀스 작업에서 선응의 병목현상으로 지목되던 디스크 I/O 비용을 효율화하고 데이터 분석 작업에 용이한 인메모리 컴퓨팅 기반의 데이터 분산처리 시스템
▣ 아키텍처
- Spark SQL (SQL처리)
- Spark Streaming (스트리밍)
- MLlib (기계학습)
- GraphX (그래프연산)
- Apache Spark (실행엔진)
▣ 실행구조
- Driver (task)
- Worker (RDD, RAM, Input Data)
▣ 주요요소
- RDD(Resilient Distributed Dataset) : 사용자 데이터 집합 추상화 객체, 여러 서버에 분산, 다수의 파티션으로 관리
- RDD 연산자
- 인터프리터 결합 : 스칼라쉘
- 작업 스케줄링 : RDD 변환과정 그래프 표현, 실행단계 구성 및 스케쥴링
▣ MapReduce와 비교한 Spark의 개선사항
- Disk I/O 효율 : 인메모리
- 반복작업처리 : 10배 개선
- 다양한 연산처리: map, flatMap연산은 물론 join, union, sort, filter 등의 RDD의 변환/관리에 필요한 다양한 연산 제공

56

Apache Storm

▣ 정의
- 데이터의 실시간 처리를 위해 개발된 범용 분산 환경 기반 실시간 데이터 처리 시스템
▣ 아키텍처
- Node 0 : User Interface, Zookeeper, Nimbus
- Node 1 : Supervisor, Worker(Task1, Task2)
- Node 2 : Supervisor , Worker(Task1, Task2)
▣ 요소설명
- User Interface : Supervisor, Nimbus와 통신
- Zookeeper : Worker 관리
- Nimbus : Supervisor 관리
▣ 데이터 처리 모델
1) 스파우트
- 다양한 데이터 입력
- 토폴로지 구성에 따라 볼트로 전달
- Aggregation, Filtering, Transformation 처리 결과를 볼트에 전달
2) 볼트
- 복수의 노드로 데이터 전달 또는 복수의 노드에서 데이터 입력 받음
▣ MapReduce와 비교한 Storm의 개선사항
- 실시간 처리
- Fault tolerance : master, slave
- 스트리밍 데이터 : Spout, bolt

57

빅데이터 기술 구성요소

1) 수집 및 통합 기술
- Flume : 방대한 양의 이벤트 로그수집
- Chukwa : 분산 시스템의 로그 수집 및 모니터링
- Scribe : 분산 시스템 로그 수집 서버
- SQOOP : RDBMS와 NoSQL간의 데이터 연동
- Kafka : 분산 시스템에서 메시지 전송 및 수집
- OpenRefine : 대용량 데이터 정제
- Thrift : 비정형 데이터의 정형화 및 관리
- Protocol buffers : 오픈소스 직렬화 라이브러리
- Avro : 이기종 간 데이터 교환 및 RPC기능 제공
2) 저장 및 관리기술
- S3 : 아마존의 인터넷 스토리지 서비스
- HDFS : 분산 환경에 기반한 데이터 관리
- DynamoDB : SSD를 이용한 하둡 기반 데이터 분석, 저장
- MongoDB : DB의 수평 확장 및 범위 질의, 맵리듀스 연산
- CouchDB : ACID속성을 유지한 분산 DB
- Cassandra : 데이터의 저장 및 처리, 제한적 정렬
- HBase : 분산 클러스터 관리 및 복구, 데이터의 Get/Put/Scan/Delete 기능
- Redis : 정의된 데이터 타입을 이용한 구조화된 데이터 관리
- Riak : 링형 구조를 이용한 데이터 분산저장
- Hypertable : HBase와 비슷한 하둡 기반 DB, SQL과 비슷한 HQL명령어 제공
- Zookeeper : 여러종류의 하둡기반 시스템 관리
- Voldemort : 해싱을 이용한 빠른 조회, 동시 입력 데이터 처리
3) 처리기술
- Hadoop : 맵리듀스 기반의 분산처리 프레임워크
- Pig : 고수준의 추상화로 개발 편의를 제공하는 데이터 처리 언어 프레임워크
- Hive : 하둡기반의 SQL 프로그램 구현 인프라
- Cascading : JVM에 바탕을 둔 언어 기반 데이터 처리및 통합 API
- Cascalog : SQL보다 높은 수준의 사용자 추상화 제공
- Mrjob : Python 기반의 맵리듀스 개발 모듈
- S4 : 분산 환경 기반의 이벤트 스트림 처리 시스템
- MapR : 기업에 적합한 분산처리 통합 솔루션
- Acunu : 처리속도 개선에 중점을 둔 통합 솔루션
- Azkaban : 워크 플로우를 정의하는 배치 스케줄러
- Oozie : 하둡 기반의 워크플로우 제어 시스템
- Greenplum : 맵리듀스 처리가 가능한 MPP구조의 DB
- EC2 : 컴퓨팅 규모 제어가 가능한 클라우드 서비스
- Heroku : Ruby 기반의 클라우드 개발도구
- R : 통계적 계산과 그래픽을 처리하는 프로그램 언어
- Pipes : 데이터 파이프라인을 생성하는 웹 응용프로그램
- Mechanical Turk : 크라우드소싱 인터넷 마켓
- Solr/Lucene : 전체 텍스트 검색 서버 플랫폼
- ElasticSearch : Lucene기반의 오픈소스 검색엔진
- Datameer : 방대한 양의 데이터 수집 및 분석 플랫폼
- InfoSphere Streams : 대용량 스트리밍 데이터 분석 솔루션
4) 분석기술
- 텍스트마이닝 : 비/반정형 텍스트 데이터에서 자연어처리 기술에 기반하여 의미 있는 정보 추출
- 오피니언마이닝 : 의견이나 평가 등을 분석
- 리얼리티 마이닝 : 모바일 기기로 사용자의 인간관계, 행동방식, 라이프스타일 등을 분석
- 군집화 : 데이터들의 특성을 고려하여 군집을 정의하고 군집을 대표할 수 있는 대표점 찾기
- 소셜네트워크 분석 : 특정 관계망에서 어떤 전체적인 연결 관계가 있는 지를 분석하여 관계의 패턴과 개인 사이의 상대적인 위치 분석
- 그래프 마이닝 : 소셜미디어의 데이터를 표현하는 방법
5) 표현기술
- Tag Cloud : 태그의 연관성에 따른 빈발도 및 관계분석
- Gephi : 데이터를 네트워크 형태로 생성 후 표현
- GraphViz : 흐름도나 트리 ㅏ이어 그램 성생 표현 툴
- Processing : 그래픽 디자인을 위한 프로그래밍 언어
- Fusion Tables : 대용량 데이터를 표현해주는 온라인 서비스
- Tableau : 데이터의 시각적 분석과 리포팅 도구 제공
- TinkerPop : 그래프를 처리하는 통합 서버형 시스템
- Clustergram : 계층적 군집화에 적합한 데이터 표현툴
- Spatial Information Flow : 특정 정보를 기준으로 데이터 흐름 표현

58

빅데이터 수집 기술

▣ 개념
- 대용량의 고속 이벤트 데이터(로그)를 수집 하는 기술
▣ 필요조건
- 확장성 : 무한대로 확장되는 수집대상 서버의 대응
- 안정성 : 수집되는 데이터가 유실되지 않고 안정적 저장
- 유연성 : 다양한 포맷의 데이터, 다양한 프로토타입
▣ 종류
1) Apache Flume
2) Facebook Scribe
3) Apache Chukwa

59

Apache Flume

▣ 개념
- 전형적인 Converging Flow 구조, 스트림 지향의 데이터 플로우를 기반
- 지정된 모든 서버로부터 로그를 수집한 후 하둡 HDFS와 같은 중앙 저장소에 적재
▣ 구성
- Web Server
- Agent (Source, Channel, Sink)
- HDFS
▣ 주요요소
1) Source
- Event를 Sink로 전달
2) Channel
- Source와 Sink의 Dependency를 제거하고 장애대비 위해 중간 채널 제공
- Source는 Channel에 Event정보를 저장, Sink는 채널로 부터 정보를 전달 받아 처리
3) Sink
- 채널로부터 Source가 전달한 Event정보를 HDFS에 저장하거나 다음 Tier Agent 또는 DB로 전달

60

Facebook Scribe

▣ 개념
- Facebook에서 제작, 사용하던 log aggregator system
▣ 구성
- Frontend Servers : 여러개의 Scribe로 구성
- Aggregator nodes : Frontend Servers의 Scribe 정보 집계하는 Scribe
- HDFS : 집계정보 저장
▣ 장점
- Facebook에서 실제로 사용하여 성능과 안전성에서 신뢰
▣ 단점
- 더이상 Facebook에서 사용하지 않음. 거의 발전이 없는 상태

61

Apache Chukwa

▣ 개념
- 분산된 머신에서 데이터를 수집하고, 수집된 데이터를 빠르게 처리 (유연하면서 강력한 플랫폼)
- 데이터를 수집하는 단계와 처리하는 단계를 파이프라인 형태로 구조화
▣ 구조
- Data : App1 log, App2 log
- Agent : 호스트 당 하나
- Collector : Agent 100개당 하나
- HDFS (Data Sink , Map-Reduce Jobs, Structured Storage)
▣ 주요요소
- Agent : 각 머신에서 실행되고, 데이터 전송
- Collector : 에이전트로부터 데이터를 받아 안정적인 스토리지에 저장
- MapReduce : 데이터 파싱 및 아카이빙
- HICC(Hadoop Infrastructure Care Center) : 포털 형식의 인터페이스로 데이터 표시

62

빅데이터 수집 절차와 기술

▣ 수집절차
1) 수집 대상 데이터 선정
- 수집 데이터 도출
- 목록 작성
2) 수집 세부 계획 수립
- 데이터 소유기관 파악 및 협의
- 데이터 유형 분류 및 확인
- 수집 기술 선정
- 수집 주기 결정
- 수집 계획서 작성
3) 데이터 수집 실행
- 사전 테스트 진행
- 데이터 수집 시행
- 데이터 수집 후 처리
▣ 수집 기술
- 크롤링
- FTP
- Open API
- RSS
- Streaming
- Log Aggregator
- RDB Aggregator
▣ 데이터 유형별 수집기술
1) 정형 데이터
- RD, 스프레드 시트
- ETL, FTP, Open API
2) 반정형 데이터
- HTML, XML, JSON, 웹문서, 웹로그, 센서 데이터
- Crawling, RSS, Open API, FTP
3) 비정형 데이터
- 소셜 데이터, 문서(워드, 글), 이미지, 오디오, IoT
- Crawling, RSS, Open API, Streaming, FTP

63

데이터베이스의 키

▣ 키의 정의
- 튜플을 유일하게 식별할 수 있는 Attribute 집합을 그 릴레이션의 키라 함
- 여러 개의 집합체를 담고 있는 하나의 엔티티 타입에서 각각의 엔티티를 구분할 수 있는 결정자
▣ 종류
- 슈퍼키 : 유일성만 만족
- 후보키 : 유일성, 최소성 만족
- 기본키 : 후보키 중 선정
- 대체키 : 후보키 중 기본키를 제외한 나머지 후보키
- 외래키 : 릴레이션 R2의 한 속성이나 속성 조합이 릴레이션 R1의 기본 키인 경우
▣ Key 결정 및 도출 과정
1) 결정자 도출 : 유일성 검증
2) 슈퍼키 선정 : 최소성 확인
3) 후보키 선정 : 엔터티 대표성
4) 기본키 결정

64

기본키

▣ 정의
- 후보키 중 데이터베이스 설계자가 선정하는 하나의 키
- 기본키는 엔티티 타입을 대표하는 주 식별자
▣ 주식별자와 보조식별자
- 주식별자 : PRIMARY KEY
- 보조식별자 : UNIQUE INDEX
▣ 특징 (유최불존)
- 유일성 : 유일한 식별자
- 최소성 : 최소 속성 구성
- 불변성 : 식별자 불변
- 존재성 : 식별자 값의 존재
▣ 기본키의 선정 기준
1) 속성의 사용 빈도
- 빈번하게 사용되는 속성
2) 명칭, 내역 등의 이름 속성은 제외
- 방안1 : 부서에 부서코드를 부여하여 주 식별자로 사용
- 방안2 : 부서인련번호를 주 식별자, 부서명은 보조 식별자로 선정
3) 과도한 복합키 배재
- 주식별자 속성 개수 최대 7~8개 이내로 유지
- 방안 : 주식별자 속성 수가 8개 이상 시, 모델 단순화를 위해 새로운 식별자를 주식별자로 선정

65

외래키

▣ 정의
- 한 테이블 내의 필드 또는 필드의 결합으로서 반드시 다른 테이블의 기본키와 대응되거나 또는 널값을 가지는 역할을 하는 키
▣ 사용 목적
1) 데이터 모델의 운영규칙 명시
- 엔터티간 운영규칙
2) 관계의 명확성
- 부모-자식 관계 확실화
3) 데이터의 중복성 확인
- 수퍼타입-서브타입 재검토
4) 테이블간 참조 메커니즘
- 관련 테이블 간 참조장치
5) 엔티티의 의미부여
- 의미 있는 이름 부여
6) 데이터의 참조 무결성
- 허용된 데이터 수치만 저장
- 참조 테이블과 연결고리를 통해 무결성 유지

66

무결성을 위한 Key 제약

▣ 키워드 : 유최 후기대 참범
▣ 데이터 모델링의 무결성을 위한 Key의 제약
1) 본질적 제약
- 반드시 주키가 있어야 함
- Primary Key
- Unique Key
- 특성 : 유일성, 최소성
- 종류 : 후보키, 기본키, 대체키
2) 내재적 제약
- DB 스키마에 지정하는 제약
- Foreign Key
- Check, Default, Not Null
- 유형 : 참조무결성 제약 (restrict, cascade, nullify, default), 범위제약 (check, default, Not Null, Rule)
3) 명시적 제약
- 프로그램에 명시

67

System Catalog

▣ 정의
- DBA의 도구로서 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보를 수록한 시스템 테이블 (데이터 사전, Data Dictionary)
▣ 특징
- DBMS가 스스로 생성하고 유지
- 스키마에 대한 정보 제공
- 테이블, 인덱스, 뷰 정보 저장
▣ 구성요소
- 스키마구조 : 테이블명, 인덱스명, 컬럼명, 뷰, 참조관계
- 감사/추적 : 수행이력, 트랜잭션정보, 세션정보
- 사용자 권한 : 접근, 입력, 수정, 삭제 권한
- 질의 최적화기 : Execution Plan
- 컴파일러 : DML, DCL

68

함수적 종속성

▣ 정의
- 릴레이션 R 에서, 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관되는 관계를 Y는 X에 함수적 종속이라고 하고, X->Y로 표현
▣ 중요성
- 갱신이상 제거
- 제2 정규형에서 BCNF 까지 적용
▣ 함수적 종속성의 추론규칙(암스트롱의 법칙)
(재증이 연분의)
1) 기본
- 재귀 : Y가 X의 부분집합이면 X->Y 이다
- 증가 : X->Y 이면, XZ->YZ 이다
- 이행 : X->Y이고, Y->Z이면, X->Z이다
2) 부가
- 연합 : X->Y이고, X->Z이면, X->YZ 이다.
- 분해 : X->YZ 이면, X->Y 이고, X->Z 이다
- 의사이행 : X->Y 이고, YW->Z 이면, XW->Z 이다
▣ 다음 함수의 종속성을 기반으로 키를 도출하시오.
- FD1 : A->B
- FD2 : A->D
- FD3 : DK->H
- FD4 : DK->Z
▣ 주어진 사례에서 Key 결정
1) FD5 (합집합)
- FD1과 FD2에서, A->DB
2) FD6 (의사이행)
- FD2와 FD3에서, AK->H
3) FD7 (의사이행)
- FD2와 FD4에서, AK -> Z
4) 유일성 만족
- 7개의 종속성에서 유일하게 독립변수로 나온 것은 A, D, K 임
5) 최소성 만족
- AD, DK, AK 가 후보키가 되는데 3개중에서 완전 함수종속성은 AK 가 됨. 기본키는 AK 임
※ D는 FD에서 종속변수 위치에 존재하는 경우가 있어 AD, DK는 완전함수족속성을 위배

69

관계대수

▣ 정의
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
▣ 용도
- SQL 이론의 기초
- SQL 구현 최적화
▣ 종류
1) 집합연산자
- 합집합(UNION, U)
- 교집합(INTERSECT, ∩)
- 차집합(DIFFERENCE, -)
- 카티션 프로덕트(CARTESIAN PRODUCT, X)
2) 순수연산자
- 실렉트(SELECT, σ(시그마))
- 프로젝트(PROJECT, π(파이))
- 조인(JOIN, ▷◁)
- 디비전(DIVISION, ÷)
▣ 관계대수 표현
1) 과목코드가 20인 과목에서 등록한 학생의 이름, 학년 조회
- π이름,성적(σ과목코드=20(학생 ▷◁n 등록))
2) 학변 100, 이름 '홍길동', 학년 4, 학과 '컴퓨터' 인 학생을 학생테이블에 삽입
- 학생 U (}
3) 과목 릴레이션에서 과목이름이 'DB'인 릴레이션을 선택하여 원래의 과목 릴레이션에서 제거
- 과목 - (σ과목이름='DB'(과목))

70

인덱스

▣ 정의
- 데이터 검색 속도 향상을 위하여 테이블에 저장된 row를 식별 가능하도록 구조화된 형태의 테이블과 별도의 체계를 저장한 데이터베이스 오프젝트
▣ 특징
- 조회 성능향상
- 독립적 인덱스 저장
- 트리 알고리즘
- Trade-off
▣ 필요성
- 개발자 : 개발생산성 향상, 유지보수 비용절감
- 사용자 : 응답속도 향상, 고객만족도 개선
- 시스템 : 가용성 향상, 신뢰성 증진
▣ 인덱스 구조의 종류
1) 형태기준
- 트리 인덱스 : B-Tree
- 해쉬 인덱스 : Hash Table
- 비트맵 인덱스 : ROWID
2) 목적
- 함수 인덱스 : 함수결과 인덱스
- 조인 인덱스 : DW 컬럼 조인
- 도메인인덱스 : 사용자정의
3) 구조
- 정적 인덱스 : 인덱스의 내용은 변하지만 구조는 변경되지 않는 기법
- 동적 인덱스 : 빈 공간을 미리 준비해 두는 기법
▣ 인덱스의 유형
1) 물리적
- Clustered : 레코드 순서와 인덱스 페이지 정렬 순서와 동일
- Non-Clustered : 물리적 순서가 인덱스의 엔트리 순서와 상관없음
2) 밀집도
- Dense : 레코드 하나에 하나의 인덱스
- sparse : 레코드 그룹에 하나의 인덱스
3) 구현방식
- bitmap : bit로 맵을 만드는 인덱스
- function : 함수 표현식으로 인덱스 생성
4) 형태
- tree : tree 구조를 이용한 인덱스
- hash : 해시함수를 이용한 인덱스
▣ 인덱스 설계순서
1) 인덱스 대상 선정
- 대상 컬럼 선정
- 대상 테이블 선정
- PK 인덱스 선정
- FK 인덱스 선정
2) 인덱스 최적화
- 인덱스 효율 검토
- 인덱스 데이터 타입 적용
- 인덱스 정렬
- 클러스터링 검토
3) 인덱스 정의서 작성
- 엔터티 타입명
- 인덱스 스페이스
- 인덱스 유형
- 정렬
- 구분
▣ 인덱스 선정기준

▣ 인덱스 선정시 고려사항

71

데이터베이스 논리적 인덱스

▣ Clustered Index
- 데이터의 레코드 순서가 인덱스 페이지의 정렬 순서와 동일하거나 비슷하게 만들어진 인덱스
- 인덱스를 기준으로 입력, 삭제, 수정 할 때마다 행들이 다시 배열
- 데이터 변경 시에는 속도가 느리지만 범위 검색을 할 때는 매우 빨라서 검색에 유용
▣ Non-Clustered Index
- 데이터 레코드의 물리적 순서가 인덱스의 엔트리 순서와 상관없이 저장되도록 구성된 인덱스
▣ Dense Index
- 데이터 레코드 하나에 대해 하나의 인덱스 엔트리가 만들어지는 인덱스
▣ Sparse Index
- 데이터 파일의 레코드 그룹, 또는 데이터 블록에 하나의 엔트리가 만들어지는 인덱스
▣ Unique Index
- 인덱스 컬럼에 대해 중복된 값을 허용하지 않음
- 인덱스 키는 연관된 테이블의 하나의 행만 가리킴
- 테이블에서 기본키와 고유키 제약조건을 정의하면 인덱스가 묵시적으로 생성
▣ Non-Unique Index
- 인덱스 컬럼에 대해 중복된 값을 허용
- 인덱스 키는 연관된 테이블의 여러 행을 가리킬 수 있음
▣ Single Index
- 하나의 컬럼으로 구성된 인덱스
▣ Composite Index
- 여러 개의 컬럼 조합으로 생성된 인덱스
- 조합 인덱스는 최대 32개의 컬럼까지 구성가능
▣ Function-based index
- 함수나 표현식의 계산 값으로 인덱스 생성
- 함수의 리턴 값은 DETERMINISTICS로 선언되어야 함
- Cost-based에서만 사용 가능함

72

데이터베이스 물리적 인덱스 유형

▣ Partition Index
- 큰 테이블의 인덱스 엔트리를 저장하는데 사용
- 인덱스까지 화일별로 다르게 저장 (대용량 테이블에서만 효과)
- 인덱스 값에 따라 여러 세그먼트에 나누어 보관
▣ Bitmap Index
- Bit로 맵을 만드는 인덱스 (컬럼 기반의 DBMS)
- Cardinality(한 릴레이션을 구성하는 투플의 수)의 개수로 맵을 만듦
▣ Reverse Index
- 연속된 데이터를 지우거나 관리하는 경우에는 이전의 데이터를 지워버리면 한쪽의 데이터가 지워진 것이기 때문에 인덱스의 밸런스가 깨져 효율이 좋지 않음
- 해당 컬럼의 값을 뒤집어서 그 값을 ROWID와 매칭시켜 인덱스를 만들면, 후에 연속된 데이터가 지워지더라도 균등하게 지워지기 때문에 밸런스 유지가 쉬움
▣ Descending Index
- 일반적인 인덱스는 기본적으로 오름차순이나 내림차순으로 데이터 정령

73

Clustered Index (비교)

▣ 정렬방식
- 인덱스 키 값의 순서에 따라 정렬되어 있으며 데이터 삽입, 삭제시 데이터 재 정렬해야 함
▣ 검색속도
- 실제 데이터가 순서대로 저장되어 있어 원하는 데이터를 빠르게 찾을 수 있다.
▣ 인덱스생성수
- 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있음
▣ 리프 페이지
- 실제 데이터
▣ 조회성
- 적은 양이든, 많은 양이든 유리함
▣ 인덱스 크기
- 비교적 작음
▣ 선택도
- 30% 정도면 사용함
create table tbl
(
a int primary key, --> 자동 클러스터드
인덱스가 만들어짐
b int unique, -->자동 넌클러스터드
인덱스가 만들어짐
c int unique,
d int
)

74

Non Clustered Index (비교)

▣ 정렬방식
- 키값만 정렬되어있으며 실제 데이터는 정렬되지 않음
▣ 검색속도
- 인덱스검색 후 실제 데이터 위치를 확인하여 클러스터드 인덱스에 비해 속도가 느림
▣ 인덱스생성수
- 한 개의 릴레이션에 최대 249개 까지 생성가능
▣ 리프 페이지
- 실제 데이터 주소
▣ 조회성
- 비교적 적은 양의 데이터
▣ 인덱스 크기
- 클러스터드 인덱스 보다 크다
▣ 선택도
- 3% 이내면 사용함
create table tbl2
(
a int primary key nonclustered, --> 자동
클러스터를 넌 클러스터로 만듦
b int unique clustered, -->자동 넌클러스터드를
클러스터드로 만듦
c int unique,
d int
)

75

정적 인덱싱 (비교)

▣ 개념
- 데이터 파일에 레코드가 삽입되거나 삭제됨에 따라 인덱스의 내용은 변하지만 인덱스 구조 자체는 변경되지 않게 하는 인덱싱 기법
▣ 특징
- 데이터파일에 새로운 레코드를 저장할 공간이 없으면 오버플로우 영역 사용
- 논리적인 키 값의 분포보다는 기억장소의 물리적인 특성(실린더, 트랙)에 맞게 인덱스 구성
▣ 구성도
- 색인영역 (트랙/실린더/마스터 색인)
- 기본영역
- 오버플로우영역
▣ 오버플로우 처리 방법
- 오버플로우가 발생하면 오버플로우 영역에 체인으로 연결
- 오버플로우 체인에 연결되어 있는 레코드들은 오버플로우 영역 내에서 체인을 따라서 순차검색
▣ 장단점
- 보조기억장치의 물리적 특성에 맞추어 구성하므로 효율적인 액세스가 가능
- 삽입/삭제 등 파일의 변화를 오버플로우 구역을 이용하여 수용하므로, 시간이 흐름에 따라 파일의 성능이 저하
- 유형이 다른 장치로 복사 어려움
▣ 설계 시 고려사항
- 인덱스 구역/기본데이터구역/오버플로우 데이터 구역의 크기
- 인덱스의 레벨
- 기본 데이터구역의 인덱스 블로킹
▣ 사례
- IBM의 ISAM 파일

76

동적 인덱싱

▣ 정의
- 인덱스와 데이터 파일을 블록으로 구성하고, 각 블록에는 나중에 레코드가 삽입될 것을 감안하여 빈 공간을 미리 준비해두는 인덱싱 기법
▣ 특징
- 하나의 블록이 가득 차게 되면 동적으로 분열 (Split)
- 일정수의 레코드를 유지 못하면 병합 (merge)
- 기본 구역과 오버플로우 구역을 구분하지 않음
▣ 구성도
- 색인영역
- 기본영역
▣ 오버플로우 처리 방법
- 오버플로우가 발생하면 데이터 블록을 분할하고 인덱스 수정
- 오버플로우에 따라 새로운 인덱스 항목이 만들어짐
▣ 장단점
- 오버플로우 체인을 사용하지 않으므로 보다 효율적으로 레코드를 검색
- 레코드를 삭제하면 그 공간을 재사용
- 필요할 때마다 부분적을로 파일로
▣ 설계 시 고려사항
- 데이터 블록의 크기
- 인덱스 블록의 크기
- 초기 인덱스 레벨 수
- 최대 인덱스 레벨
▣ 사례
- IBM의 VSAM 파일

77

B-Tree (비교)

▣ 개념
- Root Block, Branched Block, Leaf Block 으로 구성되어 Branched Block의 군형을 유지하는 트리구조
▣ 인덱스 노드 구조
- Entry Header
- Key 값의 쌍
- ROWID
▣ 사용 환경
- OLTP
▣ 검색 속도
- 소량의 데이터를 검색하는데 유리
▣ 분포도
- 데이터 분포도가 높은 컬럼에 유리
▣ 장점
- 입력, 수정, 삭제가 용이함
▣ 단점
- 스캔 범위가 넓을 때 랜덤 I/O 발생

78

비트맵 인덱스 (비교)

▣ 개념
- 전체 로우의 인덱스 컬럼 값을 0과 1을 이용하여 저장
▣ 인덱스 노드 구조
- Entry Header
- Key 값의 쌍
- 시작 ROWID
- 끝 ROWID
- Bitmap Segment
▣ 사용 환경
- DW, DM
▣ 검색 속도
- 대량의 데이터를 읽을 때 유리
▣ 분포도
- 데이터 분포도가 낮은 컬럼에 유리
▣ 장점
- 비트 연산으로 OR연산, NULL값 비교 등에 강함
▣ 단점
- 전체 인덱스 조정의 부하로 입력, 수정, 삭제가 어려움

79

데이터 독립성

▣ 개념
- 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성
▣ 데이터 독립성의 종류
- 논리적 독립성 : 응용프로그램의 영향없이 논리적 구조 변경
- 물리적 독립성 : 내부스키마 변경 시 외부/개념에는 영향 없음
▣ 데이터 독립성을 위한 3단계 데이터 구조
1) 외부 스키마
- DB에 대한 각 사용자 View
2) 개념 스키마
- 조직전체 DB 기술
- 접근권한, 보안정책, 무결성 규칙 포함
3) 내부 스키마
- DB가 물리적으로 저장된 형식

80

데이터 무결성

▣ 정의
- 데이터의 중복이나 누락이 없는 정확성과 원인과 결과 의미의 연속성이 보장되는 일관성이 확보된 상태
- 정확성, 유효성, 일관성, 신뢰성을 위해 무효 갱신으로 부터 데이터 보호
▣ 중요성
- 의미 있는 가치 제공
- 정확하고 오류 없는 데이터
▣ 데이터 무결성의 종류
1) 개체무결성(Entity Integrity)
- 기본키 속성은 Not Null
- 기본키는 유일성 보장, 최소한의 집합
2) 참조무결성(Referential Integrity)
- 외래키는 참조할 수 없는 값을 가질 수 없음
- 기본키 값이거나 널 값
3) 속성 무결성(Attribute)
- 컬럼의 지정된 데이터 형식 만족
4) 사용자 정의 무결성
- 업무 규칙 준수
5) 키 무결성(Key)
- 같은 key 값 튜플 허용 안함
- 하나의 릴레이션에는 적어도 하나의 키 존재 해야함
6) 범위무결성(Domain)
- 정의된 범위에서 모든 열 선언되도록 규정
▣ 데이터 무결성 유지 방법
1) 선언적 방법 (DBA)
- Primary Key
- Foregin Key
- Unique
- Check
- Data Type
- Default
2) 절차적 방법 (개발자)
- Trigger
- Stored Procedure
- Application

81

정규화

▣ 정의
- 데이터의 이상현상을 제거하기 위해 데이터의 함수적 송속성이나 조인 속성을 이용하여 분리, 통합하는 방밥
▣ 목적
- 데이터 중복의 최소화
- 이상현상 발생 방지
- 데이터 구조의 안정성 유지
- 종속성 제거
- 관리 효율 향상
▣ 특징
- 종속관계를 이용하여 엔티티 타입을 정제
- 수학적인 접근 방법을 통해 분석하는 방법
▣ 원칙
- 분리의 원칙
- 정보의 무손실
- 데이터 중복성 감소
▣ 함수적 종속성(FD : Functional Dependency)
- 기준값을 결정자라 하고, 종속되는 값을 종속자
- 결정자(X) -> 종속자(Y)
- 주민등록번호 -> (이름, 출생지, 주소)
▣ 함수적 종속성의 종류
1) 완전 함수적 종속성
- {학번, 과목번호} -> 성적
2) 부분 함수적 종속성
- 결정자의 일부가 종속자를 종속
- 학번 -> 학과
3) 이행 함수적 종속성
- 기본키가 아닌 값이 다른 기본키가 아닌 값을 종속
- 학번 -> 지도교수
- 지도교수 -> 학과
- 학번 -> 학과
4) 결정자 함수 종속성
- 기본키가 아닌 속성이 기본키의 일부를 종속
- 교수 -> 과목
▣ 이상현상
- 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
- 갱신이상, 삭제이상, 삽입이상
▣ 정규화 단계
- 1차 정규화 : 반복되는 속성 및 그룹 속성 제거
- 2차 정규화 : 부분 함수 종속성 제거
- 3차 정규화 : 이행함수 종속성 제거
- BCNF : 결정자 함수 종속성 제거
- 4차 정규화 : 다중값 종속성 제거
- 5차 정규화 : 조인 종속성 제거

82

암스트롱의 공리

▣ 개념
- 릴레이션 R에 대해 X, Y, Z 라는 애트리뷰트의 집합이 주어졌을 경우 여러 가지 함수종속의 성질을 유도해 낼 수 있는 추론 규칙
▣ 특징
- 정규화에 이용
- 건전성 : 잘못된 함수종속 생성하지 않음
- 완전성 : 집합 F에 대해 모든 F+ 찾을 수 있음
▣ 추론규칙
1) 기본규칙
- 반사 : Y가 X의 부분집합이면 X->Y 이다
- 확대 : X->Y 이면 XZ->YZ 이다
- 이행 : X->Y, Y->Z 이면 X->Z 이다
2) 유도된 규칙
- 합집합 : X->Y 이고 X->Z이면 X->YZ 이다
- 분해 : X->YZ 이면 X->Y, X->Z 이다
- 의사이행 : X->Y, YZ->W 이면 XZ->W 이다

83

반정규화

▣ 정의
- 적정 수준의 정규화 이후, 질의 성능 향상을 위해, 일부의 데이터에 대해 중복을 허용하는 정규화의 역작업
▣ 검토기준
- 정합성과 데이터 무결성, 성능과 테이블 단순화의 Trade Off 검토
▣ 이유
- 과도한 디스크 I/O 성능저하
- 경로가 멀어진 조인 성능저하
- 과도한 정규화로 데이터 분산화
- 고객요구 충족 어려운 경우
- Query를 이용한 대용량 검색/통계처리/넓은범위 처리시
▣ 절차
1) 반정규화 대상조사
- 범위처리 빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수 조사
2) 다른 방법 유도
- 뷰 테이블
- 클러스터링 적용
- 인덱스 적용
- 응용 어플리케이션
3) 반정규화 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
▣ 반정규화의 유형 (테컬관)(병분추 중파이P응 관)
1) 테이블 반정규화
- 테이블 병합 : 1:1, 1:M, 슈퍼/서브 타입
- 테이블 분할 : 수직/수평 분할
- 테이블 추가 : 중복/통계/이력/부분 테이블 추가
2) 컬럼 반정규화
- 중복컬럼 추가 : 조인감소
- 파생컬럼 추가 : 미리계산
- 이력 테이블 추가 : 최근 값, 시작/종료 일자 추가
- PK에 의한 컬럼 추가 : 복합의미 PK를 일반속성으로 포함
- 응용시스템 오동작을 위한 컬럼 추가 : 이전 데이터 임시적 중복
3) 관계 반정규화
- 중복관계 추가 : 추가관계 설정
▣ 고려사항
- update 기능이 많은 경우 정규화가 유리
- Select 많은 경우 반정규화 고려
- 정규화와 반정규화의 Trade Off
- 가독성 및 유지보수성에 주의
- 반정규화는 성능향상을 위한 우선순위 고려사항 아님

84

테이블 파티셔닝

▣ 정의
- SQL문이나 어플리케이션 수정없이, 큰 테이블이나 인덱스를 관리하기 쉬운 작은 단위로 분할하여 관리하기 위한 물리적 분할 관리 기법
▣ 목적
- 가용성, 관리용이성, 성능향상
▣ 종류
- 레인지 : 년월 분할
- 해쉬 : 컬럼 기준 분할
- 리스트 : 지역별 분할
- 컴포지트 : 레인지 + 해시 등등

85

연결함정

▣ 정의
- 데이터모델링시 개체와 개체사이에 부여하는 관계성 집합의 의미가 모호하여 원하는 결과를 얻을 수 없거나 향후 업무처리에 영향을 미치게 되는 ER모델의 문제점
▣ 유형
- 부채꼴 함정 : 관계성이 모호한 경우
- 균열 함정 : 관계성이 존재하지 않는 경우

86

데이터 모델링

▣ 정의
- 현실 세계의 업무를 추상화하여 데이터베이스의 데이터로 표현하기 위한 설계 과정
▣ 데이터 모델링 4단계
- 요구사항 분석
- 개념 모델링 : 엔티티 추출, 관계 정의
- 논리 모델링 : 스키마 설계, 정규화
- 물리 모델링 : DBMS 종류 결정, 데이터 타입과 사이즈 정의

87

데이터 모델링 - 개념적 모델링

▣ 정의
- 해당 조직의 업무요건을 충족하기 위해서 주제 영역과 핵심 데이터 집합간의 관계를 정의하는 상위 수준의 개략적 데이터 설계 작업
▣ 절차
1) 주제영역 선정 : 상향/하향/혼합
2) 핵심데이터 집합 선정 : 독립, 의존, 연관 데이터 집합 정의
3) 관계 설정 : 1:1, 1:N, M:N
4) 핵섬속성 정의 : 원자단위, 유일값
5) 식별자 정의 : PK, FK

88

데이터 모델링 - 논리적 모델링

▣ 개념
- 개념적 데이터 구조를 목표 데이터 베이스로 구현하기 위한 중간 단계로서 사용자 중심의 논리적 구조를 표현해 가는 과정을 통해 특정 DBMS가 처리할 수 있는 매핑 규칙 및 변환 기술을 적용하여 스키마를 생성하는 단계
▣ 주요 입력 요소
- 개념적 데이터 모델이 매핑규칙으로 적용
- 업무의 운영 요구조건, 자료량과 사용 용도
- 일관성 제약조건
- DBMS의 논리적 구조와 데이터 정의어
▣ 주요 출력 요소
- 특정 DBMS에 의해 구현 될 수 있는 스키마
- 처리 가능한 뷰 및 뷰를 이용한 보안 제약
- 물리적 설계 단계에서 적용될 메뉴얼
- 응용프로그램 설계 및 DB 운영 지침
▣ 주요 Task
- 엔티티 타입 도출 : 기본, 중심, 행위, 엔티티 타입
- 관계 도출 : 엔티티 타입 간 관계
- 식별자 도출 : PK, FK
- 세부사항 도출 : 용어사전, 도메인 정의, 속성의 규칙(기본값, 체크값)
- 정규화 : 1,2,3,BCNF,4,5
- 통합/분할 : 슈퍼/서브 타입
- 데이터 모델 검증 : 엔티티타입, 속성, 관계

89

데이터 모델링 - 물리적 모델링

▣ 정의
- 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 효율적이고 구현 가능한 물리적인 스키마를 생성하는 과정
▣ 변환단계
1) 일괄변환
- Entity를 Table로 전환
- 식별자의 PK 정의
- 속성을 컬럼으로 전환
- 관계를 컬럼으로 전환
2) 구조조정
- 슈퍼/서브타입 모델 전환
3) 성능향상
- 반정규화

90

슈퍼타입 서브타입

▣ 개념
- 엔티티 작성시 대부분의 속성이 비슷하고 일부만 다른 여러 엔티티들을 하나로 묶어 통합하는 경우 수행하는 확장형 데이터모델링
▣ 기법
- 통합화와 세분화
ex) 접수 (인터넷, 방문, 전화)
▣ 기법
1) One To One Type : 1:1 타입
2) Plus Type : 슈퍼 + 서브 타입
3) Single Type : All in One 타입

91

ERD

▣ 정의
- 데이터베이스의 구조 및 그에 수반한 제약조건들을 다양한 기법에 의해 설계하는 개체-관계 모델링
▣ 데이터 모델링
1) 분석
- 비즈니스 요구사항
- 논리 데이터 모델링
- 프로세스 모델링
- 상관 모델링
2) 설계
- 물리 데이터 모델링
- Application 설계
3) 개발
- DB 구축, 변경, 관리
- Application 개발
4) 테스트
- DB 튜닝
- Application 테스트
5) 전환/이행
- DB 전환
- Application 설치
▣ 기본요소
- 개체(Entity) : 사물, 사건, 명사형 (사각형)
- 관계(Relationship) : 연관성 (마름모)
- 속성(Attribute) : 원자 속성 : (타원)
▣ 절차
1) 엔티티 타입 도출
- 업무기술서, 장표, 인터뷰에서 명사 구분
2) 엔티티 관계 유형 정의
- 개체타입들 사이에 존재하는 관계타입 정의
3) 속성/식별자 정의
- 개체 타입별 속성 결정
- 유일성, 최소성 기준 주키 선정
4) 정규화
5) 통합
6) 검증
▣ 표기법
- Chen
- IDEFIX
- IE/Crow's Foot
- UML
- Barker
▣ 관계 표현
- 1:1 표현
- 1:M 표현
- M:M 표현

92

CRUD 매트릭스 (상관 모델링)

▣ 상관 모델링의 정의
- 정보화 시스템을 구축하기 위해 그 업무에 존재하는 무엇(데이터)에 대해 무슨일이 행해지고(프로세스) 있는지 또는 무슨 일에 의해 무엇(데이터)이 영향을 받는지 분석하는 방법
▣ 상관 모델링의 목적
- 검토목적 : 업무, 데이터, 프로세스
- 기능구분 : 연관성, 연계성 분석
- 테스트
- 고가용성
▣ CRUD Matrix의 정의
- 시스템 개발 시 프로세스(또는 메소드, 클래스)와 DB에 저장되는 데이터 사이의 Dependency를 나타내기 위한 Matrix
▣ CRUD Matrix의 특징
- 모델링 작업 검증
- 중요 산출물
- 테스트에서 사용
- 인터페이스 현황 파악
▣ CRUD Matrix 생성을 위한 필요 요소
- 데이터 모델링
- 업무 분해도
▣ 내용
- C(Create) : 데이터 생성
- R(Read) : 데이터 참조
- U(Update) : 수정/갱신
- D(Delete) : 삭제
▣ 작성
1) 세로 : 단위프로세스
- 접수한다.
- 대여한다.
- 통보한다.
- 등록한다.
- 수정한다.
- 반납한다.
2) 가로 : 엔티티 타입
- 고객
- 대여주문
- 대여목록
- 연체료
- 책목록
▣ 검증
- 모든 엔터티 타입은 CRUD가 한 번 이상 표기되었는가?
- 모든 엔터티 타입에 "C"가 한 번 이상 존재하는가?
- 모든 엔터티 타입에 "R"이 한번 이상 존재하는가?
- 모든 단위 프로세스는 하나 이상의 엔터티 타입에 표기 되었는가?
- 두 개 이상의 단위 프로세스가 하나의 엔터티 타입을 생성하는가?

93

OR Mapping

▣ 정의
- 객체지향 프로그래밍 시 설계할 클래스들과 데이터저장소로 이용될 RDBMS Table 간의 Mapping
▣ 클래스 Relationship의 종류
- Association : 협력 관계
- Aggregation : 전체-부분 관계
- Composition : 부모-자식 관계
- Generalization : 상속 관계
- Dependency : 종속적 관계
▣ 절차
- Class To Table
- Attribute To Column
- Class Relationship To Relational Relationship : Association, Aggregation, Generalization)
▣ 기법
1) Association
- 1:1 : 접근의 빈도수가 많은 쪽으로 상대방의 Primary Key가 Foregin Key로 등록
- 1:M : M쪽으로 1쪽의 Primary Key를 Foregin Key로 매핑
- M:M : 새로운 Associated Table 생성 후 양쪽 테이블의 Primary Key를 갖도록 설계
2) Aggregation
- Foreign Key 참조
3) Composition
- Delete Cascading 설계
4) Generalization
- Super 클래스와 각 Sub 클래스를 별도의 테이블로 매핑
- Super 클래스가 Sub 클래스의 모든 속성을 포함하여 단일 테이블로 매핑
- Sub 클래스들이 Super 클래스의 속성을 상속받아 Sub 클래스들을 테이블로 매핑

94

iBatis

▣ 공통점
- XML 템플릿 등과 같은 표준 패턴 이용
- JDBC와 같은 코드 사용시 보다 훨씬 간단한 구현 및 변경사항 적용
- 사용자에 의한 리소스 관리 및 코드의 중복 개발 감소
- 오픈 소스 기반의 ORM 프레임워크로 자유로운 이용과 배포 허용
▣ 기반사상
- SQL Mapping (Partial ORM)
▣ 매핑특징
- SQL 문을 활용한 객체 매핑
- 개발자가 직접 객체지향 관점에서 매핑
- 객체 모델과 데이터 모델 사이 매핑에 아무런 제약 사항이 없음
▣ 활용특징
- 응답 지연 시간이 짧음
- 사용자 학습 곡선이 작음
- SQL 지식이 높아야 함
- 유연성이 우수
▣ 적용방법
- 자바 객체를 SQL 문장에 매핑
- 자바 코드에서 SQL 부분을 제거하고 XML에 임베디드 된 SQL 활용
- SQL 문장은 개발자에 의해 작성됨
▣ 적용조건
- SQL 문을 통한 튜닝이나 최적화 필요 시
- 부적절한 DB 설계 상황
- 3rd Party 데이터베이스에 접근하는 경우
- 여러 개의 테이블과 하나의 자바 클래스 매핑 되는 경우
▣ 장점/단점
- 복잡한 데이터 전송 환경에 효과적
- SQL의 장점 활용에 비교 우위
▣ 유사제품
- Oracle SQLJ, Pro*C embedded SQL
- 대부분의 임베디드 SQL 시스템
▣ 환경설정
- SqlMapConfig.xml : DataSource, DataMapper 및 Thread 관리 등의 설정 정보
- SqlMap.xml : 많은 캐시 모델, 파라미터 맵, Results Maps, Statements 정보 포함

95

Hibernate

▣ 공통점
- XML 템플릿 등과 같은 표준 패턴 이용
- JDBC와 같은 코드 사용시 보다 훨씬 간단한 구현 및 변경사항 적용
- 사용자에 의한 리소스 관리 및 코드의 중복 개발 감소
- 오픈 소스 기반의 ORM 프레임워크로 자유로운 이용과 배포 허용
▣ 기반사상
- OR Mapping (Full ORM)
▣ 매핑특징
- 자바 클래스 객체와 테이블을 매핑
- 매핑 정보의 수정만으로 변경사항 적용
- SQL Mapper 보다 다양한 작업 수행
▣ 활용특징
- 응답 지연 시간이 김 (쿼리 자동 생성)
- 사용자 학습 곡선이 큼
- SQL 지식이 별로 필요 없음
- 유연성이 부족함
▣ 적용방법
- 자바 객체를 테이블 Row에 동기화
- 모든 SQL 문은 프레임워크에서 생성하고 실행하는 방식
- SQL 작업 필요 시 HSQL 통해 이루어짐
▣ 적용조건
- SQL Mapper 보다 효율적인 매핑
- 새로운 프로젝트가 시작된 상태
- 객체 모델과 데이터베이스 디자인이 미완성인 상태
- 하나의 테이블과 하나의 자바 클래스가 매핑되는 경우
▣ 장점/단점
- OR Mapper에 의한 자동화 지원
- 간단한 CRUD 어플리케이션 테이블-클래스 매핑 사용시 단순성과 성능 비교 우위
▣ 유사제품
- TopLink, JDO, ADO.NET
▣ 환경설정
- hibernate.properties : 전체 구성 지정
- hibernate.cfg.xml : hibernate.properties 파일에 대한 대응

96

Transaction

▣ 정의
- 한번에 수행되어야 할 데이터베이스의 일련의 Read와 Write연산을 수행하는 단위
▣ 특징 (ACID)
- 원자성 : 분해가 불가능한 최소의 단위, Commit/Rollback 연산 (트랜잭션 관리자)
- 일관성 : 모순 없는 일관성 상태 (무결성제어기)
- 고립성 : 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없음 (병행제어관리자)
- 영속성 : 영구적으로 데이터베이스에 저장 (회복기법, 연관회복관리자)
▣ 트랜잭션 상태
- 활동 : 실행 중
- 부분완료 : 커밋 직전
- 실패 : 실행 중단
- 철회 : 롤백 수행
- 완료 : 커밋 수행
▣ 트랜잭션의 3가지 연산
1) 철회된 트랜잭션의 연산
- 트랜잭션 재실행(Restart) : HW, SW 오류
- 트랜잭션 폐기(Kill) : 트랜잭션 내부적 논리 오류
2) 트랜잭션의 정상종료연산
- Commit 연산
- 프로그램 정상 종료
3) 트랜잭션의 비정상 종료연산
- Commit 연산
- Rollback 연산

97

Transaction 의 Isolation Level 유형 및 병행제어 미처리 시 문제점

▣ Transaction의 Isolation Level 유형
- Read Uncommitted : Shared Lock 이 걸리지 않는 Level
- Read Committed : 완료한 데이터만 읽음
- Repeatable Read : 한번 읽은 집합을 다시 읽었을 때 값이 유지됨을 보장함. 하지만, 범위에 새로운 값이 발생하는 것은 허용
- Serialisable : Insert 작업 미허용
▣ 미처리 시 문제점
- Read Uncommitted : Dirty, Non-Repeatable, Phantom
- Read Committed : Non-Repeatable, Phantom
- Repeatable Read : Phantom
- Serialisable : 모두 방어

98

2PC (Two Phase Commit)

▣ 정의
- 분산 데이터베이스 환경에서 원자성을 보장하기 위해 분산 트랜잭션에 포함되어 있는 모든 노드가 Commit하거나 Rollback하는 매커니즘
▣ 구성요소
- 서버 : 모든 노드
- 조정자 : 참여자 목록, 글로벌 커밋
- 지역노드 : 로컬 트랜잭션 서버
- Commit Point Site : 분산 트랜잭션 참여 노드 중 처음으로 커밋/롤백을 수행하는 노드
- Client
▣ 처리 흐름
1) Commit 요청
2) Commit Point Site 결정
3) Prepare 메시지 전송
4) Prepare 메시지 응답
5) Commit/RollBack 명령
▣ 처리 절차
1) Prepare : 준비 단계
2) Commit : 커밋, 롤백

99

2PL (2-Phase Locking)

▣ 개념
- 모든 트랜잭션들이 lock과 unlock연산을 확장단계와 수축단계로 구분하여 수행 하는 압법
▣ 확장단계
- Lock 만 수행 Unlock은 미수행
▣ 수축단계
- unlock 만 수행
▣ 문제점
- Deadlock 완전 제거 불가
- Cascading Rollback (연쇄복귀)
▣ 문제점 회피 방안
1) Strict P2P : Exclusive lock
2) Rigorous 2PLP : 모든 lock
3) Static 2PL : 모든 항목에 lock
, 현실성 없음

100

타임스탬프기법을 이용한 DeadLock 회피기법, Wait-die와 Wound-wait 기법

▣ Wait-die 기법의 정의
- 나중에 시작된 프로세스가 먼저 시작된 프로세스가 점유한 자원 요청 시 복귀(rollback) 되거나 종료(die)
▣ Wound-Wait
- 먼저 시작된 프로세스가 나중에 시작된 프로세스의 자원을 선점(Preempt) 기능 (나중에 시작된 프로세스를 Killing 또는 Wounding)
▣ Wait-die와 Wound-wait 기법 적용을 통한 Deadlock 회피 방법
1) Wait-die Algorithm
- 상황 1 : 고참 프로세스(Older Process)가 신참 프로세스(Younger Process)가 점유한 자원을 요청 시, 고참 프로세스 기다림
- 상황 2 : 신참 프로세스(Younger Process)가 고참 프로세스가 점유한 자원을 요청 시, 신참 프로세스 철화(die)
= 고참 wait, 신참 die
2) Wound-Wait Algorithm
- 상황 1 : 고참 프로세스(Older Process)가 신참 프로세스(Younger Process)가 점유한 자원을 요청 시, 신참 프로세스를 wound(때리기) 하여 자원 선점(Preempted)
- 상황 2 : 신참 프로세스(Younger Process)가 고참 프로세스(Older Process)가 점유한 자원을 요청 시, 신참 프로세스는 기다림(Wait)
= 고참 wound, 신참 wait

101

DB Join 방식

▣ 정의
- 하나의 SQL 명령문에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능
▣ 분류
1) Nested Loop Join
- 선행 테이블의 처리범위를 하나씩 액세스하면서 추출된 값으로 테이블 조인
- 랜덤 액세스 이므로 집합 많으면 수행 속도 저하
2) Sort Merge Join
- 양쪽 테이블 처리 범위를 각자 액세스하여 정렬한 결과를 차례로 스캔하면서 연결고리의 조건으로 merge 해 가는 방식
- 정렬을 위한 영역에 따라 효율에 큰 차이 발생
3) Hash Join
- 해시 값을 이용하여 테이블을 조인하는 방식
- 대용량 처리시 메모리의 지나친 사용으로 오버헤드 발생

102

데이터 베이스 회복 기법

▣ 정의
- 데이터베이스 운영 도중 예기치 못한 장애가 발생할 경우 데이터베이스를 장애 발생 이전의 일관성과 무결성을 가진 상태로 복원
▣ 장애의 유형
- 트랜잭션 장애 : 논리, 시스템
- 시스템 장애 : 전원, HW, SW
- 디스크 장애 : 스토리지 붕괴
- 사용자 장애 : 이해부족, 실수
▣ 회복을 위한 주요 요소
1) 회복의 기본 원칙(중복)
- 데이터의 중복
- Archive 또는 Dump : 복사
- Log 또는 Journal : 로그
2) 회복을 위한 조치
- REDO : 재실행
- UNDO : 취소
3) 시스템
- 회복관리기능
▣ 회복 기법의 종류
1) 로그기반 기법
- 즉시 갱신 기법
- 지연 갱신 기법
- 로그 전체 조사 (시간지연)
- Redo, Undo 사용
- 느림
2) Check Point 기법
- 로그파일과 검사점 이용
- 상대적으로 회복 빠름
- Redo, Undo 사용
- 로그보다 빠름
3) 그림자 페이징 기법
- 그림자 페이지 테이블 이용
- Undo 간단, Redo 불필요
- 로그 기반이나, 검사점과 함께 사용
- 그림자 테이블 교체
- 복구 속도 빠름

103

동시성 제어 (병행제어)

▣ 정의
- 다중 사용자 환경을 지원하는 데이터 베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행 될 수 있도록 지원하는 기능
▣ 목적
- 트랜잭션의 직렬성 보장
- 데이터의 무결성 및 일관성 보장
▣ 동시성 제어를 하지 않은 경우 발생하는 문제점
- 갱신 손실 : 동일 데이터 동시 갱신 (갱신 값 덮어쓰기)
- 현황파악오류 : 중간 수행결과를 다른 트랜잭션이 참조
- 모순성 : DB가 일관성 없는 상태
- 연쇄복귀 : 특정 트랜잭션이 처리 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능
▣ 주요 동시성 제어 기법
- 기본 Locking 기법
- 2PL (2Phase Locking) 기법
- 타임 스탬프
- 낙관적 기법
- 다중버전 동시성 제어 기법

104

기본 Locking 기법

▣ 정의
- 트랜잭션이 사용하는 자원에 대하여 상호배제(Mutual Exclusive)기능을 제공하는 기법
- 상호배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금(Lock)을 설정한 트랜잭션이 해제(UnLock) 할 때까지 데이터를 독점적으로 사용할 수 있는 기법
▣ 연산의 종류
1) 공유 Lock (Shared Lock)
- 공유 잠금한 트랜잭션이 데이터 항목에 대하여 읽기(read)만 가능
- 다른 트랜잭션도 읽기(read)만 실행 할 수 있는 형태
2) 전용 Lock (Exclusive Lock)
- 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)이 모두 가능
- 다른 트랜잭션은 읽기(read)와 기록(write) 모두 할 수 없음
▣ Locking 의 단위
- 데이터 베이스
- 테이블
- 페이지
- 레코드 (튜플)
- 필드 (속성)
=> Locking 단위가 클수록 : 병행성 수준 떨어지고, 병행제어기법 간단해짐
=> Locking 단위가 작을수록 : 병행성 수준 높아지고, 관리 복잡해짐

105

2PL (2 Phase Locking)

▣ 개념
- Lock하는 시간이 있고, Unlock하는 시간이 있음
- 모든 트랜잭션들이 Lock과 Unlock연산을 확장단계와 수축단계로 구분하여 수행함
▣ 단계
- 확장단계 : lock 만 수행, unlock은 수행 불가
- 수축단계 : unlock만 수행, lock은 수행 불가
▣ 종류
1) Strict 2PL
- 트랜잭션이 Commits/Aborts 할 때까지 모든 배타 락들을 유지
- 연쇄복귀 방지
2) Rigorous 2PL
- 트랜잭션이 Commits/Aborts 할 때까지 모든 락(공유 락 및 배타 락)들을 유지
- 트랜잭션들이 Commit한 순서대로 직렬 가능
3) Static 2PL
- 트랜잭션이 접근하려는 모든 항목들에 Lock을 획득
- Dead lock 발생 안함
- 현실성 없음

106

타임 스탬프

▣ 정의
- 트랜잭션을 식별하기 위해서 DBMS가 부여하는 유일한 식별자인 타임 스탬프를 지정하여 트랜잭션 간의 순서를 미리 선택하는 기법
▣ 특징
- 트랜잭션이 기다리는 경우가 없으므로 데드락을 방지
- 복구 발생 확률이 높으면, 연쇄복구를 초래할 수 있음
▣ 종류
1) 시스템 시계 사용법
2) 논리적인 계수기 사용법
▣ 타임 스탬프 순서 알고리즘
1) 각각의 데이터 Q는 다음과 같은 2가지 타임스탬프를 가짐
- W-Timestamp(Q) : Write(Q)를 성공적으로 수행시킨 어떤 트랜잭션의 최대 타임 스태프
- R-Timestamp(Q) : Read(Q)를 성공적으로 수행시킨 어떤 트랜잭션의 최대 타임 스태프
2) 트랜잭션 Ti가 Read(Q)를 실행할 때(여기서 TS(Ti)는 Ti의 타임스템프를 의미)
- TS(Ti) ≤ W-Timestamp(Q)이면, Ti는 복구
- TS(Ti) ≥ W-Timestamp(Q)이면, Ti의 Read(Q)는 실행
3) 트랜잭션 Ti가 Write(Q)를 실행할 때
- TS(Ti)

107

낙관적 기법

▣ 개념
- 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사하는 동시성 제어 기법
▣ 특징
- 연산은 버퍼에서 이루어지며, 검증한 후 결과를 디스크에 반영하거나 복구
- 트랜잭션 수행 마지막에 갱신 사항들의 직렬 가능성 위반 여부를 검사하여 검증될 경우 일시에 데이터베이스로 반영
- 읽기 연산이 많은 경우에 적합하며, 데드락과 연쇄 복구가 발생하지 않음
▣ 트랜잭션 생명주기
1) 판독 단계(Read Phase)
- 지역 변수만을 이용해 트래잭션 실행
2) 검증 단계(Validation Phase)
- 무결성 유지 여부 검사 후 복구 여부 판정
3) 기록 단계(Write Phase)
- 실행 결과를 디스크에 반영
▣ 트랜잭션의 3가지 타임스탬프
- Start(Ti) : 트랜잭션 Ti가 판독 단계에 들어가면서 실행을 시작한 시간
- Validation(Ti) : 트랜잭션 Ti가 검증 단계에 들어가면서 검증을 시작한 시간 TS(Ti)는 Validation(Ti) 값으로 주어짐
- Finish(Ti) : 트랜잭션 Ti가 최종 기록 단계를 완료한 시간
▣ 낙관적 검증 기법의 검증방법
- TSTi) < TS(Tj) 일 때 다음 조건 중 하나를 만족 해야 함
- Finish(Ti) < Start(Tj): 직렬성 순서 유지
- Start(Ti) < Finish(Tj): 직렬성 순서 유지
- Start(Tj) < Finish(Ti) < Validation (Tj)

108

다중 버전 동시성 제어 기법 (MVCC : Multi-Version Concurrency Control)

▣ 개념
- 동시성 제어를 위해 데이터 항목이 변경될 때 그 데이터 항목의 이전 값을 보존하는 기법
- 한 데이터 항목에 대해 여러 개의 버전을 유지하는 기법
▣ 특징
- 데이터 항목Q에 대해 여러 버전이 시스템에 의해 유지
- 각 데이터 항목의 버전들을 유지하기 위해 많은 저장 공간이 필요
▣ 각각의 버전 QK에 대해 3개의 필드 값 보유
- 내용(Content) : 버전 QK의 값
- W-Timestamp(QK) : 버전 QK를 생성한 트랜잭션의 타임 스탬프
- R-Timestamp(QK) : 버전 QK를 성공적으로 판독한 트랜잭션 중에서 제일 큰 타임스탬프
▣ 다중 버전 타임스탬프 기법
1) Ti가 Read(Q) 실행
- 반환되는 값은 버전 QK의 내용(QK는 기록 타임스탬프가 TS(Ti) 보다 작거나 같으면서 가장 큰 값을 갖는 Q의 버전을 의미)
2) Ti가 Write(Q) 실행 :
- 만약에 TS(Ti)

109

옵티마이저

▣ 정의
- 사용자의 다양한 요구에 따라 그때마다 SQL문의 문법적 오류를 확인하고 가장 빠른 데이터 엑세스 경로를 작성 및 채택하여 최적의 경로(처리절차)를 찾아주는 역할을 하는 DBMS의 핵심 엔진
▣ 구성
1) Parse
2) Optimizer
- Query Rewrite
- Query Optimization (RBO, CBO)
3) QEP Generation
4) Query Execution
5) Result
▣ 역할
- Query Rewrite (질의 변환기) : 서브질의와 뷰의 병합, 효과적인 플랜 가능성 확인
- Query Optimization (비용산정기) : 질의에 대한 액세스 경로 결정
- QEP Generation (실행계획생성기) : 질의 실행계획 (QEP : Query Execution Plan) 생성
▣ 모드
1) RBO(Rule Base Optimizer)
2) CBO(Cost Base Optimizer)

110

DB튜닝

▣ 정의
- 한정된 자원으로 최적의 성능(시간/응답속도)를 얻을 수 있는 작업
▣ 주요항목
1) 설계관점
- 데이터 모델링, 인덱스 설계
2) DBMS관점
- CPU, 메모리, I/O
3) SQL관점
- join, indexing, Plan
4) HW관점
- CPU, Memory, Network, Disk
▣ 목표
- 처리능력 향상 : 전체 시스템
- 처리시간 단축 : 병행처리, 해시조인, 파티션
- 응답시간 단축 : 인덱스, 부분 범위 처리
- 로드시간 단축 : 작업 분산, 파티셔닝
▣ 절차
1) 분석
- 자료수집, 목표설정
- 인터뷰, 설계/시스템 구성 검토, 자원사용 현황분석, SQL Trace
2) 이행
- 최적화 방안 수립 및 적용
- 설계내용 튜닝
- SQL 튜닝
- OS, HW 튜닝
3) 평가
- 결과평가, 최종안 적용
- 튜닝결과 평가, 산출물 작성
▣ 튜닝기법
1) 설계 측면 튜닝
- 테이블의 분할/통합 : 파티셔닝
- 식별자 지정 : 본질/인조 식별자
- 인덱스 전략 : 15% 분포 유도
- 데이터 타입 : 조인순서, 방식
- 반정규화 : 테이블, 컬럼, 관계
2) HW 관점
- CPU : 증설 또는 과다 점유 해결
- 메모리 : 세션 메모리 확보
- I/O : RAID
- 네트워크 : Ping, tracert
- 작업수행 방식 : 병렬처리
- OS Param 조정 : 성능 옵션
3) DBMS 관점
- I/O 최소화 : SLQ Tunning, Index Tunning, Partitioning
- Buffer Pool 튜닝 : 자주사용하는 Data
- Commit/Check Point : 주기조절
- Thread/Reuse : Hard Parsing 제거
- Configuration Param
- Java Heap Size
- Redo Log
- Rollback Segment
4) SQL 튜닝
- 옵티마이저 선택/변경 : RBO, CBO
- 힌트사용
- 부분범위처리
- 인덱스 활용
- 조인 방식/순서
- 다중처리
- 병렬처리
- Dynamic SQL 지양

111

DB용량산정

▣ 개념
- DB 정보시스템개발, 운영에 소요되는 HW규모산정을 적정하게 하기 위한 일련의 활동
▣ 목적
- 디스크효율향상
- I/O 부하분산
- 데이터 접근성 향상
- 이벤트 발생 감소
▣ 용량산정을 위한 데이터 수집
- 트랜잭선 분석
- 업무패턴 분석
- 현행 데이터 분석
- 데이터 모델 분석
- 물리설계 파악
▣ 절차
- 테이블 크기 계산
- 인덱스 크기 계산
- 테이블 스페이스 용량 산정
- 디스크 용량산정

112

MDR (MetaData Registry)

▣ 정의
- 동일한 정보의 중복과 구문적, 문자적 차이를 식별할 수 있게 함으로써 의미적으로 동일한 요소들 간의 통합을 가능하게 하는 메타데이터 저장 기술
▣ 모형 개념도
1) 개념 레벨
- 데이터 요소 개념
- 개념영역
2) 표현 레벨
- 데이터 요소
- 값영역
▣ 구성요소
- 프레임워크 : 데이터 요소 개념, 데이터 요소, 값 영역, 개념영역 간 관계 설정
- 분류 : 객체 클래스, 속성 표현, 값 영역, 데이터 요소 개념, 데이터 요소로 분류
- 메타모형과 기본속성 : 메타데이터 항목들의 기본속성
- 데이터 정의의 공식화 : 필수요건 및 권고요건을 기술 다룸
- 명명과 식별 : 유일한 식별자 부여, 등록기관 식별자/데이터 식별자/버전식별자
- 등록 : 정보의 종류, 조건과 절치, 이해관계자

113

Sharding

▣ 정의
- 물리적으로 다른 데이터베이스에 데이터를 수평분할 방식으로 분산저장하고 조회하는 방법
▣ 분할방법
1) Vertical Partitioning
- 테이블 별로 서버 분할
2) Range based Partitioning
- 하나의 feature나 table이 점점 거대해지는 경우 서버를 분리
3) Key or Hash Based Portioning
- 엔티티를 해쉬 함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식

114

Query Off Loading

▣ 정의
- 읽기 관련 트랜잭션을 분산처리 하여 대규모 처리를 가능하게 하는 기술
▣ 특징
- Read Transaction이 많은 경우 하나의 Master DB에 Create /Update/Delete를 일으키고, 여러 개의 Slave DB에 데이터를 복사해 여려 개의 슬레이브 데이터베이스에서 읽기 관련 트랜잭션을 분산 처리
- Master DB에는 쓰기(Update)만을 허용하고, Master DB의 내용을 중간의 Staging DB라는 곳으로 복사
▣ 요소기술
- CDC(Change Data Capture) : MasterDB -> StagingDB -> SlaveDB로 복제하는 기술
- Application : DB에 대한 쓰기 로직과 읽기 로직 분리해서 구현

115

데이터 품질 관리

▣ 개념
- 시스템 별로 산재되어 있는 데이터 정보 요소에 대한 원칙을 수립하여 전사 적용하는 활동
▣ 구성요소
1) 데이터 표준 관리 조직
- 데이터 표준원칙, 표준 준수 여부 관리
2) 데이터 표준
- 데이터 모델 및 모든 오브젝트
3) 표준화 절차
- 요구사항 수집, 표준정의
▣ 전사 데이터 표준화 관리 대상
- 업무적 용어
- 기술적 용어
- 표준 단어
- 표준 도메인
- 표준 코드
▣ 관리 체계
1) 표준관리 (표준화 원칙 정의, 요구사항 수집, 데이터 표준 정의)
- DRM : 데이터 분류체계/모델
- 표준화 관리 : 식별/분류
- MDR : 메타데이터 표준 데이터 스키마
2) 품질관리 (데이터 표준 확정, 이행, 모니터링)
- DQM
- MDM
▣ 지속적인 전사 데이터 표준화 관리를 위한 조직의 R&R
- 업무 담당자
- 데이터 베이스 관리자
- 데이터 관리자
- 전사 데이터 관리자

116

DQC (Database Quality Certification)

▣ 정의
- 공공민간에서 개발하여 활용 중인 정보시스템의 데이터 품질을 확보하기 위해 데이터 자체 품질과 데이터 관리체계의 품질, 그리고 데이터베이스 보안 체계를 심사 인증제도
▣ 필요성
- 데이터 품질의 중요성과 문제점에 대한 인식 확산
- DB의 품질확보를 위한 관리체계 수립 미흡
▣ 인증항목
1) 데이터 인증 (DQC-V)
- 도메인, 업무규칙
2) 데이터 관리 인증 (DQM-M)
- 정확성, 일관성, 유용성, 접근성, 적시성, 보안성
3) 데이터 보안 인증 (DQC-S)
- 접근제어, 암호화, 작업결재, 취약점 분석

117

EDW (Enterprise Data Warehouse)

▣ 정의
- 사용자의 의사 결정에 도움을 주기 위하여, 다양한 운영 시스템에서 추출, 변환, 통합되고 요약된 데이터베이스
▣ 목적
- 전사적 정보통합
- 전사적 관점 정보 직접산출
- 지속적 RTE기반 대응
▣ 구성
1) Source : 기간계(계약, 상품, 고객), Web Log, 캠페인, 외부데이터
2) ETL/ETT
3) ODS(Operational Data Store)
4) ETL/ETT
5) EDW
6) ETL/ETT
7) 응용시스템(CRM, SEM), DataMart(OLAP, QUERY)
▣ 모델링
- Star 스키마 : 하나의 테이블에 모든 분석항목 존재
- Snowflake 스키마 : 정규화 작업을 마친 상태의 모델

118

Data Mining

▣ 정의
- 대용량 데이터 베이스에서 데이터의 관계, 특성, 패턴, 규칙을 찾아 모형화하여 유용한 지식으로 추론/변환하는 일련의 과정
▣ 수행과정
1) 문제정의
2) 데이터 선정 및 준비
3) 데이터 마이닝 과정
- Sampling : 추출
- Exploration : 탐색 (알고리즘 적용)
- Modification & Modeling : 모형 성능 향상, 모델 결정
- Assessment : 가장 좋은 모델 선택
4) 비즈니스 레포트
5) 의사결정
6) 피드백
▣ 기법
1) 예측 기반 기법
- 의사결정 트리
- 신경망
- 가설검정
2) 탐색 기반 기법
- 연관성 : 지지도, 신뢰도, 향상도
- 연속성 : 시간의 흐름
- 군집화 : k-means
▣ 활용분야
- 금융 : 대출신용평가, 금융사기 패턴 분석
- 통신 : 고객 이탈 방지, 사용자 부정 패턴
- 의료 : 질병 예측, DNA 칩 자료 분석
- 제조 : 제품의 수요예측, 제품 불량률 개선, 품질 개선
- 법률 : 부정행위 적발
- 기업 : 마케팅, 위험관리, 고객불만관리, 망관리, 주식분석, 투자종목 선택

119

웹 마이닝

▣ 정의
- 웹 환경에서 얻어지는 고객의 정보, 데이터로 부터 특정행위, 패턴 등의 유용한 정보를 이용하여 의사 결정에 활용하기 위한 마이닝 기법
▣ 특징
- 실시간성, 개인화, 타겟마케팅, 비정형 데이터 분석
▣ 유형
1) 웹 구조 마이닝
- 웹사이트 구조 요약 정보
- Web Document
- Hyperlink
- Requtation based filter
2) 웹 내용 마이닝
- 이용 가능 정보 검색
- HTML, Text, Audio, Image, Video
- Content-based filter
- Reputation based filter
- NLP (Natural Language Processing)
- Search Engine
3) 웹 사용 마이닝
- 웹 로그 분석, 접속경향 패턴 이해
- User profiles
- Access Pattern
- Collaborative filtering
- Event-based filter

120

Apriori 기법

▣ 개념
- 시스템 기술 등을 종합적으로 검토하고 선험성을 높이는 기법
▣ 알고리즘
- 1단계 : 최소 지지도 설정 값에 따라 빈도수 높은 항목의 집합 추출
- 2단계 : 이들 집합으로부터 신뢰도 설정 값을 모두 개산
▣ 정량화 기준
1) 지지도(Support)
- 전체 트랜젝션에서 A, B가 함께 구매되는 확률
- (A, B 동시거래건수) / 전체 거래건수
2) 신뢰도(Confidence)
- A를 거래할 때 B가 포함되는 조건부 확률, 높은 동시발생, 연관성 높음
- (A, B 동시거래건수) / A를 포함한 거래건수
3) 향상도(Lift)
- 신뢰도를 독립성 가정하의 신뢰도인 B의 거래 비율로 나눈 결과값
- ((A, B 동시거래건수) / (A 구매건수 * B구매건수)) * 전체 거래건수
▣ 선험적 규칙 처리 단계
1) 최소 지지도 연산
2) 결합단계
3) 가지치기 단계
4) 지지도 연산
5) 결합 단계
6) 가지치기 단계

121

해싱

▣ 정의
- 하나의 문자열을 보다 빨리 찾을 수 있도록 해시함수를 이용하여 해시테이블내 주소에 직접 접근할 수 있는 짧은 길이의 값이나 키로 변환하는 과정
▣ 목적
- 해시 테이블
- 암호화
- 데이터 축약
▣ 동작과정
1) 레코드 키 값
2) 해싱함수 처리
3) 버켓주소 지정
▣ 구성요소
- 해싱함수 : 키값과 물리주소 매핑
- 해시키 : 레코드의 키값
- 버킷 : 여러개의 슬롯으로 구성
- 슬롯 : 한 개의 레코드 저장
- 해시테이블 : 해시 주소 저장
- Synonym : 같은 버킷 주소를 갖는 레코드들의 집합
- Collsion : 서로 다른 레코드들이 같은 주소로 반환되는 경우
▣ 해시함수의 기법
- 나눗셈법 : 나머지 연산자
- 중간제곱법 : 제곱결과에서 중간의 몇 비트값
- 폴딩법 : 탐색키 전체 (이동폴딩 : 수를 더함, 경계폴딩 : 이웃 부분 뒤집어서 더함)
- 기수 변환법 : 진법 이용
- 자릿수 분석법 : 레코드 자리 분석
- 무작위 방법 : 난수
▣ 해싱의 종류
1) 정적해싱 (Static Hashing)
- 버킷 주소의 집합을 고정 처리
- 연결리스트 사용
2) 동적해싱 (Dynamic Hashing)
- 데이터의 증감에 적용하기 위해 동적으로 해시함수가 교정
▣ 해시 충돌 해결방안
1) 개방주소법(Open Addressing)
- 빈자리 탐색하여 해결
- 선형탐사, 제곱탐사, 이중해싱법, 무작위검색법
2) 체이닝(Chaining)
- 연결리스트 이용하여 해결
- 선형탐사, 제곱탐사
3) Coalesced hashing
- Chaining 과 open-addressing 혼합
- Chain이 Link 가짐
4) Rehashing
- 해시 테이블의 특정 임계점(80% 사용) 돌파하면 더 큰 테이블을 새로 만들어 데이터를 모두 옮기는 방법
▣ Open Addressing 해시 충돌 해결 방안 상세 설명
- 선형조사법 : 순차적 탐색
- 이차조사법 : 2차 함수 이용
- 이중해싱법 : 1차 충돌 발생시 2차 해시 함수 이용
- 무작위검색 : 난수사용

122

Tree

▣ B-Tree
- 루트노드는 최소한 2개의 자식노드와 적어도 한 개의 값을 가지며, 루트노드와 리프노드를 제외하고는 최소한 1/2이상이 채워져 있는 효율적인 자료구조
▣ B+Tree
- B트리의 순차탐색의 문제를 개선하기 위해 인덱스 Set과 순차 Set으로 트리를 구별하여, 데이터를 순차적으로 접근하기 용이하게 만들 자료구조
▣ R-Tree
- N차원의 공간 데이터를 효율적으로 저장하고 지리정보와 관련된 질의를 빠르게 수행할 수 있는 자료구조
▣ R+Tree
- R-Tree와 K Dimensional Tree의 중간형태로, 기본적인 자료구조와 연산은 R-Tree와 거의 동일하며, R+Tree는 내부 노드들의 중첩을 최소화 하는 방법을 제시하여 삽입이나 삭제시 연산성능이 더 우수함
▣ T Tree
- AVL Tree 의 공간낭비와 잦은 회전연산을 개선하기 위하여 B-Tree의 장점을 결합하여 MMDBMS에 적합하도록 고안된 인덱스