"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
"이경오의 SQL+SQLD 비밀노트"에서 지은이의 말을 보면 이 책에는 7개의 목적이 있음을 알 수 있다. 그 중 2개는 SQLD 자격증 취득과 관련된 내용이다. 그 다음 페이지를 보면 저자의 보유 자격증에서 이 목적이 얼마나 신뢰가 있는지 느낄 수 있다. (국가공인 데이터 관련 자격증만 4개!!!) 그렇다면 독자로서 얻을 수 있는 것은 무엇일까?
아쉽게도 필자는 이 서적을 SQLD 자격증을 취득하기 위한 목적으로 공부하지는 않았다. 4년 가까이 SQL을 손놓고 있다가 실무에서 DB를 다룰 일이 많아지면서 학습을 할 필요를 느껴 이 서적으로 공부를 하게 되었다. 자격증 취득 목적이 아님에도 불구하고 이 서적은 충분히 매력적이었다.
챕터별로 다른 공부 방식
"Chapter 2 실습 데이터 구성"에서 학습 전 샘플 데이터를 준비하는 단계가 있는데 샘플 데이터를 정상적으로 획득하면 무려 280만 데이터를 얻을 수 있다.(p.60) 뒷 챕터에서 대용량 데이터를 제대로 다루는 방법이 다루어 질 것이라는 것을 예측할 수 있고 동시에 기대를 하게 만든다. 물론 이 챕터에 큰 장애도 있다. 그건 뒤에서 언급하겠다.
"Chapter 3 데이터 모델링의 이해"와 "Chapter 4 데이터 모델과 성능"은 실습보다는 이론이 대부분을 차지한다. 내용을 어느 정도 알고 있는 분들이라면 지루할 수 있지만 기초를 다루겠다는 저자의 의도대로 학습하는 분들에게는 모든 챕터 중 가장 중요한 챕터일 것이다. 여기에 등장하는 수많은 키워드는 실무에서도 사용된다. 데이터 모델링(p.70), 스키마(p.74), 관계(p.86), 식별자(p.91), 정규화(p.109), 기본키(p.139) 등등. 실무에서 DB 관련 미팅을 한다면 이 단어들은 수차례, 아니 수십차례도 나오는 단어다. 이 서적에서 나오는 설명 정도만 알아도 실무에는 지장이 없다.
"Part 3 SQL 기본 및 활용"은 마치 주니어 개발자가 시니어 개발자가 되기 전에 충분히 다룰 수 있어야 하는 수준을 다룬 듯 하다. 개인적으로 파트 3는 속도감을 조절하면서 학습하기를 권한다.
-
Part 3 학습법
- Chapter 5는 정독보다는 빠르게 실습하기
-
Chapter 6은 정독하듯 학습하다가 모르는 부분이 있으면 사전을 찾듯 Chapter 5를 참고하기
- 특히 Join과 서브쿼리는 충분히 습득할 것
- DCL과 절차형 SQL은 관심도에 따라 Skip해도 좋다.
- Chapter 7은 인덱스와 조인을 실습코드 수준으로 다룰 수 있을 정도로 학습한다.
- Chapter 8은 자격증 시험을 준비하는 분들에게 학습을 권한다.
특히 챕터 5와 챕터 6은 상당한 분량이다. 실습을 가장 많이 해야하는 부분이기도 하다. 그래서 기본이 되는 챕터 5는 가능하면 빨리 학습하고 챕터 6을 공부하면서 챕터 5를 공부할 때 부족한 부분을 채우는게 재밌게 학습할 수 있는 방법일 것이다. 이미 실무에 DB를 사용중인 분이라면 챕터 3~5까지는 빠르게 훑고 지나가고 챕터 6~7에 집중하는게 효율적이다.
그런데 이 책으로 학습할 때 주의사항이 있다. 이 주의사항. 치명적일 수 있다. 바로...
윈도우 유저가 아니라면 오라클 설치와 샘플 DB 적용부터 고비
거의 일주일을 챕터 2에 보냈다. 오라클 DB는 윈도우에서 가장 적합하게 동작한다. 툴인 Oracle SQL Developer도 마찬가지. 맥OS나 리눅스를 사용하는 분이라면 도커를 통해 오라클을 설치하고 사용하는 방식이 가장 간단하다. 문제는 그것만 한다고 실습을 잘 할 수 있는 것은 아닌 점. 내가 발견한 이슈를 정리해 보자면...
- Docker 사용법과 리눅스 명령어를 모르면 설치부터가 상당히 까다롭다.
- 오라클 덤프 파일을 오라클 DBMS에 적용(임포트)할 때 파일을 도커에 올려야 한다.
- 도커에 파일을 올려놓고 impdp 명령어를 입력했지만 수행 실패하였다.
-
결국 SQL 스크립트를 이용한 데이터 적용을 하려고 했지만 파일이 너무 커서(1.9GB) 읽을 수 없다.
- Oracle SQL Developer(OSD)에서는 읽는 도중에 툴이 뻗는다.
- Atom이나 VI는 읽기는 한데 일부를 복사해서 OSD에 붙여넣기 하는 것만도 상당한 시간이 필요하다.
- 한번 복사하는데 텍스트량이 제한적일 수 있다.
-
일부만 데이터를 입력했다고 하더라도 한글이 깨지기에 실습에 지장이 생긴다.
- 도커 언어 세팅과 오라클 언어 세팅을 모두 바꾸어도 터미널에서 SQL 스크립트를 입력하면 한글이 깨진다.
완벽하지는 않아도 해결책은 있다
방법을 구체적으로 알려줄 수 없다. 상당한 양이 될 것이기 때문이다. 방향성을 제시해 줄테니 도움이 필요한 분들은 이 방향성에 포커싱을 맞추어 자료를 찾은 다음에 하나씩 해결하길 바란다.
- 어디까지나 맥북 유저 입장에서 쓴 글이다. 이 점에 유의하여 아래 솔루션을 참고하자.
- 도커에 오라클 설치하는 방법은 다른 개발자들이 정리한게 많다.
-
Docker Desktop을 설치하면 훨씬 편하게 도커를 사용할 수 있다.
- Docker Desktop 기본 사용법 정도만 알면 도커를 쉽게 이용할 수 있다.
- 이후 도커와 관련된 것들은 그때마다 찾아가면서 진행해본다. (로컬에서 도커에 파일 옮기는 법 등)
- 도커 위 오라클의 언어 세팅을 한글에 맞게 변경하자
-
스크립트 인코딩 이슈를 해결하자
- 이 서적에서 제공하는 SQL 스크립트는 윈도우에서 제작된 것이다.
- 윈도우에서 만든 파일(혹은 SQL)을 맥에서 사용할 수 있는 방법을 찾아보자.
-
impdp 명령어가 동작이 안된다면 스크립트를 OSD에 직접 입력하는 방식을 채택하자
- 스크립트 파일은 덤프 파일과 다르다.
- 한빛미디어 홈페이지에 있는 자료와 서적에서 가이드하고 있는 파일명을 잘 확인하자.
-
스크립트 파일(sql 파일)이 크니깐 큰 파일을 읽을 수 있는 에디터를 미리 준비하자
- 추천 에디터 : Atom, VI, MacVIM
- 그렇지 않은 것 : 맥북 자체 앱(스크립트 편집기, 텍스트 편집기), OSD로 바로 읽기, 크롬 브라우저 등
-
스크립트는 크게 3부분으로 나누어 진다. 아래 순서를 지켜야 한다.
- 테이블 생성
- 샘플 데이터 입력 (INSERT 문 뭉치)
- 테이블 관계 설정
-
샘플 데이터 입력도 한꺼번에 입력할 수 없다.
- 어지간한 데이터는 한번에 테이블에 넣을 수 있다.
- 하지만 250만 데이터가 넘는 TB_BSSH는 10만은 커녕 1만줄도 복사가 안될 수 있다.
- 이 부분은 필자도 해결을 못했다. 좋은 방법을 찾는 분이 계시면 공유를 부탁한다.
해결책을 보면 얼마나 필자가 고민과 시간 투자를 많이 했는지 보일 것이다. 혹시나 저자나 한빛미디어에서 이 글을 본다면 다른 OS 유저를 위한 가이드를 부록으로라도 제공해주길 부탁한다.
쉽지 않은 과정임에도 이 서적과 샘플 데이터는 가치가 높다. 간단한 데이터를 다루는 정도면 굳이 책으로 공부할 필요가 없다. 비용을 들이면서 공부를 할 것이라면 그만한 가치가 있는 스킬을 얻는 것을 기대해야 한다. 그리고 이경오의 SQL+SQLD 비밀노트는 빅데이터(?)를 다루는 스킬을 기대할 수 있다. 자격증 취득도 기대할 수 있다. 이런 기대를 만족하고 싶은 분들에게 이 서적을 추천한다.