SQL만큼 구조화된 데이터를 가지고 분석을하거나 조작을 하는데 검증되고 사용하기 쉬운 언어가 없기 때문에 SQL을 사용하는 것!
-> 즉, 데이터 관련 직군이면 꼭 알아야함!
프로덕션 데이터베이스; MySQl, PostgreSQL, Oracle...
데이터 웨어하우스; Redshift, Snowflake, BigQuery, Hive...
2단계로 구성됨
primary key는 테이블 스키마 특성에 따라 다르지만 테이블에서 특정 컬럼들에서 그것들의 값이 중복되는 경우가 생기면 안되는 경우에 설정해준다.
(값이 유일하다는 것을 보장. 중복되는 값이 추가되는것도 막아줌.)
예) 이메일/주민등록번호를 받았을 경우, 이는 고유값이므로 중복되면 안되니까 primary key를 지정
관계형 데이터베이스에 있는 데이터를 질의하거나 조작해주는 언어
구조화된 데이터를 다루는한 SQL은 데이터 규모와 상관없이 사용된다.
모든 대용량 데이터 웨어하우스는 SQL 기반이며, Spark나 Hadoop도 예외가 아니다.
(데이터 분야에서 일하고자 하면 반드시 익혀야할 기본 기술..!
구조화된 데이터를 다루는데만! 최적화가 되어있다.
구조화되지 않은 테스트 데이터 등을 다룰때는 정규표현식을 사용해야 한다.
정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심하다. (비효율적)
많은 관계형 데이터베이스들이 플랫한 구조만 지원한다.
필드들만 있는것이 아니라 필드안에 필드가 있는 nested된 구조 는 존재하지 않는 관계형 데이터베이스가 많다.
(예외로 구글의 Big Query는 nested structure 지원)
비구조화된 데이터를 다루는데 Spark나 Hadoop과 같은 분산 컴퓨팅 환경이 필요해진다. (회사가 어느정도 성장했다는 증거이기도하다)
SQL만으로는 비구조화 데이터를 처리하지 못하기 때문이다.
관계형 데이터베이스마다 sql 문법이 조금씩 상이하다.
Q. 어떤 형태로 데이터 모델링을 할것인가?
(데이터를 어떻게 표현할 것인가에 대한 물음)
Production DB용 관계형 데이터베이스에서는 보통 스타 스키마를 사용해 데이터를 저장한다. 데이터를 논리적 단위로 나눠 저장하고 필요시 조인한다.
장점: 스토리지 낭비가 덜하고 업데이트가 쉬움
단점: 매출의 디테일을 보려고하면 수많은 다른 테이블과 조인해야함
데이터 웨어하우스에서 사용하는 방식
단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없는 형태
장점: 조인이 필요 없기에 빠른 계산이 가능
단점: 모든게 반복되기 때문에 스토리지가 많이 필요함.
그러나 데이터 웨어하우스는 스토리지 크기에 제약이 없다.
보통 프로덕션 데이터에서 카피해오기때문에 데이터 업데이트를 데이터 웨어하우스에서 진행하지 않으므로 서비스에 영향을 주지 않는다.
회사에 필요한 모든 데이터를 저장
sql 기반의 관계형 데이터 베이스
데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스
ETL 혹은 데이터 파이프라인
ETL: (Extrack,Transform,Load)
1. 기존 테이블의 데이터 추출(extract)
2. 추출한 데이터의 변환(transform)
3. 추출 및 변환한 데이터 적재(load)
데이터 엔지니어가 관리한다.
한단계 더 발전하면 Spark와 같은 대용량 분산처리 시스템이 일부로 추가된다.
클라우드
: 컴퓨팅 자원(하드웨어, 소프트웨어 등등)을 네트웍을 통해 서비스 형태로 사용하는 것
SQL 오랜만이다..! 그나마 아는거 나와서 한숨 돌리는 기분ㅠㅠ
신경망에 이리저리 치였어가지고.. (사실 아직도 치이고있음. 계속 복습중.
근데 나는 MySQL만 다뤄봤었는데 이번엔 데이터 웨어하우스에 집중하신다고하니 또 다른 부분이 있겠지..
그리고 수업 들어가기전에 강사님이 해주신 격려해주시면서 질문을 잘할줄 알아야한다는 이야기에 너무 공감갔다😂
특히 내가 뭘 모르고있는지 몰라서 질문을 못한다는 말이 완전 나같잖아 ㅋㅋㅋ
질문 하자 그리고 잘하는사람 보고 너무 기죽지 말기!!