1. Overview of the Data Engineering Ecosystem
데이터 생태계는 다음과 같은 인프라, 툴, 프레임워크와 프로세스를 포함
- 여러 데이터 소스로부터 데이터를 추출
- ETL을 위한 데이터라인 구축과 관리
- 데이터 저장소 구축
- 워크 플로우 자동화와 최적화
- 워크 플로우에 필요한 애플리케이션 개발
데이터
Structured, Semi-structured, Unstrucutred 데이터로 구성
- Strucutred Data
- 정해진 데이터 포맷에 맞게 데이터를 행과 열로 이루어진 테이블로 구성
- 하나의 정해진 스키마를 따름
- ex)
- SQL Database
- OLTP
- Spreadsheet
- online form
- sensor GPS & RFID
- Network & Web server Log
- Semi-structured Data
- 구조적 특징을 갖지만 정확하게 정의된 스키마를 따르지는 않음
- 테이블로 구성되지 않으며 연산이 불가능한 데이터
- tag나 elements, metadata 등을 이용해 데이터를 계층적으로 구성
- ex)
- e-mail
- XML 등 마크업 언어
- XML은 계층적인 구조에 저장하기 위해 tag와 attribute를 정의
- 바이너리 실행 파일
- TCP/IP 패킹
- 압축 파일
- 서로 다른 소스로부터 수집된 데이터
- Unstructured Data
- 데이터가 복잡하고 형태가 없으며 연산이 불가능한 데이터
- RDBMS를 이용해 저장이 불가능
- 파일이나 문서로 저장하는 경우 manual Analysis를 사용
- NoSQL로 저장하는 경우 지정된 분석 툴을 사용
- ex)
- 이미지
- 비디오
- 텍스트 파일
- PDF & 문서
- 파워포인트
- SNS 데이터
- ...
이러한 데이터는 다양한 데이터 소스로부터 획득 가능함
- RDBMS
- Non-relational DataBase
- API
- Web Crawling/Scraping
- 데이터 스트림
- SNS
- IoT
- ...
데이터 저장소
- OLTP(OnLine Transaction Processing) 시스템
- 복수의 사용자들에게서 발생하는 트랜잭션을 DB 서버가 처리하여 사용자에게 결과를 반환하는 과정
- 트랜잭션을 정상적으로 수행하면 커밋을, 중간에 트랜잭션에 오류가 발생하면 롤백을 수행
- 무수히 많이 발생하는 각각의 작업요청을 오류없이 처리하고, 그 결과를 실시간으로 반환하는 과정
- 보통 RDBMS를 사용, Non-relational Database도 사용 가능
- OLATP(OnLine Analytical Processing) 시스템
- 이미 저장된 데이터를 기반으로 분석하는 데 중점을 둔 시스템
- 데이터베이스에 저장되어 있는 데이터를 분석하고, 분석을 통해 사용자에게 유의미한 정보를 제공하는 처리 방법
- 즉, 기존에 저장되어 있는 데이터를 사용자 요구와 목적에 맞게 분석하여 정보를 제공하는 개념을 의미
- RDBMS, Non-relational Database, 데이터 웨어하우스, 데이터 마트, 데이터 레이크나 빅데이터 저장소 등을 사용 가능
데이터 통합
다양한 데이터 소스로부터 데이터를 수집하고 처리, 저장하여 사용자에게 전달
데이터 파이프라인
데이터 소스로부터 목적지가 되는 시스템까지의 과정을 총괄하는 툴과 프로세스들
→ ETL이나 ELT같은 프로세스를 사용
프로그래밍 언어
- Query Language(SQL)
- Programming 언어
- Shell & Scripting 언어
BI & Reporting 툴
- 수집된 데이터를 이용해 대쉬보드나 보고서를 작성
- 실시간, 비실시간으로 데이터를 시각화
- 프로그래밍 지식이 없어도 GUI를 이용해 사용 가능
데이터를 다루기 위해서는 다양한 종류의 데이터 파일 종류와 데이터 형식에 대해 알아야 함
- 파일 형식에 따른 장점과 한계를 알아야 하고,
- 데이터와 성능에 필요한 최적의 데이터 형식을 사용해야 함
- CSV(Comma-Seperated Values)
- , 를 이용해 값들을 분리하여 저장하는 데이터 형식
- , 이외에도 탭이나 :, |, 스페이스 바 등을 사용 가능
- TSV - Tab-Seperated Values
- XLSX
- 마이크로소프트에서 개발한 XML 기반의 파일 포맷
- 여러 개의 워크시트를 갖고, 워크 시트들은 행과 열로 구성
- 오픈 파일 포맷으로 대부분의 애플리케이션에서 접근 가능
- 엑셀에 있는 모든 함수를 저장 가능
- 보안이 가능한 파일 형식
- XML(eXtensible Markup Language)
- 규칙과 인코딩을 포함하고 있는 마크업 언어
- 사람과 컴퓨터 모두 읽을 수 있는 파일 형식
- self-descriptive한 언어
- HTML과 비슷하지만, HTML과 다르게 미리 정의된 tag를 사용하지 않음
- 플랫폼이나 프로그래밍 언어와 독립적
- 데이터를 교환할 때 용이함
- PDF(Portable Document Format)
- 어떤 디바이스, 운영체제에서 문서를 봐도 동일한 파일 형식을 유지함
- JSON(JavaScript Object Notation)
- 언어와 독립적인 데이터 형식
- 모든 프로그래밍 언어에서 읽을 수 있음
- 쉬운 사용 난이도
- 비디오나 오디오 등 모든 데이터에 있어 공유하기 쉬운 데이터 형식
3. Sources of Data
- RDBMS
- 회사에서 유지하고 있는 데이터
- 비즈니스 활동, 소비자의 트랜잭션, HR 활동, 워크 플로우 등을 저장
- ex)
- Microsoft SQL Server, Oracle DB, MySQL, IBM DB2 ...
- Flat File & XML
- 판매 데이터나 금융 데이터, 날씨 데이터 등을 저장
- 판매 전략을 짜거나, 수요 예측, 의사 결정 등에 활용 될 수 있음
- Flat File
- 일반적인 텍스트 형식
- 하나의 라인은 하나의 데이터를 나타냄
- 각각의 값들은 구분자로 구분됨
- 모든 데이터는 하나의 테이블을 나타냄
- CSV ...
- Spreadsheet
- Flat File의 특수한 형식
- 데이터는 테이블 형식을 가짐
- 여러 개의 워크시트를 가질 수 있음
- XLS, XLSX, google sheet, Libre Office ...
- XML 문서
- tag를 이용하는 마크업 언어로 구성
- 복잡한 데이터 구조를 지원
- 온라인 설문, 계좌 정보 등 semi-structured data를 저장
- API & 웹 서비스
- API
- 웹 요청, 네트워크 요청 등을 HTML, JSON, XML 등으로 반환
- 감정분석을 위한 SNS API, 주식 거래를 위한 주식 시장 API, 데이터 분석을 위한 Data Lookup API 등...
- Web Scraping
- Unstructured Data를 추출
- 정의된 파라미터로 정의된 데이터를 다운로드
- 텍스트, 이미지, 비디오 등을 얻을 수 있음
- eCommerce, 판매 데이터, 게시글 등을 ML 모델에 사용
- BeautifulSoup, Scrapy, Selenium 등의 라이브러리 사용
- 데이터 스트림
- 기계나 IoT, GPS, 웹 사이트, SNS 등 다양한 소스로부터 얻는 데이터
- 시계열 데이터로 구성
- Apache Kafka, Apache Spark, Apache Storm 등의 툴 사용
- 주식 데이터, 판매 트랜잭션 데이터, CCTV나 비디오, SNS, 센서 데이터, 클릭 스트림 등 모든 실시간 데이터들이 해당됨