Edward Sciore의 Database Design and Implementation 리뷰
Edward Sciore의 Database Design and Implementation을 읽었다. Database Design and Implementation 북 클럽 참여기에서 다루었던 책이고, 10월 초에 읽기 시작해서 출퇴근 길에 틈틈이 읽다 보니 약 3개월 만에 완독할 수 있었다. 바쁘거나 의욕이 떨어졌을 때에도 이메일 북클럽에서 Chapter별 오프닝 이메일이 와서 훌륭한 페이스메이커 역할을 해주었다.
이 책은 학부 수준의 텍스트로, 내용 면에서 어렵지 않았다. 초반에는 기본 개념을 다루다가, 후반부로 갈수록 앞에서 다룬 개념들이 결합되어 복잡한 구현이 가능해지는 부분이 특히 재미있었다.
책의 장점
이 책의 가장 큰 장점 중 하나는, 데이터베이스의 기본 개념과 구성 요소를 실제 코드로 설명한다는 점이다. 개념만 설명할 경우, 실제 구현 방식을 충분히 이해하지 못한 채 모호하게 넘어갈 수 있지만, 이 책은 코드를 통해 각 요소의 역할과 구현 방법을 구체적으로 이해할 수 있도록 도와준다. 흔히 텍스트에서 개념 설명과 코드의 제시가 따로 노는 경우가 많은데, 이 책은 개념 설명과 코드의 설명이 자연스럽게 연결되어있다. 또한, 코드의 설명도 매우 정성스럽게 이루어져 있어 코드의 이해도 쉬웠다.
다른 중요한 장점은, 데이터베이스의 요소에 대한 단순하고 직접적인 구현을 제시한 뒤, 이를 이용해 다음 장에서 한단계 위의 구성요소를 만들어 올리는 방식이다. 이를 통해 데이터베이스의 모듈화된 구조를 명확하게 보여준다. 추가적인 개념이 도입이 되면, 단순한 구현의 단점을 보완하는 개선된 구현을 제시해 점진적인 학습이 가능하도록 돕는다.
책의 단점
굳이 단점을 꼽자면, 각 Chapter 별로 현대 데이터베이스에서 흔히 사용되는 테크닉들과의 연결고리를 제시하는 Advanced Topic이 있었다면 더 보편적인 텍스트가 되었을 것이라는 아쉬움이 있다. 그러나, 이 책이 단순성과 이해 가능성을 우선시한 접근이었기 때문에 이는 큰 단점이라기보다는 방향성의 차이로 볼 수 있다.
인상 깊었던 부분
특히 재미있게 읽었던 Chapter들은, 데이터베이스의 핵심이라고 할 수 있는 Transaction과 Recovery, Concurrency를 다루는 Chapter 5, 데이터베이스의 빌딩 블럭들을 이용해서 쿼리의 실행과 플랜을 구현하는 Chapter 8과 Chapter 10, 인덱스와 Materialization, Sorting, Buffer 활용, 기초적인 Query 최적화를 다루는 Chapter 12 – 15들이었다. 이렇게 적고 보니 확실히 후반부를 더 흥미롭게 읽었던 것 같다.
읽고 난 후의 소감
2019 – 2020년 경에 데이터베이스 논문들을 읽으면서 현대적인 데이터베이스의 테크닉들을 재미있게 공부했었는데, 이번에 이 책을 읽으면서 기본적인 개념 및 구현과 현대적인 테크닉 사이의 갭을 바라볼 수 있는 시각을 얻게 되었다. 우연한 기회에 북클럽을 통해서 이 책을 읽게되었는데, 생각보다도 공부의 방향을 잡는데 큰 도움이 되었다.
단순히 코드를 읽는 것보다 직접 작성하는 것이 학습에 더 효과적이라고 생각하기 때문에, 시간이 나는대로 이 책의 Programming Exercise 중 중요한 문제들을 풀어볼 계획이다. 앞으로는 이 책에서 다루는 데이터베이스의 기본 개념들과 현대적인 데이터베이스의 테크닉들 사이의 갭에 해당하는 영역을 공부해보고자 한다.