Data engineering for every one[Data camp]
Data Workflow
- 데이터 수집 및 저장 -> 데이터 엔지니어링
- 데이터 정리(preparation)
- 탐색, 시각화
- 실험, 예측
데이터 엔지니어
데이터 엔지니어가 제공하는 것
정확한 데이터
올바른 형태로
올바른 사람들에게
효율적인 형태로
데이터 엔지니어가 하는 일
- 데이터 수집
- 데이터베이스 최적화
- 데이터 손상 관리
- 데이터베이스 아키텍처 개발, 구성, 테스트 및 유지
데이터 엔지니어 vs 데이터 사이언티스트
- 데이터 엔지니어
- ingest and store data
- set up database
- build data pipeline
- strong software skills
- 데이터 사이언티스트
- exploit data
- access database
- use pipeline output
- strong analytical skills
Data pipeline
- 데이터 수집
- 처리
- 저장
- 파이프라인이 필요하다!
- 모든 station을 자동화
- 정확하고 relevant한 데이터를 제시간에 제공
- 데이터 파이프라인은 데이터가 조직 전체에 흐르게 한다
- 자동화한다
- 줄인다
ETL
- 데이터 파이프라인을 디자인하는 프레임웍
- 데이터를 한 시스템에서 다른 시스템으로 이동시킨다.
데이터 스트럭쳐
구조화된 데이터
- 쉽게 검색하고 구성
- 행과 열의 엄격한 구조
- 각 열은 특정 데이터 타입이 있음
- 관계를 형성하기 쉽게 그룹화됨
- 관계형 데이터 베이스에 저장됨
- 거의 20%의 데이터가 구조화된 데이터다
- SQL을 사용하여 만들어지고 쿼리된다.
semi-structured data
- 검색하고 구조화하기 쉬움
- 구조에 덜 엄격함
- 여러가지 타입가능
- 그룹화될 수 있지만 더 많은 작업이 필요함
- NoSQL database: Json, XML, YAML
Unstructured data
- 행과 열 형식으로 표현될 수 없는 데이터
- 검색 및 구조화가 어려움
- 텍스트, 사운드, 사진, 비디오
- 일반적으로 데이터 레이크에 저장됨
- 거의 대부분의 데이터는 unstructure다
- 매우 가치있을 수 있음
Adding some structure
SQL 데이터베이스
SQL
- Structured Query Language
- RDBMS에서 쿼리를 하는 데 사용됨
- 한번에 많은 레코드에 엑세스할 수 있고 그룹화, 필터링, 집계할 수 있다.
- 영어에 가까워서 쓰기와 이해가 쉽다
- 데이터 엔지니어는 데이터베이스를 유지하고 만드는데 사용
- 데이터 과학자는 SQL를 이용해 쿼리함
CREATE TABLE employee (
employee_id INT,
first_name VARCHAR(255),
last_name VARCHAR(255),
role VARCHAR(255),
team VARCHAR(255),
full_time BOOLEAN,
office VARCHAR(255)
);
데이터베이스 스키마
- 데이터 베이스는 많은 테이블로 구성된다.
- 데이터 베이스 스키마는 테이블이 어떻게 related 되는지 관리한다.
데이터 웨어하우스 & 데이터 레이크
- 데이터 레이크
- 모든 raw data 저장
- 정형, 반정형, 비정형 모든 타입
- 비용이 적게 듬
- 분석하기 어려움
- 데이터 카탈로그를 최신상태로 유지해야 함
- 데이터 사이언티스트에게 쓰임
- 큰 데이터, 실시간 데이터
- 데이터 웨어하우스
- 특수 목적을 위해 특정한 데이터를 수집
- 상대적으로 작음
- Structured data 상태로 저장하기 때문에 업데이트에 비용이 듬
- 분석에 최적화되어 잇음
- data analytics에게 주로 쓰임
- read only queries
data catalog for data lakes
- 데이터의 출처
- 어떻게 사용?
- 누가 유지 관리를 하는가
- 얼마나 업데이트가 자주 되는가
- 데이터 거버넌스(가용성, 사용성 무결성, 보안)
- 프로세스의 재현을 보장
Database vs data warehouse
- Databasse
- 일반적인 용어
- organized data stored and accessed on computer
- Data warehouse
Processing data
Data processing value
- 원하지 않는 데이터 제거
- 메모리, 프로세스, 네트워크 비용을 최적화 한다.
- 사용하기 쉬운 타입으로 데이터를 변경한다.
- 데이터를 구조화 함
- 특정 스키마와 구조를 갖게 함
- 생산성 향상
데이터 엔지니어가 data processing을 하는 법
- 데이터 조작, 정리
- 데이터를 적절이 구조화 된 데이터베이스에 저장
- create views on top of database tables(뷰 생성)
- 데이터베이스 성능 최적화 (ex. 데이터 인덱싱)
Scheduling data
- 데이터 프로세싱의 모든 과정에 적용 가능
- 데이터 엔지니어링 시스템의 접착제
- task가 특정 순서로 작동되고 모든 종속성을 해결되도록 한다.
Manual, time, sensor scheduling
- 수동으로
- 특정시간, 조건(sensor scheduling)에 처리가 실행되도록 자동화
- sensor scheduling은 항상 조건을 확인하기위해 수신 대기 상태에 있어야 하는 단점
- 수동과 자동의 합성
Batches and stream
Batches
Streams
스케줄링 툴: airflow, Luigi
Parallel computing
- 최신 데이터 처리 툴의 기초
- 메모리와 프로세싱 파워를 늘려줌
- 데이터 처리 툴이 작업을 할때 task를 더 작은 subtask로 나누고 이 것들을 여러 컴퓨터에 분산시킴
pararell computing의 장점/e단점
- 장점
- 더 많은 프로세싱 파워
- reduce memory footprint
- 단점
- 데이터를 이동시키는 것이 비용을 발생시킴
- 통신 시간이 필요
Cloud computing
- severs on premise
- 직접 구입
- 공간 필요
- 전기요금, 유지 관리 비용
- 피크타임에 적절한 프로세싱 파워
- servers on cloud
- 대여
- 공간이 필요 없음
- 필요할때만 자원 사용
- 서버와 사용자가 가깝게 함
- 데이터베이스 안정성
cloud computing for data storage
- 데이터 베이스 안정성
- 민감한 데이터에 대한 위험관리
AWS
- File Storage: S3
- computation: EC2
- database: RDS
Microsoft Azure
- File Storage: Blob Storage
- computation: Virtual Machine
- database: SQL Database
Google Cloud
- File Storage: google cloud storage
- computation: google compute engine
- database: google cloud SQL
Multi cloud
- 장점
- 한 공급자에 대한 의존도를 줄임
- 비용 절감
- 법률
- 재난에 대비
- 단점
- 클라우드 공급자는 서비스를 통합해 가두고자 한다
- 호환성
- 보안 및 거버넌스 관리를 어렵게 한다.