Certification/ADP필기
2과목 - 데이터 처리 기술의 이해
mansoorrr
2023. 9. 25. 22:23
1. 데이터웨어하우스
- ODS(ETL과정 거치는거)로 만들어진 데이터 저장소
- 주제중심성: 실 업무 상황(주제)을 반영하므로 최종 사용자도 이해하기 쉬운 형태를 가짐
- 영속성, 비휘발성: 최초 저장 이후에 읽기전용(load, access 중심)이라 삭제 안됨, batch(일괄)처리 외에는 별도의 갱신 이루어 지지 않음
- 통합성: 기관의 많은 부서들이 보유한 데이터들의 집합소
- 시계열성: 시간순에 의한 이력 데이터를 보유
- 오래된 상세 데이터 및 2차 가공된 요약된 데이터를 저장
- 비교적 대규모 데이터를 저장
가. 스타스키마
- 조인 스키마라고 부르고 가장 단순
- 단일 테이블을 중심으로 다수차원 테이블 들로 구성
- 관계형 데이터 베이스를 통해 다차원 데이터 베이스 기능 구현 가능
- 중심(사실)테이블은 제 3정규형으로 모델링, 차원테이블들은 비정규화된 2정규형으로 모델링
- 스노우플레이크 스키마에비해 복잡도가 낮아 이해하기 쉬움
- 쿼리작성 용이, 조인테이블 개수 적음
나. 스노우 플레이크 스키마
- 스타스키마의 차원테이블들을 제 3정규형으로 정규화한 형태
- 데이터 중복 제거되어 적재시 시간 단축
- 스키마 구조가 복잡해서 조인테이블의 개수 증가 -> 쿼리 작성 난이도 올라감
2. 데이터베이스 클러스터
- MySQL클러스터는 비공유형으로 메모리 기반 데이터베이스의 클러스터링 지원
- 데이터베이스 클러스터를 활용하면 성능의 선형적인 증가효과를 볼 수 있음
- 특정 파티션에 장애가 발생하더라도 서비스가 중단되지 않음
- 공유 디스크 방식에서는 모든 노드가 데이터를 수정할 수 있음
- MySQL 클러스터는 관리노드(데이터관리), 데이터노드(데이터저장), SQL노드(데이터에 접근 지원)로 구분됨
- 무공유 클러스터
- 모든 노드가 데이터를 수정할 수 없음
- 각각 인스턴스나 노드는 완전히 분리된 데이터의 서브 집합에 대한 소유권을 가짐
- 각 노드에 장애가 발생할 경우를 대비해 폴트톨러런스(Fault Tolerance)를 구성해야 함
3. ETL(Extraction, Transformer, Load)
가. 개념
- 데이터의 이동 및 변환 절차와 관련된 업계 표준 용어
- 데이터스토어, 데이터 웨어하우스, 데이터 마트에 데이터를 적재하는 작업
- 정기적 실행 일정을 조정할 수 있도록 하는 컴포넌트들로 대용량 데이터 처리를 가능하게 하 기위한 MPP(대규모병렬처리)지원
- 대용량 데이터 교환이나 복잡한 룰 적용이 필요한 데이터 교환에 활용
- 대규모 병렬처리 MPP(Massive Parallel Processing)을 지원
- 일괄(Batch ETL), 실시간(Real Time ETL)으로 구분
- Extraction(추출): 데이터 원천들로 부터 데이터 획득
- Transformer(변형): 데이터 클렌징, 통합, 비지니스룰 적용
- Load(적재): 변형 완료된 데이터 적재
나. 작업단계
- Interface: 데이터 획득을 위한 준비(매커니즘 구현)
- Staging: 데이터 추출해서 스테이징 테이블에 저장
- Profiling: 스테이징 테이블에서 데이터 특성 식별 및 품질 측정
- Cleansing: 데이터 보정 및 클렌징
- Integration: 데이터충돌 해소, 클렌징된 데이터 통합
- Denormalizing: 데이터 적재를 위해 비정규화 수행
4. VMWare
- 메모리 가상화기법
- 주소의 중간 변환을 하드웨어적으로 돕는 과정에서 사용되는 캐시메모리를 TLB라고 함
- 하이퍼바이저 내에 Shadow Page Table을 별도로 둠
- 이는 빈공간의 메모리가 실제 존재하는 것처럼 게스트 운영체제에 매핑해주는 역할 함
- VMKernal이 핵심 모듈임 > 서비스 콘솔, 디바이스 드라이버 들의 메모리 영역을 제외한 전체 메모리 영역을 모두 관리하면서 가상 머신에 메모리를 할당
5. 하둡
- 대규모 분산 병렬 처리의 맵리듀스 시스템과 분산 파일시스템(HDFS)을 핵심 구성 요소로 가지는 플랫폼 기술
- 여러대 컴퓨터를 마치 하나의 시스템인 것처럼 묶어 분산환경에서 빅데이터를 저장 및 처리할 수 있도록 하는 자바기반 오픈소스
- 비공유 분산 아키텍처 사용
- 선형적 성능과 용량 확장: 클러스터 구성 가능한 서버 대수에는 제한이 없고 통상적으로 5대, 비공유 분산 아키텍처 시스템으로 서버추가하면 연산 기능과 저장 기능이 서버의 대수에 비례해 증가
- 고장감내성: HDFS에 저장되는 3중복제가 적용되어 데이터 유실 방지 가능, 맵리듀스 작업 수행 중 장애 발생시 장애발생한 특정 태스크만 다른서버에서 재실행 가능
- 핵심 비지니스 로직에 집중: 맵리듀스는 맵과 리듀스라는 함수만 구현하면서 동작, 자동복구 제공
- 풍부한 에코시스템 형성
- Hadoop MapReduce
- 클라이언트에서 하둡 작업을 실행하면 프로그램 바이너리와 입출력 디렉터리와 같은 환경 정보들이 JobTracker에 전송됨
- 네임노드, 데이터노드, TaskTracker로 구성됨
- TaskTracker: Response메세지 분석 > Process Fork > 할당된 Task처리
- key는 tab앞에 나오는 단어, value는 tab뒤에 나오는 나머지 부분
6. CDC(Change Data Capture)
- 데이터베이스에서 데이터 변경을 식별해서 전송, 공유 등을 자동화하는 기술
- 데이터웨어하우스, 기타 데이터 저장소 구축에 사용
- 다양한 계층에서 다양한 기술을 통해 구현 가능
- 단일 정보 시스템에서 다수의 CDC매커니즘이 구현돼 동작 가능
- 실시간 or 근접 실시간 처리에 적합
가. 구현기법
- Time Stamp on Rows: 마지막 변경 시점을 기록하는 타임스탬프 컬럼 두고 최근을 식별
- Version Numbers on Rows: 변경이 인지되어야 하는 버젼을 기록하는 컬럼 두고 변경을 식별
- Status on Rows: 타임과 버젼을 보완. 변경여부를 boolean으로 저장하는컬럼을 둠, 레코드에 대한 변경 여부를 사람이 직접 판단할 수 있도록 유보하는 업무규칙을 세울 수 있음
- Time/Version/Status on Rows: 타임, 버젼, 상태 세개 특성 모두 활용해서 식별, 정교한 쿼리 생성이 불가할 수 있음
- Triggers on Tables: DB의 트리거 활용해 사전에 등록된 시스템에 변경데이터를 배포. 시스템 관리 복잡도 증가, 변경관리 어려움, 확장성 감소로 사용에 주의해야함
- Event Programming: 데이터 변경 식별 기능을 애플리케이션에 구현, 개발부담과 복잡도 증가, 다양한 조건에 의한 매커니즘 구현 가능
- Log Scanner on Database: 트랜잭션 로그에 대한 스캐닝 및 변경내역에 대한 해석, 각 데이터베이스마다 로그 관리 매커니즘 상이하므로 작업규모 증가 가능성 있음 주의요함.
나. 구현방식
- 푸시방식: 원천데이터에서 변경을 식별하고 대상 시스템에 변경 데이터를 적재
- 풀방식: 대상시스템에서 원천데이터를 정기적으로 살펴보고 필요시 데이터 다운로드
7. Hbase
- 하둡 분산 시스템을 지원하고 SQL을 지원하지 않음
- 로우키에 대한 인덱싱만 지원
- 작은 데이터를 저장하는 용도로 사용하는것은 적절하지 않음
8. EAI(Enterprise Application Integration)
- 기업 내 각종 애플리케이션간의 상호 연동이 가능하도록 통합하는 솔루션
- 기업내, 기업간 이질적 데이터를 연계해서 동기화되어 동작하도록 하는 것
- 프로세스 및 메세지 차원에서 통합 및 관리
- 비지니스 프로세스 자동화 및 실시간으로 통합 연계 가능
- ETL은 배치 프로세스 중심이지만 EAI는 실시간 혹은 근접 실시간 처리 중심
- 로직연동은 개발 application에서 수행됨
- Hub and Spoke 연계방식 사용: 가운데 지점에 허브를 두고 연결된 데이터들의 요구를 중계하여 구조 단순화 시킴, 각 연결의 대상이 되는 노드들은 Spoke에 해당, ETL/CDC는 운영 데이터와 분석을 위한 데이터 베이스가 구분되지만 EAI는 다수 정보 시스템의 데이터를 중앙 Hub가 연계하고 통합함
가. 구성요소
- 어댑터(Adapter): 각 정보시스템과 허브간의 연결성 확보
- 버스(Bus): 어댑터를 매개로 연결된 각 보시스템들간의 데이터연동 통로
- 브로커(Broker): 데이터 연동 규칙을 통제
- 트랜스포머(Transformer): 데이터 형식 변환 담당
나. 구현유형
- Mediation(intra-communication): 엔진이 중개자로 동작하면서 특정 정보 시스템의 변동을 감지하여 약속된 시스템에 정보 전달함(Publish/subscribe Model)
- Federation(inter-communication): 엔진이 외부 정보 시스템으로 부터 데이터 요청들을 일괄적으로 수령해 필요한 데이터를 전달(Request / reply Model)
다. 활용효과
- 개발 및 유지보수비용 절감
- 정보 시스템의 지속적 발전 기반 확보
- 협력사, 파트너, 고객사와의 상호 협력 프로세스 연계
- 웹 서비스 등 인터넷 비지니스를 위한 기본 토대 확립
- 지역적으로 분리되어있는 데이터간 동기화등을 통해 데이터 표준화 기반 제공
9. 맵리듀스
- 맵리듀스 진행절차
- input > split > map > combine > shuffle&sort > reduce > output
- 블록 크기 기본값: 64MB, 태스크 하나가 1개의 블록을 대상으로 연산 수행( 1task : 1block(64mb) )
- Mapper: 입력 데이터를 key-value 쌍으로 변환하는 역할 수행
- 작업 수행 중 특정 태스크에서 문제가 발생하면 문제가 생긴 그 태스크만 다른 서버에서 재실행 할 수 있음
- 맵과 리듀스라는 두개의 함수만 구현하며 동작
10. SQL on 하둡
- 대용량 SQL 질의 기술
- 대부분의 SQL on하둡 시스템들은 하둡 프레임워크의 맵리듀스를 사용하지 않음
- 새로운 분산처리 모델과 프레임워크를 기반으로 구현되어 있음
- Hive는 배치처리하는데 최적화되어있음. 실제 업무에서는 실시간으로 조희하거나 처리해야하는 요구사항 많음
- 실시간 조회 및 처리에 대한 제약을 극복하기 위해 SQL on 하둡 등장
- Drill: 드레멜의 아키텍처와 기능을 동일하게 구현한 오픈소스 드레멜
- Stinger: 하이브 코드 최대한 이용하여 성능 개선
- Shark: 인메모리 기반 대용량 데이터 웨어하우스 시스템, 하이브와 호완, SQL질의와 사용자 정의 함수 사용 가능
- Tajo: 고려대, 아파치 인큐베이션 프로젝트로 등록
- Impala: 클라우데라에서 개발 주도
- HAWQ: 피보탈에서 개발한 프로젝트로 상용과 2가지 버전 제공
- 프레스토: 페이스북, 아파치라이센스
11. ODS
- 현재 또는 비교적 최근 데이터를 저장
- 비교적 소규모 데이터를 저장
- 과거에는 분명한 특징을 지는 분석 영역이었지만 현재는 데이터 웨어하우스를 구축하기 위한 1차 데이터 수집 공간의 의미로 구성
- 구성단계
- 스테이징
- 정기적인 ETL과 실시간 ETL을 혼용가능
- 저장되는 테이블의 스키마는 데이터 원천의 구조에 의존
- 데이터 원천과 스테이징 테이블과의 매핑은 일대일 혹은 일대 다로 구성될 수 있음
- 스테이징 테이블에 저장되는 데이터는 정규화 배제됨
- 스테이징
12. HDFS(하둡 분산파일 시스템)
- 데이터의 랜덤 접근 방식을 지원하지 않음
- 구글 파일 시스템의 아키텍처와 사상을 그대로 구현한 클로닝 프로젝트
- 파일은 한번 쓰이면 변경되지 않는다고 가정
- 파일을 블록이나 청크단위로 저장
- 데이터에 대한 순차접근방식 지원
- 읽기(read)과정 순서
- 클라이언트 > 네임노드: 블록 위치 질의
- 네임노드 > 클라이언트: 블록의 목록과 위치를 반환
- 클라이언트는 데이터노드로부터 직접 데이터를 읽음
13. 데이터 처리기법
- 전통적 처리기법
- OLAP 위주
- ODS로 부터 데이터 웨어하우스로 데이터를 추출 및 적재한다
- 각종 통계 도구 및 기법, 데이터마이닝 분석 모델 설계, 운영, 개선기법 등의 적용은 서로 유사
- 빅데이터 처리기법
- 통계기법과 데이터마이닝기술 위주
- NoSQL, 초대형 분산 데이터 스토리지 등과 같은 데이터 인프라스트럭처 사용
- 각종 통계 도구 및 기법, 데이터마이닝 분석 모델 설계, 운영, 개선기법 등의 적용은 서로 유사
14. 아파치 하이브(Apache Hive)
- 하둡 플랫폼 위에서 동작
- SQL기반 쿼리 사용
- 별도의 DBMS사용하지 않으면 Embedded Derby를 기본 데이터 베이스로 사용
- MapReduce의 모든 기능 지원
- HiveQL을 사용하여 테이블생성, 삭제, 변경, 테이블 스키마도 변경 가능
15. 대용량 비정형 데이터 수집 시스템의 특징
- 서버가 증가하면 증가한 서버 수만큼 에이전트의 수를 늘리는 방식으로 쉽게 확장할 수 있는 구조를 제공
- 다양한 수집과 저장 플러그인 제공
- 인터페이스 상속을 통한 어플리케이션 기능 확장
- 저장소에 저장되는 과정에서 단계별로 신호를 주고받아 이벤트의 유실을 방지
16. 하둡에코시스템에서 사용되는 기술
- 데이터 수집: Flume-NG, kafka
- 대용량 SQL 질의: Hive, Pig
- 워크플로 관리: Oozie, Azkaban
- 실시간 SQL 질의: Impala, Tajo
- 데이터 연동: Sqoop
- 관계형 db의 데이터를 하둡분산시스템(HDFS)로 가져오기 위한 기술
- 관계형 DB의 데이터를 HBase로 옮길 수 있음
- 하둡에서 제공하는 맵 인풋 포맷터를 사용
- SQL을 통해 데이터를 추출
17. 클라우드 컴퓨팅
- AWS의 EMR(Elastic Mapreduce)은 하둡을 on demand로 이용할 수 있는 클라우드
- 서버 가상화는 클라우드 컴퓨팅의 기반이 됨
- 초기 클라우드 서비스는 SaaS중심으로 발전
- IaaS와 Paas형태로 발전
- IaaS는 서버 가상화 기술로 VMWare, Xen, KVM등을 사용
18. 구글 빅테이블
- 테이블 내의 데이터는 row-key의 사전적 순서로 정렬됨
- 정렬 기준은 rowkey + columnKey + timestamp
- 동일한 columnKey 이면 timestamp가 다른 여러 버젼의 값이 존재 가능
19. 하이퍼바이저(hypervisor)
- 실행환경 격리, 시스템 자원 할당, 하드웨어 환경 에뮬레이션 등의 기능을 함
- 일반적으로 가상머신을 파이퍼 바이저라고 함(VMM: Virtual Machine Monitor)
- 하이퍼바이저를 통해 새로운 운영체제의 설치, 애플리케이션의 테스팅 및 업그레이드를 동일한 물리적 서버에서 동시에 수행 가능
- 베어메탈 하이퍼바이저는 하드웨어와 호스트 운영체제 사이에 위치
- 호스트 하이퍼바이저는 호스트 운영체제와 게스트 운영체제 사이에 위치
20. 병렬 쿼리 시스템
- pig: 야후에서 개발해 오픈소스 프로젝트화한 데이터 처리를 위한 고차원 언어(하둡 위에서 동작)
- Hive: 페이스북에서 개발한 데이터 웨어하우징 인프라로 병렬처리 기능(Hadoop-Streaming)을 쿼리 내부에 삽입해 사용 가능(하둡 위에서 동작)
- Sawzall: MapReduce를 추상화한 스크립트 형태의 병렬 프로그래밍 언어
21. cpu 가상화
- 완전 가상화
- 반가상화
- 게스트 운영제(privileged명령어를) > (hypercall로)하이퍼바이저에 전달
- 하이퍼바이저는 hypercall에 대해 privileged레벨에 상관없이 하드웨어로 명령을 수행 시킴
22. NoSQL
- 관계형 데이터 모델을 사용하지 않고 일반적으로 스키마를 강제적용 하지 않음
- 성능을 향상시키기 위해 더 빠른 하드웨어로 확장할 필요 없음
- 언제나 관계형 데이터베이스보다 성능이 좋은것은 아님
23. ESB
- 서비스를 지원하기 위한 시스템을 유기적으로 연결하는 기술
- 프로세스 관점의 통합
- 로직연동은 ESB에서 수행
- 각 시스템을 BUS를 통해 연결하므로 뛰어난 확장성과 유연성을 제공