추츨, 변환 및 로드
데이터 처리에 적합하지 않은 영구 저장소의 데이터를 메모리로 추출하는 것
영구 저장소 ex) Amazon S3, SQL Database
데이터 변환을 시작하기 전에 필요한 단계
추출할 수 있는 파일은 많음
Text files
비구조화
Flat files
행 : record
열 : attribute
일종의 표 형식
일반적으로 쉼표, 탭 등으로 구분된 파일들(.csv 등)
JSON (JavaScript Object Notation)
반구조화
복합 데이터 유형(배열 array, 객체 object)
Python dict와 매핑 상당히 우수함
인기 있음, why? 최근 많은 웹 서비스가 위 데이터 형식을 사용해 데이터를 전달하기 때문
client -------- request --------> server
client <-------- reponse with data -------- server
일부 서버는 json 형식으로 데이터를 제공함 => API : application programming interface
포괄적으로 병렬 컴퓨팅을 사용해 데이터를 변환하는 것을 추천함
데이터 엔지니어는 어떤 변환을 시도할까?
위에서 언급한 데이터베이스 종류에 맞게 최적화 시켜야한다.
(Analytics vs Applications)
Applications는 레코드 당 데이터를 저장 => 소규모 트랜잭션에서 새 행을 쉽게 추가할 수 있음
Analytics는 열당 데이터를 저장 => 분석에 최적화(Why? 쿼리는 대부분 테이블의 작은 열 하위 집합에 관한 것 => 따라서, 열 당 데이터를 저장하면 이런 특정 열을 반복하여 쿼리를 해결하는 것이 더 빠르게 된다.)
=> 이런 열 지향 데이터베이스는 병렬화에 좀 더 적합함
대규모 병렬 처리 데이터베이스
쿼리는 단일 노드이지만 하위 작업으로 분할되며 여러 노드에 분산된다.
Amazon Redshift / Azure SQL Data Warehouse / Google BigQuery가 위에 해당함