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 계열에 적용