[SQL로 시작하는 데이터 분석] 시리즈 포스트를 쓰기 전에 앞선 .. 서론
이전에 SQL 공부하려고 사놨던 책인데 공부한지도 오래되기도 했고.. 당시에는 시간에 쫓겨서 공부해서 기억이 가물가물 하기 때문에 나도 공부할겸, 공부 기록 남겨놓을겸 겸사겸사 글을 써보기로 했다.
공부할 책은 한빛 미디어의 'SQL로 시작하는 데이터분석' , 글쓴이는 캐시나니무라, 옮긴이 박상근 님.
이전에 공부할때는 당연히 한국사람이 쓴 책이겠거니 했는데 일본 글쓴이였잖아..?
책 자체의 난이도는 SQL을 처음 접하는 사람보단, 이미 어느정도 쿼리에 익숙한 사람들한테 더 적합한 책인듯.
(특히 뒤로 가면 갈수록 쿼리가 길어져서 몇번씩 써봐야지 이해가 됨..)
책에서 기본적으로 실습할 데이터를 배포하기 때문에 직접 쿼리를 써볼 수 있어서 좋긴함.
근데 이제 데이터 자체가 실무와 동떨어져있는 느낌은 어쩔 수 없는듯.
하여튼 서론이 길었는데, 이만 줄이고 앞으로는 책 공부하는 내용들을 주로 업로드할 예정!
목차는 아래와 같이 나와있고, 이번 포스팅에서는 1장을 다룰 예정.
1장 | SQL을 활용한 분석 |
2장 | 데이터 준비 |
3장 | 시계열 분석 |
4장 | 코호트 분석 |
5장 | 텍스트 분석 |
6장 | 이상 탐지 |
7장 | 실험 분석 |
8장 | 복잡한 데이터셋 생성 |
9장 | 결론 |
1장 SQL을 활용한 분석
1. SQL의 4가지 서브 언어
- DQL : data query language
ex) select - DDL : data definition language
ex) create , alter, drop 등 생성, 수정, 삭제에 관련된 언어 - DCL: data control language - 접근 제어에 관련된언어.
ex) grant, revoke 같이 권한을 주거나 취소할때 사용. - DML : data manipulation languaged - 데이터 자체를 다루는데에 사용되는 언어
ex) insert, update, delete 등 레코드 추가, 필드값 변경, 행삭제 등 데이터베이스 소유자로서 직접 관리하는 테이블을 다룰때 사용
2. SQL 이랑 R이랑 뭐가 다른거야?
1) 컴퓨팅 성능
- SQL : 데이터 베이스 서버에서 분석되어 컴퓨팅 자원의 이점활용
- R,파이썬 : 주로 로켈에서 실행되므로 컴퓨팅 자원이 로컬 성능에 따라 한정적일 수 있음
2) 데이터 저장, 구성 방식
- SQL : 행과 열로 데이터를 저장하기 때문에 이미 데이터가 구조에 맞게 저장되었다고 가정.
- R, 파이썬 : 변수, 리스트, 딕셔너리 등 다양한 방법으로 데이터 저장 → 유연하긴하나 학습이 비교적 복잡
3) 반복(looping)의 유무 - 특정 조건을 만족할 때까지 지정된 명령 되풀이
- SQL : 반복을 위한 코드가 따로 없어 내부적으로 데이터셋을 반복해야함 (8장에서 언피벗, 피벗 수행 관련언급예정)
- R, 파이썬 : 반복문 존재
+) SQL 단점 :
데이터베이스에 저장되어있어야 한다 → DB가 아닌 노트북에 저장시 오버헤드 발생 가능성 있는 별도의 레이어가 생김 → 이를 R dbplyr이나 파이썬의 SQLAlchemy같은 패키지가 해결 가능함.
R, 파이썬에 비교했을 때, 고수준의 통계함수(p값, 통계적 유의성 등) 내장 하지 않음.
** 데이터 분석에 SQL / R / 파이썬 중 어느 것을 사용할지 결정할 때의 고려사항
- 데이터가 어디에 저장돼 있는가?(데이터베이스, 파일, 웹사이트)
- 데이터 용량은 어느 정도인가?
- 데이터를 어디에 사용할 것인가? (보고서 작성, 데이터 시각화, 통계 분석)
- 데이터가 새로운 값으로 변경되거나 최신화될 필요가 있는가? (업데이트 주기)
- 팀 혹은 조직에서 어떤 도구를 사용하며, 그 규정을 따르는 것이 얼마나 중요한가?
3. 데이터 분석의 전반적인 프로세스
1️⃣ 자원 시스템에서 데이터를 생성 (** 자원시스템이란? 필요한 데이터를 만들고 처리하는 사람 혹은 컴퓨터 )
2️⃣
( 데이터 웨어하우스 : 여러 조직의 데이터를 하나의 중앙 저장소에 통합한 DB )
( 데이터 스토어 : 쿼리를 보낼 수 있는 모든 종류의 데이터 저장 시스템 )
( 데이터 마트 : 데이터 웨어하우스의 서브셋, 또는 좁은 의미의 데이터 웨어하우스 )
( 데이터 레이크 : 데이터 웨어 하우스에 주로 사용하는 형태로 변환하지 않은 채로 저장한 DB )
3️⃣ 쿼리와 분석 : 탐색 → 프로파일링 → 정제 → 셰이핑 → 분석 (꼭 순차적이진 않음)
- 탐색 : 데이터와 관련된 주제 뭔지, 데이터 생성 위치 및 정보 확인
- 프로파일링 : 데이터셋 톺아보기 ( 분포, 고유값 등 확인)
- 정제 : 불완전한 데이터 수정 및 결측값 다루기
- 셰이핑 : 분석목적에 따라 데이터 행열 저장
- 분석 : 트렌드 파악 , 결론 도출 및 인사이트를 위한 데이터 검토
4️⃣ 발표 : 시각화 등을 통한 인사이트 보여주기
4. 데이터베이스 타입과 활용법
SQL은 데이터베이스에서 하용하는 언어로, 데이터베이스 타입에는 오픈 소스, 상용 데이터베이스, 행기반, 열기반 등등 여러가지가 있음. 데이터 베이스는 타입마다 특성이 다르고, 데이터 분석시에 각기 다른 장단점이 있기 때문에 잘 알고 사용하면 좋음 ( 실제로 회사에서는 사용하는 분석 워크플로에 각 단계에서 사용하는 도구들에 대해서는 잘 알더라도 조직에서 사용하는 데이터베이스에 관해서는 잘 모를 수도 있음, 그래서 다른 타입의 DB도 능숙하게 다룰 수 있다면 새로운 데이터 웨어하우스에서 프로젝트를 수행하거나 프로젝트 이관할 때에도 도움이 될거임!) 어쨌든, 그러면 이제 데이터 베이스 타입에 대해 알아보자.
1) 행기반 DB
- 종류 : mysql, postgres, sql서버, 오라클, 테라데이터 등이 있음
- 특징
: 분석에 최적화 되어있진 않지만, 오랫동안 데이터 웨어하우스를 구축하는 유일한 방법이었기에 지금도 많이 사용됨
: 분석에 사용하려면 섬세한 튜닝과 스키마 설계가 필요함.
: 테이블은 행과 열로 이뤄져있지만 행기반 데이터는 데이터가 행 순서대로 저장됨
( + 쿼리는 하드디스트에서 필요한 데이터를 검색하는데, 하드 디스크는 크기가 고정된 블록으로 이뤄져있음.
하드 디스크 스케닝은 시간과 자원을 소모하기 때문에 쿼리 결과를 가져올 때 스캐닝이 필요한 디스크의 양을 최소화해야 작업 시간을 줄 일 수 있음. 행기반 DB는 이런 문제를 데이터를 저장하는 방식으로 해결함,, 이런 방법은 행단위를 업데이트 할 때는 빠르지만 단 몇개의 열만 계산해야될 경우에는 불필요하게 느리다는 단점이 있음!
→ 관련 문제 해결 방법은 제 3정규형, 인덱싱, 스타 스키마 모델링 등등이 있는데 이건 궁굼한 사람들은 검색해보시길..)
2) 열기반 DB
- 종류 : 아마존 레드시프트, 스노우플레이크, 버티카 등이 있음.
- 특징
: 행의 갓 대신 열의 값을 저장하는 방식, 여러 행에 저장된 값을 가져와야하지만, 모든 열을 가져올 필요는 없을때 좋음.
: 반복되는 값을 아주 작은 값으로 대체해 저장하는 압축기술을 사용하기 때문에 저장공간이 훨씬 절약됨.
: (장점) 기본키 필수적이지 않고, 인덱도 필요없음, 데이터가 여러 테이블에 분산되지 않으므로 Join같은 것도 필요 없고, 데이터가 한곳에 모여있어 스카마도 분석 쿼리에 잘 맞춰짐.
: (단점) 한행도 여러열로 분산되 저장되므로 대부분의 열기반 DB에서 UPDATE나 DELETE 연산할때 많은 비용이 듦. (그래서 완전 큰 테이블은 UPDATE,DELETE 못쓰도록 쓰기 전용으로 사용되기도 함.)
5. 데이터 인프라스트럭처 유형
요기 부분에서는 하둡, 뭐 등등의 데이터 인프라구조 유형에 대해 설명하는데,, 그냥 한번 쓱 읽고 넘어가면 될정도의 내용들이라 딸따로 정리는 생략하겠음...!
요기까지가 이번 포스팅에서 다룰 내용이고 사실 2장에 절반정도 까지도 약간 SQL 실습하기전에 알아가는 내용이긴하지만,,, 2장 이후부터는 유익한 정보들이 나올것이기 때문에 꾸준히 포스팅을 하도록 할 것임!!!
그럼 오늘은 여기까지~
아자잣 내일도 홧팅이다~
'SQL 책 리뷰' 카테고리의 다른 글
[SQL로 시작하는 데이터 분석] (3) - 시계열 분석 3 (2) | 2025.08.08 |
---|---|
[SQL로 시작하는 데이터 분석] (3) - 시계열 분석 2 (2) | 2025.08.05 |
[SQL로 시작하는 데이터 분석] (3) - 시계열 분석 (6) | 2025.07.30 |
[SQL로 시작하는 데이터분석] (2) - 2장 데이터 준비 (3) | 2025.07.26 |