DataBase Flashcards
데이터 과학자
▣ 정의 - 대규모 데이터 속에서 최적의 분석으로 숨겨진 패턴을 찾는 엔지니어 ▣ 역할 - 업무분석 : 모델링, 아키텍팅 - 인프라구축 : 벤치마킹 - 데이터수집 : 도구활용 - 데이터처리 : 분산병렬처리 - Analytics : 수학, 통계학 ▣ 역량 1) 관리수행 - 비즈니스 - 데이터 관리 - 데이터 분석 - 변화 관리 2) 기술역량 - 통계분석 도구 이해 - 프로그래밍 언어 - RDBMS기술 - 분산컴퓨팅 - 수리적 지식
Opinion Mining
▣ 정의 - 인터넷의 모든 웹 문서, 댓글 등에서 소비자들의 의견을 수집 및 분석해 제품이나 서비스 등에 대한 평판을 추출하는 Mining 기술 ▣ 필요성 - 소셜 미디어 영향력 확대 - 소비자들의 평가, 불만, 니즈등의 의견을 파악 - 기법 및 브랜드의 잠재위기 조기에 감지 ▣ 구성요소 1) Crawler - 데이터 수집 2) NLP & Test Mining - 전처리 - 도메인 의존적 단더 - 연어정보 - 단서 단어 3) 관계 분석기 - 개체 명 인식 - 관계 추출 4) 검색 - 검색 및 서비스 5) 대용량 지원 - 하둡에코 시스템 ▣ 프로세스 1) 자연어 처리 - 형태소 분석 : 품사 결정 - 구문분석 : 문장 구성성분 결정 2) 문장평가 - 의견단어 추출 : 팩트/의견 구분 - 긍정, 부정 평가 - 스코어링 ▣ 활용방안 - 트위터를 통한 오피니언 발견 - SNS 기반 핫토픽 추출
데이터 시각화 (Data Visualization)
▣ 정의 - 보이지 않는 새로운 패턴 또는 관계를 발견하도록 도와주는 시각화 기술 ▣ 그래프 기술 - Trand Mindmap - Newmap - Hierarchical Clustering Explorer - CrazEgg - Info Graphics ▣ 시각화 지원 도구 - 태블로 : VizQLTM, 선언 언어 - 구글 오픈 차트 - Flickr API - IBM Many eyes - R
인포그래픽스(Infographics)
▣ 정의 - Information + Graphic의 합성어로 다량의 정보를 차트, 지도, 다이어그램, 로고, 일러스트레이션 등을 활용하여 쉽고, 빠르고, 정확하게 전달할 수 있게 하는 디자인 ▣ 특징 - 흥미 유발 : 호기심, 행동유도 - 정보 습득시간 절감 : 직관적 - 빠른 확산 : SNS공유 - 다양한 시각적 표현 : 흥미 ▣ 핵심요소 - 핵심 숫자 강조 - 관련 이미지 선택 - 정보에 대한 상세 설명 - 보충설명 ▣ 작성 가이드 - 그래픽과 데이터 균형 - 퍼블릭 데이터 활용 - 템플릿과 아이콘 배치 - 무료 툴 활용 - 저작권 설정 - 인포그래픽스 홍보 ▣ 작성시 고려사항 - 명확한 계획 - 정보의 융합 - 경제성 추구
빅데이터 거버넌스
▣ 정의 - 데이터 거버넌스의 일부로 빅데이터의 최적화, 프라이버시, 가치창출과 관련된 정책을 수립하여 빅데이터의 품질을 관리하기 위한 체계 ▣ 필요성 - 분석 대상의 품질 : 데이터정제 - 데이터의 수명관리 : 비용절감 - 전담 조직 필요 - 법/규제 대응 ▣ 데이터 거버넌스와 빅데이터 거버넌스의 관계 - 빅데이터 거버넌스는 데이터 거버넌스에 포함되는 개념 ▣ 빅데이터 거버넌스 프레임워크 1) 빅데이터 유형 - 웹과 소셜 미디어 - M2M 데이터 - 빅 트랜잭션 데이터 - 생체 정보 - 사람이 생성한 데이터 2) 정보 거버넌스 - 전담 조직 - 메타 데이터 - 프라이버시 - 데이터 품질 - 비즈니스 프로세스 통합 - 마스터 데이터 통합 - 정보 수명주기 관리 3) 산업분야 - 헬스케어 - 유틸리티 - 소매 - 통신 - 보험 - 고객서비스 - IT ▣ 필요사례 - 의료산업 : 환자 모니터링 - 시설관리 : 스마트 계량기 - 보험사 : 클레임 조사
빅데이터 큐레이션
▣ 정의 - 빅데이터 전략을 제시하고 최적의 빅데이터 구축에서 분석 및 결과 활용까지 전 과정을 지휘하는 활동 ▣ 포지션 - 빅데이터 운영자(DB설계 및 관리), 빅데이터 전략가(활용전략 및 조직구성), 데이터과학자(방법론 및 분석 실무) - 직능간 유기적 협업 조율 ▣ 역할 - 실시간으로 경영상 기회와 위기요인을 정확히 읽어내고 즉시 대응할 수 있는 체계를 구축 - 데이터 선별/발굴 - 실시간 변화 정보 - 노이즈 제거 - 현실 인사이트 ▣ 분야 - 미래 예측 : 인과관계, 패턴 - 숨은 니즈 발견 : 무의식 니즈 - 리스크 경감 : 불만제거 - 맞춤형 서비스 : 서비스 효용 - 실시간 대응 : 즉각대응
스마트 데이터
▣ 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) 유연성 확보 - 변화하는 비즈니스 조건
빅데이터 (비교)
(관특품활기분환사) ▣ 관점 - 데이터의 물리적 특성 측면 ▣ 특징 - 3V(Volume, Velocity, Variety) ▣ 데이터 품질평가 - 빅 노이즈 발생에 대한 후속 프로세스 미흡 ▣ 데이터 활용 - 다양한 데이터의 수집, 축적, 공유, 분석 ▣ 기반 기술 - Hadoop Eco System ▣ 분석 기술 - 평판분석, SNS분석 ▣ 컴퓨팅 환경 - 모바일, 클라우드 ▣ 사회 - 정보화 사회, 지식사회, 모바일 사회
스마트 데이터 (비교)
(관특품활기분환사) ▣ 관점 - 데이터의 품질 측면 ▣ 특징 - 3A(Accurate, Actionable, Agile) ▣ 데이터 품질평가 - 데이터 정확도에 관한 지속적 평가 ▣ 데이터 활용 - 데이터의 통합, 사용의 편의성, 시맨틱 기반의 서비스 지향 ▣ 기반 기술 - LOD, 시맨틱웹, 인공지능, IoT ▣ 분석 기술 - 상황인식 분석, 신경망 컴퓨팅, 인공지능, 자율학습 ▣ 컴퓨팅 환경 - 사물통신 환경 ▣ 사회 - 초연결 사회, 지능화 사회
Small Data, Dark Data, Fast Data, Smart Data
▣ Small Data : 전통적인
▣ Dark Data : 분석되지 않은
▣ Fast Data : 실시간 강조
▣ Smart Data : 품질 좋은
빅데이터 분석도구 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)
Big Data 분석 - 모델 평가 방법
▣ 개념 - 데이터마이닝을 통해 생성된 모델의 에러율 예측을 통해 모델의 타당성을 평가하는 검증 방법 ▣ 종류 1) Train-validation 2) 재 샘플링 기법 - Cross Validation - BootStrap ※ 데이터의 양이 충분치 않은 경우, 데이터 모델의 성능 측정의 통계적 신뢰도를 높이기 위해 재 샘플링 기법을 사용하는데, Cross-validation, Bootstrap 이 대표적 방법임
Train-validation
▣ 절차
1) Training data : 모델 학습
- 모형 적합화를 위한 데이터
2) Validation data : 모델선택
- 모형의 접합화 정도 평가 선택
3) Test data : 모델 평가
- 최종 선택모형 성과 평가
Cross Validation
▣ 개념 (부분집합 나머지 샘플링)
- Training Set을 k개의 부분 집합으로 등분
- k-1 개로 학습하고 나머지 한 개로 테스트. 이런 과정을 서로 다른 부분 집합으로 k번 수행하여 얻은 성능을 평균함
- 이를 k-fold Cross Validation
- k=N인 경우(N은 샘플 개수) 하나 남기기(Leave-one-out) 또는 잭나이프(Jackknife) 기법이라함
BootStrap
▣ 개념 (중복허용 임의 샘플링)
- 중복을 허용하는 기법으로, N개의 샘플을 가진 샘플 집합 X가 존재, 집합 X에서 N개의 샘플을 임의로 추출
- N개의 Training Sample 에서 Bootstrap sample 을 취하는데, 중복을 허용하여 B개를 샘플링함
- 이와 같은 Bootstrap sample을 t번 반복하고 측정하고, 그 결과를 평균한 값을 최종 성능으로 취함
- Bootstrap sample 로 모델을 학습하ㄱㄱ, 오류를 예측할 때 Training set을 이용하는 방법
Train-validataion (비교)
▣ 개념 - 훈련집합, 테스트집합, 검증집합을 통해서 모델의 정확도 검증 ▣ 활용기준 - 데이터가 충분히 많은 경우 ▣ 데이터 Set - Train Set, Test Set, Validation Set ▣ 정확도 - 에러율 예측의 정확도 다소 낮음 ▣ 특징 - 데이터 Set의 분리 비율이 결과에 영향을 미침
Cross-Validation (비교)
▣ 개념 - 데이터를 K개의 집합으로 나누어 검증한 결과의 평균치로 모델 검증 ▣ 활용기준 - 데이터가 충분하지 않은 경우 ▣ 데이터 Set - k개의 Set분류(K-fold) - k-1 : Train Set - 1 : Test Set ▣ 정확도 - Train-Validation 보다 높은 정확도 ▣ 특징 - 분류의 수에 따라 결과 영향 미침
Bootstrap (비교)
▣ 개념 - 전체 데이터에서 무작위 복원 추출로 훈련집합을 생성하여 검증하는 방법 ▣ 활용기준 - 데이터가 충분하지 않은 경우, 모집단 분포 가정이 어려운 경우 ▣ 데이터 Set - N개의 Bootstrap sample ▣ 정확도 - Train-validation 보다 높은 정확도 ▣ 특징 - 모집단의 분포의 가정없이 검증 가능
Column-Oriented Database (비교)
▣ 개념 - 대량의 비슷한 특성을 가진 데이터를 저장하기 위해 DW등에서 Column 순으로 저장하는 데이터베이스 - 같은 필드의 값을 모아서 저장 ▣ 적용DBMS - 연관된 데이터 위주 - Read 위주의 DBMS ▣ 압축률 - 동일 도메인의 컬럼 값이 연속 되므로 압축효율이 좋음 ▣ 활용구조 - 컬럼에 대한 범위 선택에 유리 ▣ 용도 - Read 중심의 대용량 DB (Data Warehouse, BI) ▣ 장점 - 적은수의 선택적 Column 조회시 I/O량이 적어 속도 빠름 ▣ 단점 - 많은 join이 사용된 query 수행시 성능 저하 - 하나의 레코드 변경시 여러 값 수정 ▣ 업무성격 - 배치 형태의 대량의 트랜잭션 처리 ▣ 조회 데이터 - 컬럼수가 적은 query ▣ 데이터 중복 - 중복 값이 많은 DB ▣ 제약조건 - 특정 제약 조건하의 상세 업무 데이터 추출 ▣ 트랜잭션 특성 - 트랜드 분석 위한 거래 데이터 요약 (DW, BI)
Row-Oriented Database (비교)
▣ 개념 - 레고크 단위의 Row순으로 데이터를 저장하는 데이터베이스 - 일반적으로 상용화 된 DBMS ▣ 적용DBMS - 레코드를 추가 및 삭제 위주의 DBMS ▣ 압축률 - 레코드 단위의 압축은 상대적으로 효율 저하 ▣ 활용구조 - 레코드 단위의(B+tree 등) 인덱스 구성하여 랜덤 엑세스에 유리 ▣ 용도 - 실시간 온라인 처리 DBMS ▣ 장점 - 많은 수의 column을 한번에 처리시 빠름 ▣ 단점 - 불필요한 컬럼 값 존재 ▣ 업무성격 - 실시간 업데이트 형태의 거래 ▣ 조회 데이터 - Full data 추출(Select * from) ▣ 데이터 중복 - 중복 값이 적은 DB ▣ 제약조건 - 제약 조건의 적은 데이터 처리 ▣ 트랜잭션 특성 - OLTP 성격의 데이터 처리
빅데이터 분석기법
▣ 정의 - 대량의 데이터로부터 숨겨진 패턴과 알려지지 않은 정보간의 관계를 찾아내기 위한 기술 ▣ 중요성 - 데이터 관계 숨은 가치 중요도 증가 - 데이터 가치 발견 지속적 탐색 필요 - 빠른 분석으로 시장경쟁 우위 선점 ▣ 분석기법의 특징 - 대용량 데이터 기반 - 기술적인 진화 - 다양한 분야에 활용 - 의사결정지원(RTE지향) - 모바일 산업으로 확대 ▣ 분석기법 종류 (연연분데특 의신텍프) - 연관성 탐사 : 지지도, 신뢰도, 향상도 - 연속성 규칙 : 시간의 흐름 연속 수행 - 분류 규칙 : 신용등급 높은/중간/낮음) - 데이터 군집화 : 집단화 과정에서 군집별 특성 파악) - 특성화 : 요약과정 통한 특성 규칙 발견 - 의사결정트리 : 과거 패턴 분류, 분류의 값 예측 - 신경망 : 뇌세포 모방, 반복학습 모형 생성 기법 - 텍스트 마이닝 : 비정형 텍스트의 패턴 또는 관계 추출 - 프로세스 마이닝 : 업무 처리 시스템의 이벤트 로그 분석 ▣ 분석 방법론 (SEMMA) 1) Sampling - 랜덤, 계통 샘플링, 중화 추출법 2) Exploration - 통계적 탐색, 이상치 검출 3) Modify - 변수 생성, 선택, 변형 - 데이터 품질 향상 단계 4) Modeling - 패턴발견 문제해결모델 - 알고리즘 적용 - 신경망, 의사결정트리, 회귀/군집/연관성 분석 5) Assessment - 모형 신뢰성, 유용성 평가 ▣ 활용사례 - 금융 : 은행, 카드, 증권, 보험 - 제조 : 불량율, 생산성, 품질관리 - 통신 : 연체자, 이탈율, 충성도 - 유통 : 마케팅 전략, 고객관리 - 소매 : 고객세분화, 교차판매 - 의학 : 질병예측, 환자특성 - 수사 : 범죄발생율, 과학수사 - 과학 : 생명공학 - IT : 네트워크망, 포렌식, 위험관리
딥러닝
▣ 정의 - 인공신경망(ANN)에 기반한 일련의 기계학습의 집합체로서 컴퓨터에게 사람의 사고 방식을 가르치는 알고리즘 ▣ 등장배경 - 인공신경망 모델의 단접 극복 : Overfitting 문제해결 - 하드웨어의 발전 : GPU - BigData ▣ 주요기술 - 패턴인식 : 도형,문자,음성 식별 - 자연어처리 : 인간언어 인식 - 자동제어 : 오차 자동 조정 - 로보틱스 인지공학 로봇 - 컴퓨터 비전 : 로봇의 눈 연구 - 가상현실 : 컴퓨터 가상환경 - 데이터 마이닝 - 시멘틱웹 : 추론 가능 웹 ▣ 동향 1) 구글 - 맨해튼 프로젝트 - 딥마인드 인수 2) IBM - 왓슨그룹 - 자연어 분석 및 질의응답 특화 3) MS - 아담 프로젝트 - 영상인식 인공지능 프로젝트 4) 페이스북 - 얼굴인식 프로그램 - 딥페이스 5) 바이두 - 딥러닝 연구소 - 구글 따라잡기
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회 반복 후 최종 분류자 결정 ※ 위 두가지 방법은 공통적으로 분류 정확도가 낮은 경우에만 효과를 볼 수 있음. 만약 이미 정확도가 높은 방법이라면, 효과가 크지 않음에 유의
Bagging (비교)
▣ 목표 - 전반적으로 분류를 잘 할 수 있도록 유도(분산감소) ▣ 최적 모델결정방법 - 독립수행 후 다수결로 결정 - 연속형 변수 : 다중 투표 - 범주형 변수 : 평균 ▣ 특장점 - 일반적으로 항상 성능을 향상 시킴 - 결측치가 존재 할 때 강함 ▣ 계산복잡도 - 높음 ▣ 적용방안 - 소량의 데이터 일수록 유리 - 목표변수, 입력변수의 크기가 작아 단순할 수록 유리 ▣ 주요알고리즘 - MetaCost Algorithm
Boosting (비교)
▣ 목표 - 분류하기 힘든 관측 값들에 대해서 정확하게 분류를 잘하도록 유도(예측력 강화) ▣ 최적 모델결정방법 - 순차 수행에 따른 가중치 재조정으로 결정 - 정분류 데이터 : 가중치 낮춤 - 오분류 데이터 : 가중치 높힘 ▣ 특장점 - 특정 케이스의 경우 상당히 높은 성능 보장 - 일반적으로 과적함 없음 ▣ 계산복잡도 - 다소 높음 ▣ 적용방안 - 대용량 데이터 일수록 유리 - 데이터와 데이터의 속성이 복잡할 수록 유리 ▣ 주요알고리즘 - AdaBoost(Adaptive Boost) Algorithm
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, 카산드라
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 : 분산파일시스템
Hadoop 2.0
▣ 정의
- 하둡 기반 Scheduling, 자원관리, 다양한 종류의 분산환경을 지원하는 차세대 하둡 플랫폼 기술
▣ 특징
- Yarn : HDFS Multiple Search
▣ 주요 구성요소
- Resource Manager : 리소스 할당, 중재, 관리
- Node Manager : Application Master, Container
맵리듀스
▣ 정의 - 맵(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 내 디렉토리에 저장
빅데이터 참조 아키텍처
▣ 정의 - 빅데이터 시장의 다양한 구성원들이 공통의 언어로 표현된 아키텍처를 공유하여 상호 운용성, 이식성, 재사용성 및 확장성을 위한 빅데이터 아키텍처 기본 패턴 ▣ 구성요소 1) 데이터 제공자 2) 데이터 중계자 3) 빅데이터 서비스 제공자 - 데이터 기능 - 데이터 보존 - 통합 기능 - 처리 기능 - 관리 기능 4) 빅데이터 소비자
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 클라이언트는 네임노드에서 블록에 대한 위치정보를 전달 받아서, 해당 데이터노드에서 파이프 라인 방식으로 직접 블록을 조회
카산드라
▣ 정의 - 대용량 자료의 저장과 처리를 목적으로 하는 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 값 해싱값으로 저장 노드 결정
몽고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단위(스토리지)로 증가되고 하나의 시스템처럼 운영 - 기존의 하드웨어 장비를 그대로 사용가능 - 장애 발생시 복제 서버를 통한 지속 서비스 가능
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 ({ })
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파일에 기록하는 방식
Snapshotting(RDB)방식
▣ 정의
- 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
▣ 특징
- SAVE방식 : 순간적으로 Redis의 모든 동작을 정지시키고, snapshot 디스크에 저장 (Blocking)
- BGSAVE방식 : 별도의 프로세스를 띄운 후 명령어 수행시의 메모리 snapshot을 디스크에 저장, redis는 정지 안함 (Non-blocking call)
▣ 장점
- 메모리의 snapshot을 그대로 뜬 것이기 때문에 서버 재시작 시 snapshot만 로드하면 되므로 재시작 시간이 빠름
▣ 단점
- snapshot을 추출하는 데 시간이 오래 걸림
- snapshot이 추출된 후 소실 (백업 시점의 데이터만 유지됨을 의미)
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을 다시 리플레이하기 때문에 재시작 속도가 느림
NoSQL
▣ 정의 - Not Only SQL의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술 ▣ 특징 - 데이터 간 관계 정의 안함 - 분산형 구조 - 고정되지 않은 테이블 스키마 ▣ 데이터 저장 구조 1) Key/Value Store 2) Ordered Key/Value Store 3) Document Key/Value Store
NoSQL Key/Value Store
▣ 정의 - 가장 기본적인 패턴 ▣ 특징 - Unique한 Key에 하나의 Value를 가지고 있는 형태 - Put(key, value), Value := get(key) 형태의 API로 접근 ▣ 상용제품 - Oracle Coherence, Redis ▣ 구조 - Key-Value
NoSQL Ordered Key/Value Store
▣ 정의 - 기본적인 Key/Value Stor에서 Key 순서로 Sorting되어 저장 ▣ 특징 - Key/Value Store와 데이터 저장 방식은 동일하나, 내부적으로 Key순서로 Sorting되어 저장 ▣ 상용제품 - Apache HBase, Cassandra ▣ 구조 - key {Column:Value}
NoSQL Document Key/Value Store
▣ 정의 - Key/Value Store의 확장, 저장되는 Value의 데이터 타입이 Document 타입 사용 ▣ 특징 - XML, JSON, YAML 같은 구조화된 데이터 타입 사용 ▣ 상용제품 - MongoDB, CouchDB, Riak ▣ 구조 - key : {JSON, XML Document}
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) - 배치 그래프 프로세싱
비정규화 (Denormalization)
▣ 개념
- 비정규화는 NoSQL 데이터 모델링의 필수 불가결한 원칙
- 쿼리의 단순화, 최적화를 위해 동일한 데이터를 여러 도큐먼트 또는 테이블에 존재하도록 함
- KVS, Document, BigTable
집계 (Aggregates)
▣ 개념
- 엔티티의 중첩을 통해 one-to-many 관계를 최소화하여 조인을 효과적으로 줄임
- 정규화 테이블을 Aggregation 하여 군집화 함 (중첩 엔티티)
Application Side Join
▣ 개념
- NoSQL은 조인을 허용하는 경우가 거의 없음
- 비정규화 또는 군집화를 통해 조인 최소화
- 불가피할 경우 애플리케이션을 이용하여 가능하도록 모델링 필요
원자집계 (Atomic Aggregage)
▣ 개념
- NoSQL에서 트랜잭션을 지원 할 필요가 있을 경우 적용 가능한 기법
- 하나의 레코드에 대해 변경이 발생할 경우 그 레코드의 원래 버전은 그대로 유지한 채 새로운 버전을 만들어 그 새로운 버전에 대해 변경을 수행함
- KVS, Document, BigTable 계열
열거 가능한 키 (Enumerable Keys)
▣ 개념
- 키를 순차적으로 자동 생성되는 ID를 사용하여 저장될 수 있도록 하는 모델링 기법
- ex. 특정 날짜나 현재날짜 앞뒤로 시작하는 메시지들의 검색
- KVS 계열에 적용
인덱스 테이블 (Index Tables)
▣ 개념
- 내부적으로 인덱싱을 지원하지 않는 저장소에 인덱싱 기술을 활용할 수 있도록 해주는 기법
- 액세스 패턴에 따라 키의 특별한 테이블을 만들고 유지
- BitTable 계열에 적용
복합 키 인덱스 (Composite Key Index)
▣ 개념
- 정렬된 키를 사용할 때 유용한 기법
- 보조 정렬을 결합한 복합키로 위의 차원 축소 기법과 근본적으로 유사한 다차원 인덱스를 만들 수 있음
복합 키를 활용한 집계 (Aggregation with Composite Keys)
▣ 개념
- 복합 키는 인덱싱뿐만 아니라 다른 유형의 그룹화에도 사용됨
- 모든 레코드에 각 사용자 정보가 함께 저장되기 때문에 해시 테이블이나 다른 방법들을 사용해 사이트의 중복정보를 삭제한 뒤 메모리에 적재
- Ordered KVS, BigTable 계열에 적용
트리 집계 (Tree Aggregation)
▣ 개념
- 트리가 한 번에 접근하는 경우에 효과적인 기법
- ex. 블로그 댓글 트리를 가져와 게시물과 함께 표시하는 경우
- KVS, Document 계열에 적용
인접리스트 (Adjacency List)
▣ 개념
- 그래프 모델링의 직선적인 방법
- 각 노드는 선조 또는 자손을 가리키는 배열을 포함하는 별도의 레코드로 모델링 됨
- 노드를 부모 또는 자식의 식별자로 검색가능
- 노드의 모든 하위 트리를 깊이우선탐색 또는 너비우선탐색하는 경우 비효율저임
- KVS, Document 계열에 적용
중첩된 세트 (Nested Sets)
▣ 개념
- 트리 모양의 구조를 모델링 하기 위한 표준 기법
- RDBMA에서 널리 활용되며, KVS, Document 계열에 완벽하게 적용가능
- 메모리 사용량이 적고 탐색 없이 주어진 노드의 모든 리프에 접근가능
- 변화없는 데이터 구조에 적합
- 리프 추가시 Overhead 발생
- KVS, Document 계열에 적용
배치 그래프 프로세싱
▣ 개념
- MapReduce와 Message Passing 패턴을 이용한 그래프 유형 계열 NoSQL의 대용량 처리를 지원하는 분산 프로세싱을 위한 기법
- 분산네트워크를 노드집합으로 저장하고 각 노드는 인접노드의 ID목록을 포함
- MapReduce 작업이 반복적으로 수행되며 각 노드는 이웃 노드에 메시지를 전달하고 상태를 갱신하며 큰 규모의 그래프 프로세싱 처리가 가능하도록 함
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의 변환/관리에 필요한 다양한 연산 제공
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
빅데이터 기술 구성요소
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 : 특정 정보를 기준으로 데이터 흐름 표현
빅데이터 수집 기술
▣ 개념 - 대용량의 고속 이벤트 데이터(로그)를 수집 하는 기술 ▣ 필요조건 - 확장성 : 무한대로 확장되는 수집대상 서버의 대응 - 안정성 : 수집되는 데이터가 유실되지 않고 안정적 저장 - 유연성 : 다양한 포맷의 데이터, 다양한 프로토타입 ▣ 종류 1) Apache Flume 2) Facebook Scribe 3) Apache Chukwa
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로 전달
Facebook Scribe
▣ 개념 - Facebook에서 제작, 사용하던 log aggregator system ▣ 구성 - Frontend Servers : 여러개의 Scribe로 구성 - Aggregator nodes : Frontend Servers의 Scribe 정보 집계하는 Scribe - HDFS : 집계정보 저장 ▣ 장점 - Facebook에서 실제로 사용하여 성능과 안전성에서 신뢰 ▣ 단점 - 더이상 Facebook에서 사용하지 않음. 거의 발전이 없는 상태
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) : 포털 형식의 인터페이스로 데이터 표시
빅데이터 수집 절차와 기술
▣ 수집절차 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
데이터베이스의 키
▣ 키의 정의 - 튜플을 유일하게 식별할 수 있는 Attribute 집합을 그 릴레이션의 키라 함 - 여러 개의 집합체를 담고 있는 하나의 엔티티 타입에서 각각의 엔티티를 구분할 수 있는 결정자 ▣ 종류 - 슈퍼키 : 유일성만 만족 - 후보키 : 유일성, 최소성 만족 - 기본키 : 후보키 중 선정 - 대체키 : 후보키 중 기본키를 제외한 나머지 후보키 - 외래키 : 릴레이션 R2의 한 속성이나 속성 조합이 릴레이션 R1의 기본 키인 경우 ▣ Key 결정 및 도출 과정 1) 결정자 도출 : 유일성 검증 2) 슈퍼키 선정 : 최소성 확인 3) 후보키 선정 : 엔터티 대표성 4) 기본키 결정
기본키
▣ 정의 - 후보키 중 데이터베이스 설계자가 선정하는 하나의 키 - 기본키는 엔티티 타입을 대표하는 주 식별자 ▣ 주식별자와 보조식별자 - 주식별자 : PRIMARY KEY - 보조식별자 : UNIQUE INDEX ▣ 특징 (유최불존) - 유일성 : 유일한 식별자 - 최소성 : 최소 속성 구성 - 불변성 : 식별자 불변 - 존재성 : 식별자 값의 존재 ▣ 기본키의 선정 기준 1) 속성의 사용 빈도 - 빈번하게 사용되는 속성 2) 명칭, 내역 등의 이름 속성은 제외 - 방안1 : 부서에 부서코드를 부여하여 주 식별자로 사용 - 방안2 : 부서인련번호를 주 식별자, 부서명은 보조 식별자로 선정 3) 과도한 복합키 배재 - 주식별자 속성 개수 최대 7~8개 이내로 유지 - 방안 : 주식별자 속성 수가 8개 이상 시, 모델 단순화를 위해 새로운 식별자를 주식별자로 선정
외래키
▣ 정의 - 한 테이블 내의 필드 또는 필드의 결합으로서 반드시 다른 테이블의 기본키와 대응되거나 또는 널값을 가지는 역할을 하는 키 ▣ 사용 목적 1) 데이터 모델의 운영규칙 명시 - 엔터티간 운영규칙 2) 관계의 명확성 - 부모-자식 관계 확실화 3) 데이터의 중복성 확인 - 수퍼타입-서브타입 재검토 4) 테이블간 참조 메커니즘 - 관련 테이블 간 참조장치 5) 엔티티의 의미부여 - 의미 있는 이름 부여 6) 데이터의 참조 무결성 - 허용된 데이터 수치만 저장 - 참조 테이블과 연결고리를 통해 무결성 유지
무결성을 위한 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) 명시적 제약 - 프로그램에 명시
System Catalog
▣ 정의 - DBA의 도구로서 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보를 수록한 시스템 테이블 (데이터 사전, Data Dictionary) ▣ 특징 - DBMS가 스스로 생성하고 유지 - 스키마에 대한 정보 제공 - 테이블, 인덱스, 뷰 정보 저장 ▣ 구성요소 - 스키마구조 : 테이블명, 인덱스명, 컬럼명, 뷰, 참조관계 - 감사/추적 : 수행이력, 트랜잭션정보, 세션정보 - 사용자 권한 : 접근, 입력, 수정, 삭제 권한 - 질의 최적화기 : Execution Plan - 컴파일러 : DML, DCL
함수적 종속성
▣ 정의 - 릴레이션 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는 완전함수족속성을 위배
관계대수
▣ 정의 - 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어 ▣ 용도 - 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'(과목))
인덱스
▣ 정의 - 데이터 검색 속도 향상을 위하여 테이블에 저장된 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) 인덱스 정의서 작성 - 엔터티 타입명 - 인덱스 스페이스 - 인덱스 유형 - 정렬 - 구분 ▣ 인덱스 선정기준
▣ 인덱스 선정시 고려사항
데이터베이스 논리적 인덱스
▣ 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에서만 사용 가능함
데이터베이스 물리적 인덱스 유형
▣ Partition Index - 큰 테이블의 인덱스 엔트리를 저장하는데 사용 - 인덱스까지 화일별로 다르게 저장 (대용량 테이블에서만 효과) - 인덱스 값에 따라 여러 세그먼트에 나누어 보관 ▣ Bitmap Index - Bit로 맵을 만드는 인덱스 (컬럼 기반의 DBMS) - Cardinality(한 릴레이션을 구성하는 투플의 수)의 개수로 맵을 만듦 ▣ Reverse Index - 연속된 데이터를 지우거나 관리하는 경우에는 이전의 데이터를 지워버리면 한쪽의 데이터가 지워진 것이기 때문에 인덱스의 밸런스가 깨져 효율이 좋지 않음 - 해당 컬럼의 값을 뒤집어서 그 값을 ROWID와 매칭시켜 인덱스를 만들면, 후에 연속된 데이터가 지워지더라도 균등하게 지워지기 때문에 밸런스 유지가 쉬움 ▣ Descending Index - 일반적인 인덱스는 기본적으로 오름차순이나 내림차순으로 데이터 정령
Clustered Index (비교)
▣ 정렬방식 - 인덱스 키 값의 순서에 따라 정렬되어 있으며 데이터 삽입, 삭제시 데이터 재 정렬해야 함 ▣ 검색속도 - 실제 데이터가 순서대로 저장되어 있어 원하는 데이터를 빠르게 찾을 수 있다. ▣ 인덱스생성수 - 한 개의 릴레이션에 하나의 인덱스만 생성할 수 있음 ▣ 리프 페이지 - 실제 데이터 ▣ 조회성 - 적은 양이든, 많은 양이든 유리함 ▣ 인덱스 크기 - 비교적 작음 ▣ 선택도 - 30% 정도면 사용함 create table tbl ( a int primary key, --> 자동 클러스터드 인덱스가 만들어짐 b int unique, -->자동 넌클러스터드 인덱스가 만들어짐 c int unique, d int )
Non Clustered Index (비교)
▣ 정렬방식 - 키값만 정렬되어있으며 실제 데이터는 정렬되지 않음 ▣ 검색속도 - 인덱스검색 후 실제 데이터 위치를 확인하여 클러스터드 인덱스에 비해 속도가 느림 ▣ 인덱스생성수 - 한 개의 릴레이션에 최대 249개 까지 생성가능 ▣ 리프 페이지 - 실제 데이터 주소 ▣ 조회성 - 비교적 적은 양의 데이터 ▣ 인덱스 크기 - 클러스터드 인덱스 보다 크다 ▣ 선택도 - 3% 이내면 사용함 create table tbl2 ( a int primary key nonclustered, --> 자동 클러스터를 넌 클러스터로 만듦 b int unique clustered, -->자동 넌클러스터드를 클러스터드로 만듦 c int unique, d int )
정적 인덱싱 (비교)
▣ 개념 - 데이터 파일에 레코드가 삽입되거나 삭제됨에 따라 인덱스의 내용은 변하지만 인덱스 구조 자체는 변경되지 않게 하는 인덱싱 기법 ▣ 특징 - 데이터파일에 새로운 레코드를 저장할 공간이 없으면 오버플로우 영역 사용 - 논리적인 키 값의 분포보다는 기억장소의 물리적인 특성(실린더, 트랙)에 맞게 인덱스 구성 ▣ 구성도 - 색인영역 (트랙/실린더/마스터 색인) - 기본영역 - 오버플로우영역 ▣ 오버플로우 처리 방법 - 오버플로우가 발생하면 오버플로우 영역에 체인으로 연결 - 오버플로우 체인에 연결되어 있는 레코드들은 오버플로우 영역 내에서 체인을 따라서 순차검색 ▣ 장단점 - 보조기억장치의 물리적 특성에 맞추어 구성하므로 효율적인 액세스가 가능 - 삽입/삭제 등 파일의 변화를 오버플로우 구역을 이용하여 수용하므로, 시간이 흐름에 따라 파일의 성능이 저하 - 유형이 다른 장치로 복사 어려움 ▣ 설계 시 고려사항 - 인덱스 구역/기본데이터구역/오버플로우 데이터 구역의 크기 - 인덱스의 레벨 - 기본 데이터구역의 인덱스 블로킹 ▣ 사례 - IBM의 ISAM 파일
동적 인덱싱
▣ 정의 - 인덱스와 데이터 파일을 블록으로 구성하고, 각 블록에는 나중에 레코드가 삽입될 것을 감안하여 빈 공간을 미리 준비해두는 인덱싱 기법 ▣ 특징 - 하나의 블록이 가득 차게 되면 동적으로 분열 (Split) - 일정수의 레코드를 유지 못하면 병합 (merge) - 기본 구역과 오버플로우 구역을 구분하지 않음 ▣ 구성도 - 색인영역 - 기본영역 ▣ 오버플로우 처리 방법 - 오버플로우가 발생하면 데이터 블록을 분할하고 인덱스 수정 - 오버플로우에 따라 새로운 인덱스 항목이 만들어짐 ▣ 장단점 - 오버플로우 체인을 사용하지 않으므로 보다 효율적으로 레코드를 검색 - 레코드를 삭제하면 그 공간을 재사용 - 필요할 때마다 부분적을로 파일로 ▣ 설계 시 고려사항 - 데이터 블록의 크기 - 인덱스 블록의 크기 - 초기 인덱스 레벨 수 - 최대 인덱스 레벨 ▣ 사례 - IBM의 VSAM 파일
B-Tree (비교)
▣ 개념 - Root Block, Branched Block, Leaf Block 으로 구성되어 Branched Block의 군형을 유지하는 트리구조 ▣ 인덱스 노드 구조 - Entry Header - Key 값의 쌍 - ROWID ▣ 사용 환경 - OLTP ▣ 검색 속도 - 소량의 데이터를 검색하는데 유리 ▣ 분포도 - 데이터 분포도가 높은 컬럼에 유리 ▣ 장점 - 입력, 수정, 삭제가 용이함 ▣ 단점 - 스캔 범위가 넓을 때 랜덤 I/O 발생
비트맵 인덱스 (비교)
▣ 개념 - 전체 로우의 인덱스 컬럼 값을 0과 1을 이용하여 저장 ▣ 인덱스 노드 구조 - Entry Header - Key 값의 쌍 - 시작 ROWID - 끝 ROWID - Bitmap Segment ▣ 사용 환경 - DW, DM ▣ 검색 속도 - 대량의 데이터를 읽을 때 유리 ▣ 분포도 - 데이터 분포도가 낮은 컬럼에 유리 ▣ 장점 - 비트 연산으로 OR연산, NULL값 비교 등에 강함 ▣ 단점 - 전체 인덱스 조정의 부하로 입력, 수정, 삭제가 어려움
데이터 독립성
▣ 개념 - 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성 ▣ 데이터 독립성의 종류 - 논리적 독립성 : 응용프로그램의 영향없이 논리적 구조 변경 - 물리적 독립성 : 내부스키마 변경 시 외부/개념에는 영향 없음 ▣ 데이터 독립성을 위한 3단계 데이터 구조 1) 외부 스키마 - DB에 대한 각 사용자 View 2) 개념 스키마 - 조직전체 DB 기술 - 접근권한, 보안정책, 무결성 규칙 포함 3) 내부 스키마 - DB가 물리적으로 저장된 형식
데이터 무결성
▣ 정의 - 데이터의 중복이나 누락이 없는 정확성과 원인과 결과 의미의 연속성이 보장되는 일관성이 확보된 상태 - 정확성, 유효성, 일관성, 신뢰성을 위해 무효 갱신으로 부터 데이터 보호 ▣ 중요성 - 의미 있는 가치 제공 - 정확하고 오류 없는 데이터 ▣ 데이터 무결성의 종류 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
정규화
▣ 정의 - 데이터의 이상현상을 제거하기 위해 데이터의 함수적 송속성이나 조인 속성을 이용하여 분리, 통합하는 방밥 ▣ 목적 - 데이터 중복의 최소화 - 이상현상 발생 방지 - 데이터 구조의 안정성 유지 - 종속성 제거 - 관리 효율 향상 ▣ 특징 - 종속관계를 이용하여 엔티티 타입을 정제 - 수학적인 접근 방법을 통해 분석하는 방법 ▣ 원칙 - 분리의 원칙 - 정보의 무손실 - 데이터 중복성 감소 ▣ 함수적 종속성(FD : Functional Dependency) - 기준값을 결정자라 하고, 종속되는 값을 종속자 - 결정자(X) -> 종속자(Y) - 주민등록번호 -> (이름, 출생지, 주소) ▣ 함수적 종속성의 종류 1) 완전 함수적 종속성 - {학번, 과목번호} -> 성적 2) 부분 함수적 종속성 - 결정자의 일부가 종속자를 종속 - 학번 -> 학과 3) 이행 함수적 종속성 - 기본키가 아닌 값이 다른 기본키가 아닌 값을 종속 - 학번 -> 지도교수 - 지도교수 -> 학과 - 학번 -> 학과 4) 결정자 함수 종속성 - 기본키가 아닌 속성이 기본키의 일부를 종속 - 교수 -> 과목 ▣ 이상현상 - 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상 - 갱신이상, 삭제이상, 삽입이상 ▣ 정규화 단계 - 1차 정규화 : 반복되는 속성 및 그룹 속성 제거 - 2차 정규화 : 부분 함수 종속성 제거 - 3차 정규화 : 이행함수 종속성 제거 - BCNF : 결정자 함수 종속성 제거 - 4차 정규화 : 다중값 종속성 제거 - 5차 정규화 : 조인 종속성 제거
암스트롱의 공리
▣ 개념 - 릴레이션 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 이다
반정규화
▣ 정의 - 적정 수준의 정규화 이후, 질의 성능 향상을 위해, 일부의 데이터에 대해 중복을 허용하는 정규화의 역작업 ▣ 검토기준 - 정합성과 데이터 무결성, 성능과 테이블 단순화의 Trade Off 검토 ▣ 이유 - 과도한 디스크 I/O 성능저하 - 경로가 멀어진 조인 성능저하 - 과도한 정규화로 데이터 분산화 - 고객요구 충족 어려운 경우 - Query를 이용한 대용량 검색/통계처리/넓은범위 처리시 ▣ 절차 1) 반정규화 대상조사 - 범위처리 빈도수 조사 - 대량의 범위 처리 조사 - 통계성 프로세스 조사 - 테이블 조인 개수 조사 2) 다른 방법 유도 - 뷰 테이블 - 클러스터링 적용 - 인덱스 적용 - 응용 어플리케이션 3) 반정규화 적용 - 테이블 반정규화 - 속성의 반정규화 - 관계의 반정규화 ▣ 반정규화의 유형 (테컬관)(병분추 중파이P응 관) 1) 테이블 반정규화 - 테이블 병합 : 1:1, 1:M, 슈퍼/서브 타입 - 테이블 분할 : 수직/수평 분할 - 테이블 추가 : 중복/통계/이력/부분 테이블 추가 2) 컬럼 반정규화 - 중복컬럼 추가 : 조인감소 - 파생컬럼 추가 : 미리계산 - 이력 테이블 추가 : 최근 값, 시작/종료 일자 추가 - PK에 의한 컬럼 추가 : 복합의미 PK를 일반속성으로 포함 - 응용시스템 오동작을 위한 컬럼 추가 : 이전 데이터 임시적 중복 3) 관계 반정규화 - 중복관계 추가 : 추가관계 설정 ▣ 고려사항 - update 기능이 많은 경우 정규화가 유리 - Select 많은 경우 반정규화 고려 - 정규화와 반정규화의 Trade Off - 가독성 및 유지보수성에 주의 - 반정규화는 성능향상을 위한 우선순위 고려사항 아님
테이블 파티셔닝
▣ 정의 - SQL문이나 어플리케이션 수정없이, 큰 테이블이나 인덱스를 관리하기 쉬운 작은 단위로 분할하여 관리하기 위한 물리적 분할 관리 기법 ▣ 목적 - 가용성, 관리용이성, 성능향상 ▣ 종류 - 레인지 : 년월 분할 - 해쉬 : 컬럼 기준 분할 - 리스트 : 지역별 분할 - 컴포지트 : 레인지 + 해시 등등
연결함정
▣ 정의 - 데이터모델링시 개체와 개체사이에 부여하는 관계성 집합의 의미가 모호하여 원하는 결과를 얻을 수 없거나 향후 업무처리에 영향을 미치게 되는 ER모델의 문제점 ▣ 유형 - 부채꼴 함정 : 관계성이 모호한 경우 - 균열 함정 : 관계성이 존재하지 않는 경우
데이터 모델링
▣ 정의 - 현실 세계의 업무를 추상화하여 데이터베이스의 데이터로 표현하기 위한 설계 과정 ▣ 데이터 모델링 4단계 - 요구사항 분석 - 개념 모델링 : 엔티티 추출, 관계 정의 - 논리 모델링 : 스키마 설계, 정규화 - 물리 모델링 : DBMS 종류 결정, 데이터 타입과 사이즈 정의
데이터 모델링 - 개념적 모델링
▣ 정의 - 해당 조직의 업무요건을 충족하기 위해서 주제 영역과 핵심 데이터 집합간의 관계를 정의하는 상위 수준의 개략적 데이터 설계 작업 ▣ 절차 1) 주제영역 선정 : 상향/하향/혼합 2) 핵심데이터 집합 선정 : 독립, 의존, 연관 데이터 집합 정의 3) 관계 설정 : 1:1, 1:N, M:N 4) 핵섬속성 정의 : 원자단위, 유일값 5) 식별자 정의 : PK, FK
데이터 모델링 - 논리적 모델링
▣ 개념 - 개념적 데이터 구조를 목표 데이터 베이스로 구현하기 위한 중간 단계로서 사용자 중심의 논리적 구조를 표현해 가는 과정을 통해 특정 DBMS가 처리할 수 있는 매핑 규칙 및 변환 기술을 적용하여 스키마를 생성하는 단계 ▣ 주요 입력 요소 - 개념적 데이터 모델이 매핑규칙으로 적용 - 업무의 운영 요구조건, 자료량과 사용 용도 - 일관성 제약조건 - DBMS의 논리적 구조와 데이터 정의어 ▣ 주요 출력 요소 - 특정 DBMS에 의해 구현 될 수 있는 스키마 - 처리 가능한 뷰 및 뷰를 이용한 보안 제약 - 물리적 설계 단계에서 적용될 메뉴얼 - 응용프로그램 설계 및 DB 운영 지침 ▣ 주요 Task - 엔티티 타입 도출 : 기본, 중심, 행위, 엔티티 타입 - 관계 도출 : 엔티티 타입 간 관계 - 식별자 도출 : PK, FK - 세부사항 도출 : 용어사전, 도메인 정의, 속성의 규칙(기본값, 체크값) - 정규화 : 1,2,3,BCNF,4,5 - 통합/분할 : 슈퍼/서브 타입 - 데이터 모델 검증 : 엔티티타입, 속성, 관계
데이터 모델링 - 물리적 모델링
▣ 정의 - 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 효율적이고 구현 가능한 물리적인 스키마를 생성하는 과정 ▣ 변환단계 1) 일괄변환 - Entity를 Table로 전환 - 식별자의 PK 정의 - 속성을 컬럼으로 전환 - 관계를 컬럼으로 전환 2) 구조조정 - 슈퍼/서브타입 모델 전환 3) 성능향상 - 반정규화
슈퍼타입 서브타입
▣ 개념 - 엔티티 작성시 대부분의 속성이 비슷하고 일부만 다른 여러 엔티티들을 하나로 묶어 통합하는 경우 수행하는 확장형 데이터모델링 ▣ 기법 - 통합화와 세분화 ex) 접수 (인터넷, 방문, 전화) ▣ 기법 1) One To One Type : 1:1 타입 2) Plus Type : 슈퍼 + 서브 타입 3) Single Type : All in One 타입
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 표현
CRUD 매트릭스 (상관 모델링)
▣ 상관 모델링의 정의 - 정보화 시스템을 구축하기 위해 그 업무에 존재하는 무엇(데이터)에 대해 무슨일이 행해지고(프로세스) 있는지 또는 무슨 일에 의해 무엇(데이터)이 영향을 받는지 분석하는 방법 ▣ 상관 모델링의 목적 - 검토목적 : 업무, 데이터, 프로세스 - 기능구분 : 연관성, 연계성 분석 - 테스트 - 고가용성 ▣ CRUD Matrix의 정의 - 시스템 개발 시 프로세스(또는 메소드, 클래스)와 DB에 저장되는 데이터 사이의 Dependency를 나타내기 위한 Matrix ▣ CRUD Matrix의 특징 - 모델링 작업 검증 - 중요 산출물 - 테스트에서 사용 - 인터페이스 현황 파악 ▣ CRUD Matrix 생성을 위한 필요 요소 - 데이터 모델링 - 업무 분해도 ▣ 내용 - C(Create) : 데이터 생성 - R(Read) : 데이터 참조 - U(Update) : 수정/갱신 - D(Delete) : 삭제 ▣ 작성 1) 세로 : 단위프로세스 - 접수한다. - 대여한다. - 통보한다. - 등록한다. - 수정한다. - 반납한다. 2) 가로 : 엔티티 타입 - 고객 - 대여주문 - 대여목록 - 연체료 - 책목록 ▣ 검증 - 모든 엔터티 타입은 CRUD가 한 번 이상 표기되었는가? - 모든 엔터티 타입에 "C"가 한 번 이상 존재하는가? - 모든 엔터티 타입에 "R"이 한번 이상 존재하는가? - 모든 단위 프로세스는 하나 이상의 엔터티 타입에 표기 되었는가? - 두 개 이상의 단위 프로세스가 하나의 엔터티 타입을 생성하는가?
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 클래스들을 테이블로 매핑
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 정보 포함
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 파일에 대한 대응
Transaction
▣ 정의 - 한번에 수행되어야 할 데이터베이스의 일련의 Read와 Write연산을 수행하는 단위 ▣ 특징 (ACID) - 원자성 : 분해가 불가능한 최소의 단위, Commit/Rollback 연산 (트랜잭션 관리자) - 일관성 : 모순 없는 일관성 상태 (무결성제어기) - 고립성 : 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없음 (병행제어관리자) - 영속성 : 영구적으로 데이터베이스에 저장 (회복기법, 연관회복관리자) ▣ 트랜잭션 상태 - 활동 : 실행 중 - 부분완료 : 커밋 직전 - 실패 : 실행 중단 - 철회 : 롤백 수행 - 완료 : 커밋 수행 ▣ 트랜잭션의 3가지 연산 1) 철회된 트랜잭션의 연산 - 트랜잭션 재실행(Restart) : HW, SW 오류 - 트랜잭션 폐기(Kill) : 트랜잭션 내부적 논리 오류 2) 트랜잭션의 정상종료연산 - Commit 연산 - 프로그램 정상 종료 3) 트랜잭션의 비정상 종료연산 - Commit 연산 - Rollback 연산
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 : 모두 방어
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 : 커밋, 롤백
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 , 현실성 없음
타임스탬프기법을 이용한 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
DB Join 방식
▣ 정의 - 하나의 SQL 명령문에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능 ▣ 분류 1) Nested Loop Join - 선행 테이블의 처리범위를 하나씩 액세스하면서 추출된 값으로 테이블 조인 - 랜덤 액세스 이므로 집합 많으면 수행 속도 저하 2) Sort Merge Join - 양쪽 테이블 처리 범위를 각자 액세스하여 정렬한 결과를 차례로 스캔하면서 연결고리의 조건으로 merge 해 가는 방식 - 정렬을 위한 영역에 따라 효율에 큰 차이 발생 3) Hash Join - 해시 값을 이용하여 테이블을 조인하는 방식 - 대용량 처리시 메모리의 지나친 사용으로 오버헤드 발생
데이터 베이스 회복 기법
▣ 정의 - 데이터베이스 운영 도중 예기치 못한 장애가 발생할 경우 데이터베이스를 장애 발생 이전의 일관성과 무결성을 가진 상태로 복원 ▣ 장애의 유형 - 트랜잭션 장애 : 논리, 시스템 - 시스템 장애 : 전원, HW, SW - 디스크 장애 : 스토리지 붕괴 - 사용자 장애 : 이해부족, 실수 ▣ 회복을 위한 주요 요소 1) 회복의 기본 원칙(중복) - 데이터의 중복 - Archive 또는 Dump : 복사 - Log 또는 Journal : 로그 2) 회복을 위한 조치 - REDO : 재실행 - UNDO : 취소 3) 시스템 - 회복관리기능 ▣ 회복 기법의 종류 1) 로그기반 기법 - 즉시 갱신 기법 - 지연 갱신 기법 - 로그 전체 조사 (시간지연) - Redo, Undo 사용 - 느림 2) Check Point 기법 - 로그파일과 검사점 이용 - 상대적으로 회복 빠름 - Redo, Undo 사용 - 로그보다 빠름 3) 그림자 페이징 기법 - 그림자 페이지 테이블 이용 - Undo 간단, Redo 불필요 - 로그 기반이나, 검사점과 함께 사용 - 그림자 테이블 교체 - 복구 속도 빠름
동시성 제어 (병행제어)
▣ 정의 - 다중 사용자 환경을 지원하는 데이터 베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행 될 수 있도록 지원하는 기능 ▣ 목적 - 트랜잭션의 직렬성 보장 - 데이터의 무결성 및 일관성 보장 ▣ 동시성 제어를 하지 않은 경우 발생하는 문제점 - 갱신 손실 : 동일 데이터 동시 갱신 (갱신 값 덮어쓰기) - 현황파악오류 : 중간 수행결과를 다른 트랜잭션이 참조 - 모순성 : DB가 일관성 없는 상태 - 연쇄복귀 : 특정 트랜잭션이 처리 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능 ▣ 주요 동시성 제어 기법 - 기본 Locking 기법 - 2PL (2Phase Locking) 기법 - 타임 스탬프 - 낙관적 기법 - 다중버전 동시성 제어 기법
기본 Locking 기법
▣ 정의
- 트랜잭션이 사용하는 자원에 대하여 상호배제(Mutual Exclusive)기능을 제공하는 기법
- 상호배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금(Lock)을 설정한 트랜잭션이 해제(UnLock) 할 때까지 데이터를 독점적으로 사용할 수 있는 기법
▣ 연산의 종류
1) 공유 Lock (Shared Lock)
- 공유 잠금한 트랜잭션이 데이터 항목에 대하여 읽기(read)만 가능
- 다른 트랜잭션도 읽기(read)만 실행 할 수 있는 형태
2) 전용 Lock (Exclusive Lock)
- 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)이 모두 가능
- 다른 트랜잭션은 읽기(read)와 기록(write) 모두 할 수 없음
▣ Locking 의 단위
- 데이터 베이스
- 테이블
- 페이지
- 레코드 (튜플)
- 필드 (속성)
=> Locking 단위가 클수록 : 병행성 수준 떨어지고, 병행제어기법 간단해짐
=> Locking 단위가 작을수록 : 병행성 수준 높아지고, 관리 복잡해짐
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 발생 안함 - 현실성 없음
타임 스탬프
▣ 정의
- 트랜잭션을 식별하기 위해서 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)
낙관적 기법
▣ 개념
- 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사하는 동시성 제어 기법
▣ 특징
- 연산은 버퍼에서 이루어지며, 검증한 후 결과를 디스크에 반영하거나 복구
- 트랜잭션 수행 마지막에 갱신 사항들의 직렬 가능성 위반 여부를 검사하여 검증될 경우 일시에 데이터베이스로 반영
- 읽기 연산이 많은 경우에 적합하며, 데드락과 연쇄 복구가 발생하지 않음
▣ 트랜잭션 생명주기
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)
다중 버전 동시성 제어 기법 (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)
옵티마이저
▣ 정의 - 사용자의 다양한 요구에 따라 그때마다 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)
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 지양
DB용량산정
▣ 개념 - DB 정보시스템개발, 운영에 소요되는 HW규모산정을 적정하게 하기 위한 일련의 활동 ▣ 목적 - 디스크효율향상 - I/O 부하분산 - 데이터 접근성 향상 - 이벤트 발생 감소 ▣ 용량산정을 위한 데이터 수집 - 트랜잭선 분석 - 업무패턴 분석 - 현행 데이터 분석 - 데이터 모델 분석 - 물리설계 파악 ▣ 절차 - 테이블 크기 계산 - 인덱스 크기 계산 - 테이블 스페이스 용량 산정 - 디스크 용량산정
MDR (MetaData Registry)
▣ 정의 - 동일한 정보의 중복과 구문적, 문자적 차이를 식별할 수 있게 함으로써 의미적으로 동일한 요소들 간의 통합을 가능하게 하는 메타데이터 저장 기술 ▣ 모형 개념도 1) 개념 레벨 - 데이터 요소 개념 - 개념영역 2) 표현 레벨 - 데이터 요소 - 값영역 ▣ 구성요소 - 프레임워크 : 데이터 요소 개념, 데이터 요소, 값 영역, 개념영역 간 관계 설정 - 분류 : 객체 클래스, 속성 표현, 값 영역, 데이터 요소 개념, 데이터 요소로 분류 - 메타모형과 기본속성 : 메타데이터 항목들의 기본속성 - 데이터 정의의 공식화 : 필수요건 및 권고요건을 기술 다룸 - 명명과 식별 : 유일한 식별자 부여, 등록기관 식별자/데이터 식별자/버전식별자 - 등록 : 정보의 종류, 조건과 절치, 이해관계자
Sharding
▣ 정의 - 물리적으로 다른 데이터베이스에 데이터를 수평분할 방식으로 분산저장하고 조회하는 방법 ▣ 분할방법 1) Vertical Partitioning - 테이블 별로 서버 분할 2) Range based Partitioning - 하나의 feature나 table이 점점 거대해지는 경우 서버를 분리 3) Key or Hash Based Portioning - 엔티티를 해쉬 함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식
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에 대한 쓰기 로직과 읽기 로직 분리해서 구현
데이터 품질 관리
▣ 개념 - 시스템 별로 산재되어 있는 데이터 정보 요소에 대한 원칙을 수립하여 전사 적용하는 활동 ▣ 구성요소 1) 데이터 표준 관리 조직 - 데이터 표준원칙, 표준 준수 여부 관리 2) 데이터 표준 - 데이터 모델 및 모든 오브젝트 3) 표준화 절차 - 요구사항 수집, 표준정의 ▣ 전사 데이터 표준화 관리 대상 - 업무적 용어 - 기술적 용어 - 표준 단어 - 표준 도메인 - 표준 코드 ▣ 관리 체계 1) 표준관리 (표준화 원칙 정의, 요구사항 수집, 데이터 표준 정의) - DRM : 데이터 분류체계/모델 - 표준화 관리 : 식별/분류 - MDR : 메타데이터 표준 데이터 스키마 2) 품질관리 (데이터 표준 확정, 이행, 모니터링) - DQM - MDM ▣ 지속적인 전사 데이터 표준화 관리를 위한 조직의 R&R - 업무 담당자 - 데이터 베이스 관리자 - 데이터 관리자 - 전사 데이터 관리자
DQC (Database Quality Certification)
▣ 정의 - 공공민간에서 개발하여 활용 중인 정보시스템의 데이터 품질을 확보하기 위해 데이터 자체 품질과 데이터 관리체계의 품질, 그리고 데이터베이스 보안 체계를 심사 인증제도 ▣ 필요성 - 데이터 품질의 중요성과 문제점에 대한 인식 확산 - DB의 품질확보를 위한 관리체계 수립 미흡 ▣ 인증항목 1) 데이터 인증 (DQC-V) - 도메인, 업무규칙 2) 데이터 관리 인증 (DQM-M) - 정확성, 일관성, 유용성, 접근성, 적시성, 보안성 3) 데이터 보안 인증 (DQC-S) - 접근제어, 암호화, 작업결재, 취약점 분석
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 스키마 : 정규화 작업을 마친 상태의 모델
Data Mining
▣ 정의 - 대용량 데이터 베이스에서 데이터의 관계, 특성, 패턴, 규칙을 찾아 모형화하여 유용한 지식으로 추론/변환하는 일련의 과정 ▣ 수행과정 1) 문제정의 2) 데이터 선정 및 준비 3) 데이터 마이닝 과정 - Sampling : 추출 - Exploration : 탐색 (알고리즘 적용) - Modification & Modeling : 모형 성능 향상, 모델 결정 - Assessment : 가장 좋은 모델 선택 4) 비즈니스 레포트 5) 의사결정 6) 피드백 ▣ 기법 1) 예측 기반 기법 - 의사결정 트리 - 신경망 - 가설검정 2) 탐색 기반 기법 - 연관성 : 지지도, 신뢰도, 향상도 - 연속성 : 시간의 흐름 - 군집화 : k-means ▣ 활용분야 - 금융 : 대출신용평가, 금융사기 패턴 분석 - 통신 : 고객 이탈 방지, 사용자 부정 패턴 - 의료 : 질병 예측, DNA 칩 자료 분석 - 제조 : 제품의 수요예측, 제품 불량률 개선, 품질 개선 - 법률 : 부정행위 적발 - 기업 : 마케팅, 위험관리, 고객불만관리, 망관리, 주식분석, 투자종목 선택
웹 마이닝
▣ 정의 - 웹 환경에서 얻어지는 고객의 정보, 데이터로 부터 특정행위, 패턴 등의 유용한 정보를 이용하여 의사 결정에 활용하기 위한 마이닝 기법 ▣ 특징 - 실시간성, 개인화, 타겟마케팅, 비정형 데이터 분석 ▣ 유형 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
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) 가지치기 단계
해싱
▣ 정의 - 하나의 문자열을 보다 빨리 찾을 수 있도록 해시함수를 이용하여 해시테이블내 주소에 직접 접근할 수 있는 짧은 길이의 값이나 키로 변환하는 과정 ▣ 목적 - 해시 테이블 - 암호화 - 데이터 축약 ▣ 동작과정 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차 해시 함수 이용 - 무작위검색 : 난수사용
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에 적합하도록 고안된 인덱스