/ BOOKS

원리부터 배우는 관계형 데이터베이스 실전 입문

Note : 이 글은 지극히 주관적인 생각을 토대로 작성된 글입니다. 혹시나 잘못된 부분이 있다면 메일 또는 코멘트를 통해 알려주시면 감사하겠습니다. 😄 제 메일은 About 탭에서 확인하실 수 있습니다. 📧

기본 정보

간단 서평

이 책을 처음 읽기 시작했던 게 작년 12월부터였던 걸로 기억되는데, 7월이 돼서야 책의 마지막 챕터까지 다 읽게 되었다. 틈틈이 읽었고 한 번 읽을 때 무리해서 읽으려고 하지 않았기 때문에(내용도 어려웠기에..) 나름 만족하며 여유롭게 음미하며 읽었다고 하지만 다 읽는 데 꽤 오래 걸렸던 것 같다. 하지만 틈틈이라도 지속해서 읽을 수 있었던 건 책의 내용이 흥미로웠고 내가 모르는 내용이 많았기에 읽어갈수록 알게 되는 내용이 RDB에 대해 무지한 나에게 유익했기 때문이 아닐까 생각이 든다.

책의 내용에 대해 감상평을 남기기 전에 확실하게 얘기해두자면, 이 책은 SQL을 다루는 방법을 중점적으로 다루지 않는다. SQL의 사용법에 대해 고급 스킬 등을 원한다면 이 책은 좋은 선택이 아니라고 할 수 있다. 이 책에선 관계형 데이터베이스에 대해 좀 더 본질적인 내용을 다루고 RDB를 프로덕트에서 사용할 때 취할 수 있는 여러 전략에 대해 다룬다.

이 책은 제목과 같이 저자가 관계형 데이터베이스의 원리부터 알기 쉽게 설명하기 시작한다. 여기서 얘기하는 원리는 관계형 데이터베이스의 기반이 되는 관계형 모델부터 설명해 나가기 시작한다는 얘기이다. 이 책을 읽어보기 전에 나는 조금 창피하지만 RDB를 쓰면서 왜 RDB를 관계형 데이터베이스라고 불리는지에 대해 그렇게까지 깊게 고민해보지 않았었다. 정확하게 얘기하면 관계형 모델에 대한 이해가 제대로 되지 않은 상태에서 SQL만 학습해서 RDB를 사용하고 있었던 것이다.

대학교에 다니면서 데이터베이스 수업을 들었고, 이 수업에서 관계형 모델에 관한 내용을 배웠었다. 그렇게 배운 것을 토대로 관계형 모델이란 것을 기반으로 하는 데이터베이스가 관계형 데이터베이스구나! 정도로 이해하고 있었던 것 같다. 사실 대학교 수업에서 배웠던 관계형 모델에 대한 이론적인 내용도 워낙 어려운 내용(개인적으로..)이었던 지라 수업을 들은 지 2년 정도 지난 이 시점에 수업에서 들었던 내용이 머릿속에 깊게 남아있지도 않았다.

그렇기에 관계형 모델이란 무엇인지, 관계형 모델이 데이터 모델이라면 관계형 모델은 데이터를 어떻게 표현하는지, 관계형 모델은 집합론을 기반으로 하고 관계형 모델을 표현하는 수단으로 술어논리를 사용하며 관계형 모델을 사용하는 DB에서 변칙을 방지하기 위해서 정규화와 직교성이라는 이론을 사용한다는 내용까지 책을 통해 다시 한번 공부할 수 있어서 좋았던 것 같다. 저자의 말대로 관계형 데이터베이스를 사용하면서 관계형 모델을 모르고 사용한다는 게 옳지 않다는 생각이 들기도 했고, 관계형 모델을 알고 관계형 데이터베이스를 사용하는 것이 RDB를 더 잘 사용하기 위해 필요한 과정이라고 생각이 들기도 했다.

물론 이 책을 통해서 관계형 모델과 관계형 데이터베이스의 깊은 내용과 이론까지 통달할 수 있다고 생각을 하지도 않고 실제로 내가 통달하지도 못했다. 그래도 적어도 “이런 형식으로 되어있구나, 이런 문제 때문에 이런 방법을 쓰고, 이렇게 해결할 수 있구나.” 정도는 알 수 있고, 이론 서적에 버금갈 정도는 아니라도 한 챕터마다 내용을 꽤 깊게 다루고 있다. 그리고 나는 적어도 이 정도만 알아두고 있어도 아예 무지했던 이전보다 훨씬 많은 것을 배웠다고 생각한다.

책의 초반에는 관계형 모델과 집합론, 관계형 모델을 표현하기 위한 술어 논리, 정규화 논리와 이론, 릴레이션의 직교성 등의 관계형 모델에 대해 제대로 이해할 수 있도록 어렵지 않게 알려준다. 책의 중반에선 RDB를 사용하면서 올바르게 DB 설계를 할 수 있는 방법(도메인 설게 전략, NULL을 바라보는 다양한 관점, 인덱스 설계 전략 등)과 올바른 쿼리(SELECT를 다루는 전략 등)를 사용하기 위한 내용을 알려주게 된다. 그리고 책의 후반부에서는 응용 프로그램과 함께 DB를 사용할 때 유용한 내용(성능 튜닝 전략, 이력 데이터 관리 등)을 실제 사용 사례와 같이 알려주고 있다. 그리고 마지막 장에는 RDB에서의 트랜잭션에 대해서 자세하게 다루고 책의 내용을 마무리하게 된다.

책을 읽으면서 RDB를 사용하면서 관계형 모델에 대해서 제대로 알고 있지 않던 지난날의 내 모습이 반성이 되기도 했고, 새로운 또는 까먹고 있던 내용을 다시 알아가고 공부할 수 있어서 좋았다. 올바른 DB 설계와 DB를 사용할 때 나타날 수 있는 여러 이상 현상들과 변칙을 방지하기 위한 고려사항 또한 알 수 있어서 좋았다. 그리고 실제 응용 프로그램에서 RDB를 함께 사용하면서 취할 수 있는 성능적인 전략 또한 책을 통해 간접적으로 나마 경험해볼 수 있어서 좋았던 것 같다. 물론 실무에 어떻게 적용하느냐는 내가 풀어야 할 또 다른 숙제인 건 변함이 없지만 여러 케이스를 책을 통해 경험해 볼 수 있었던 부분은 좋았던 것 같다.

마지막으로 정리하면 본인처럼 관계형 데이터베이스를 사용하면서 관계형 모델, 정규화 등의 이론에 대해 지식이 부족하거나 관계형 데이터베이스가 어떤 이론을 기반으로 만들어졌는지에 대해 궁금증이 많은 사람에게 이 책을 추천해주고 싶다. 또 관계형 데이터베이스를 깊이 있게 사용하기 위해 올바른 DB 설계에 관해 공부하고 싶거나 응용 프로그램과 함께 사용할 때 겪을 수 있는 여러 문제와 성능에 대한 고민에 대해 노하우를 얻고자 하는 개발자들에게도 이 책을 추천해주고 싶다. 본인처럼 RDB에 대한 지식이 전무하거나 연차가 낮은 개발자에게는 나름 난이도가 있는 책이라고 생각하고, DB 공부를 열심히 하셨던 분이나 연차가 높으셔서 RDB 사용에 대한 경험이 많으신 개발자분이시라면 나름 재밌게 읽을 정도의 난이도라고 생각한다.

어디까지나 여기까지 얘기한 내용은 개인적인 생각이므로, 혹시 이 책을 읽을 생각이 있다면 다른 분들의 서평도 같이 참고해보시면 좋을 것 같다. 뿐만 아니라 본인이 읽지 않은 좋은 책들도 많기에 여러 서평을 참고해보는 것을 추천하기도 한다. 여기까지 서평을 마무리 하도록 하고 다음에 또 새로운 기술 서적을 완독하게 되면 새로운 서평으로 돌아오도록 하겠다.