기초 데이터 수집 수행 절차
: 비즈니스 도메인 정보 수집 ▶ 분석기획서 기반 도메인 및 서비스 이해 ▶ 수집 Data 탐색 ▶ 기초 Data 수집
데이터 수집 시스템 구축
: 수집 데이터 유형 파악 ▶ 수집 기술 결정 ▶ 아키텍처 수립 ▶ Hardware 구축 ▶ 실행환경 구축
Hadoop
: 다수의 COM을 하나처럼 묶어 대용량 데이터 처리를 지원하는 OpenSource Framework
정형 데이터
ETL
: 데이터 추출 ▶ 변환 ▶ 적재 (Data WareHouse)FTP
: 네트워크 기반 파일 전송, TCP/IP
위에서 동작Apache Sqoop
Bulk Import
지원비정형 데이터
RSS
(XML
기반 정보 배포)Chukwa
(척와) : 분산 시스템으로부터 데이터 수집 → Hadoop 파일 시스템에 저장 / 실시간 분석Kafka
: 대용량 실시간 로그 처리 분산 스트리밍 플랫폼반정형 데이터
Apache Flume
Scribe
: 서버多에서 실시간 데이터 수집 → 분산 시스템 저장Sencing
: 네트워크를 통한 센서 데이터 수집Streaming
: TCP, UDP, Bluetooth, RFID
Meta Data
를 포함한 데이터를 말함: 데이터 크기, 수집 주기 / 기술 / 방식, 대상 데이터의 가치 고려
Key-Value
)HDFS
에 변환 없이 직접 저장Python, Ruby
등을 통한 데이터 변환 과정Data =
Entity + Attribute
: 개념적 설계(ERD) + 논리적 설계(관계형 스키마 작성)
식별자 : 사물에 고유하게 부여된 값(고유하게 식별 가능, ex) 주민번호)
=> 원칙적 삭제, 필요 시 비식별화
속성자 : 다른 정보와 결합 시, 개인 식별 가능(추가적인 정보, ex) 주소)
=> 원칙적 삭제, 필요 시 가명처리, 총계처리 등 수행
가명처리 : 개인 식별이 가능한 데이터 자체를 대체하는 것
=> 휴리스틱 가명화, 암호화, 교환방법
총계처리 : 통계값 적용
Data Reduction : 일부 및 전부 삭제
Data 범주화
Data Masking
여러 방법을 복합적으로 사용하는게 원칙
k-익명성
: 특정인 추론 가능 여부, 일정 확률 수준 이상 비식별 필수
: 동일값 레코드를 k
개 이상
취약점
- 동질성 공격 : 일부 정보가 모두 같은 값을 가져 공격 대상이 됨
- 배경지식에 의한 공격 : 주어진 정보 + 공격자의 외부 지식을 통해 민감 정보 접근
l-다양성
: 민감 정보에 대한 다양성 향상을 통한 추론 가능성 감소
: 동질성 공격 및 배경지식에 의한 공격 방어
: 각 레코드는 최소 l
개 이상의 다양성 확보
취약점
- 쏠림 공격 : 정보가 특정 값에 쏠려
l-다양성
이 무력한 경우- 유사성 공격 : 비식별 조치된 레코드 정보가 유사할 때, 민감 정보 노출 우려 발생
t-근접성
: 민감 정보의 분포를 낮춰 추론 가능성 감소
: 쏠림 공격 및 유사성 공격 보완
: 정보의 분포 조정을 통해 전체 데이터 분포 간 특정 정보 분포의 차이를 t
이하로
완전성
유일성
일관성 : 기준코드, 참조무결성 등
유효성 : 범위, 날짜, 형식
정확성 : 선후관계, 계산/집계, 최신성, 업무 규칙
기능성 : 요구를 만족하는 기능의 제공 정도
신뢰성 : 오류 방지
사용성 : 이해가 쉽고 선호되는지
효율성 : 자원에 따라 요구하는 성능을 제공하는지
이식성 : 다양한 환경 및 상황에서의 품질
정형 데이터 품질 진단 : 데이터 프로파일링
비정형 데이터 품질 진단 : 품질 세부 기준 체크리스트
: 수집 데이터 품질보증체계 수립 ▶ 품질 점검 수행 (데이터 재수집) ▶ 품질 검증 평가서 작성
: 데이터 수집 ▶ 유형 및 실시간 처리 여부 파악
▶ 데이터 수집 도구(Fluentd, Flume, Scribe, Logstash, Sqoop
등) ▶ RDBMS, HDFS, NoSQL
에 적재
Fluentd
: 각 서버에 설치해 로그 수집 → 중앙 로그 저장소
: 다양한 형태의 사용자로그를 JSON
으로 수집 후 다양한 형태로 출력함, 가장 간단한 구조
Flume
: 대량 로그 데이터를 효율적으로 수집 및 취합, 이동
: 분산형 SW
Scribe
: 실시간 스트리밍 로그 데이터 집약 서버
Log Stash
: 다양한 소스에서 데이터 수집 및 변환, 접근이 잦음
NoSQL
mongoimport
: 수집한 데이터(CSV
등의 text data)를NoSQL
타입으로 적재
SQLtoNoSQLimporter
Mongify
정형/비정형/반정형에 따른 체크리스트 작성
: Table, Attribute 수, Data Type 일치 여부, Record 수 일치 여부 등
Data Test case를 통해 적재 정상 완료 검증 준비
체크리스트 검증 및 Test Case 실행
파일시스템 방식
: 대용량, 분산, 데이터 집중형 애플리케이션 => 고성능 & fault-tolerance 환경 제공
: Apache HDFS
, Google File System(GFS)
DB 방식
: RDBMS, NoSQL
64MB
로 동일 크기MapReduce
- 분산데이터 처리 기술
동작 과정
: Input → Splitting → Shuffling → Mapping → Reducing
:Map 함수
+Reduce 함수
= 입력 분할 및 함수 적용
Master
(상태 관리/통제) + Chunk Server
(HDD 입출력 처리) + Client
(File Read/Write 요청)mongodb
)Redis
) : 메모리 기반 빠른 접근Key-Value
: DynamoDB, Redis
: 실시간으로 발생하는 다양한 데이터 처리에 유리
Column-Oriented
: Bigtable, Cassandra, HBase, HyperTable
: 연관 데이터에 유리, DB 확장성 높음
: HBase
= HDFS
+ SQL
의 분석환경 구축
Document
: MongoDB, SimpleDB, CouchDB
: 문서마다 스키마가 상이함
CAP 이론
: 분산 컴퓨팅 환경에서 일관성, 가용성, 지속성을 동시에 만족할 수 없음
- 일관성 Consistency
: 모든 노드가 동일 시점에 동일 데이터 접근- 가용성 Availability
: 일부 노드의 다운이 다른 노드에 영향을 미치지 않음- 지속성 Partition Tolerance
: 데이터 전송 중 일부 손실에도 시스템이 정상 작동함
데이터 모델 관점
1-1. 데이터를 테이블로 저장 : RDBMS
1-2. 유연한 스키마 활용/문서중심 : MongoDB
1-3. 웹 기반 시스템 : Apache CouchDB
1-4. Key-Value, 대규모 사용자 & 부하 분산 : DynamoDB, Redis
1-5. 극단적 확장성 : Cassandra, HBase, HyperTable
확장성 관점
2-1. 높음 : Column-Oriented(HBase, Cassandra
)
2-2. 낮음 : In-Memory(Redis
), Document(MongoDB, CouchDB
)
트랜잭션 일관성
: RDBMS 만한게 없다.
Query 지원
: MongoDB, CouchDB, Redis
+ RDBMS
접근성
: MongoDB, CouchDB, Redis, Cassandra
Spark
, Storm
: Hadoop
보다 실시간 대용량 처리에 특화됨
: 별도의 저장소 없어 외부 저장 시스템과 연동이 강제됨
실시간 서비스를 웹으로 제공한다면?
: Redis