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를 통해 연결하므로 뛰어난 확장성과 유연성을 제공