기록하는 투자자

데이터베이스에 대한 깊은 이해, "데이터베이스 인터널스" 본문

제대로 보는 도서리뷰

데이터베이스에 대한 깊은 이해, "데이터베이스 인터널스"

기록하는 투자자 컨티뉴언 2021. 4. 10. 13:09
728x90
반응형

우리는 데이터베이스에 대해 얼마나 이해하고 데이터를 다룰까?

이 의문에 대해서 우리는 이 책과 함께 여정을 나아가본다.

 

그럼 이 책은 누가 읽으면 좋을까?

1. 데이터베이스를 모르는 사람 : 이 책을 읽으면 완전히 백지에서 시작할 수 있을 것이다.

2. 데이터베이스와 업무를 진행하는 사람 : 다양한 사람들이 존재할 것이다.

하지만 데이터베이스에 대해 생각하면서 어떠한 개념을 적용시킬지까지 고민해보지 못한사람은 이 책을 읽어야 한다.

3. 실무적인 얘기를 듣고 싶은 데이터베이스 담당자 : 데이터베이스는 구체적이지만 실체를 잡기가 어려운 경우가 있다.

그러한 경우 우리는 실체를 발견한 사람에게 배워야한다.

4. 데이터베이스를 학교에서만 배운 사람들 : 우리는 처음 데이터베이스를 어디에서 접하게 될까?

학교에서 접하게 된다. 그러한 경우 다 잊어버리고 다시 배우는 경우가 많다.

우리는 학교에서 배웠던 것을 어느정도는 상기시켜야 한다.

데이터베이스 인터널스 또한 기본을 기준으로 깊은 내용을 다루고 있기 때문에 어려운 부분이 상당하다.

최신 분산 시스템에 대한 이슈가 많아지면서 단편적인 설계로서는 우리는 문제를 해결할 수 없다.

 

무엇보다 문제가 발생하기 전에 예방을 해야한다.

그러기 위해서는 다양한 시도를 해봐야하고 그러한 시도와 성공, 실패가 이 책에 들어있다.

 

책소개를 살펴보자.

 

데이터베이스에 데이터를 저장하는 방식과 분산 시스템의 일관성을 유지할 때 사용되는 개념과 알고리즘을 설명한다. 나아가 이들을 개선하기 위해 등장한 여러 새로운 알고리즘도 설명한다. 최신 분산 시스템과 논문에서 찾아볼 수 있는 개념들과 관련 문헌을 정리한 이 책을 통해 데이터베이스에 어떤 고질적인 문제가 있는지, 이들을 어떻게 해결할 수 있으며 또 어떤 새로운 연구들이 진행되고 있는지 배우게 될 것이다.

 

★ 이 책에서 다루는 내용 ★

이 책은 관계형 DBMS나 NoSQL 시스템에 관한 책이 아니다. 대신 다양한 종류의 데이터베이스 시스템에서 사용되는 알고리즘과 개념을 스토리지 엔진과 분산 저장을 담당하는 컴포넌트에 초점을 두고 설명한다.
쿼리 계획과 쿼리 최적화, 스케줄링, 관계형 모델 등의 주제는 여러 훌륭한 이론서에서 쉽게 접할 수 있다. 이들은 대부분 사용자의 관점에서 각 주제를 설명하지만 이 책은 데이터베이스의 내부 구조를 집중적으로 설명한다.
이 책에서 언급된 데이터베이스 시스템 간의 공통적 언어는 없기 때문에 쿼리 언어는 다루지 않는다. 이 책을 집필하고자 15권의 책과 300편 이상의 논문, 수많은 블로그 글, 소스 코드, 여러 오픈소스 데이터베이스의 기술 문서를 참고했다. “데이터베이스 업계와 연구자들이 이 주제에 대해 논의하는가?”라는 질문의 답을 기반으로 주제를 책에 포함할지 여부를 결정했다. 답이 “그렇다”라면 주저 없이 긴 목록에 추가했다.

 

■ 스토리지 엔진: 스토리지 종류와 분류법을 알아보고 B-트리 기반과 불변 로그 구조 기반의 스토리지 엔진을 설명한다.
■ 스토리지 구성 요소: 페이지 캐시와 버퍼 풀과 같은 보조 자료 구조를 사용해 데이터베이스 파일을 효율적으로 저장하는 스토리지 구축 방법을 설명한다.
■ 분산 시스템: 노드 및 프로세스가 서로 어떻게 연결되고 복잡한 통신 패턴을 형성할 수 있는지 단계별로 설명한다.
■ 데이터베이스 클러스터: 최신 데이터베이스에서 사용되는 일관성 모델과 분산 스토리지 시스템이 일관성을 보장하는 방법을 설명한다.

 

 

★ 이 책의 대상 독자 ★

여러 중요한 데이터베이스 시스템 관련 개념을 쉽게 설명한다. 각 개념을 더 깊이 알고 싶은 독자에게 지침서가 될 것이다. 이미 모두 익숙한 개념이라면 참고서로 도움될 것이다.
이 책의 대상 독자는 데이터베이스 개발자만이 아니다. 데이터베이스 시스템을 사용해 소프트웨어를 개발하는 소프트웨어 개발자와 신뢰성 엔지니어, 아키텍트, 엔지니어링 매니저에게도 도움이 될 것이다.


회사에서 데이터베이스, 메시징 큐, 컨테이너 플랫폼, 태스크 스케줄러 등의 인프라를 사용 중이라면 해당 프로젝트의 변경 로그를 읽고, 메일링 리스트에 가입하고, 커뮤니티와 교류해 프로젝트에 관한 최신 정보를 항상 알고 있어야 한다.

시스템에 관련된 용어와 내부 구조를 이해하면 더 많은 정보를 알아낼 수 있으며 좀 더 효율적으로 툴을 사용해 문제와 병목현상을 방지, 식별 및 해결할 수 있다.

데이터베이스 시스템의 동작 방식에 대한 전반적인 이해는 문제를 해결하는 데 많은 도움이 될 것이다.

이런 지식을 바탕으로 가설을 형성하고 검증한 뒤에 원인을 찾아 다른 프로젝트 관리자에게 알리는 것은 중요하다.
또한 취미로 컴파일러를 만들고 직접 운영체제와 텍스트 에디터, 컴퓨터 게임을 개발하거나 새로운 프로그래밍 언어를 학습하는 등 새로운 정보를 습득하길 좋아하는 호기심 많은 사람들에게 도움이 될 것이다.


아울러 독자는 백엔드 시스템 개발 시 또는 사용자로 데이터베이스 시스템을 이용해본 경험이 있을 거라고 가정한다. 자료 구조에 관한 사전 지식이 있다면 내용을 더 빨리 이해할 수 있을 것이다.

 

분산 시스템에서 가장 어려운 부분은 데이터의 일관성을 유지하는 것이기 때문에 데이터 이중화, 일관성 모델, 복제본 간의 불일치, 결과적 일관성 등의 개념도 설명한다.

 

결과적 일관성을 보장하는 시스템에서 데이터의 일관성을 유지하기 위해 사용하는 안티-엔트로피 알고리즘과 데이터 전파를 위해 사용하는 가십 프로토콜도 알아본다.

마지막으로 데이터베이스 트랜잭션의 맥락에서 논리적 일관성을 논의하고, 합의 알고리즘에 관한 설명으로 마무리한다.

 

이 책은 데이터베이스를 지탱하는 알고리즘을 설명하고 최신 논문과 시스템에서만 접할 수 있는 관련 개념들을 정리한 책이다.

데이터베이스를 공부하는 학생과 현업 개발자 그리고 특히 여러 최신 데이터베이스의 원리와 기술을 숙지해야 하는 데이터베이스 연구자들을 위한 책이다.

관계형 데이터베이스 시스템을 사용해봤고, 분산 시스템을 사용해 새로운 시스템을 구축하려는 개발자라면 많은 도움이 될 것이다.

이미 검증된 라이브러리가 많아서 직접 알고리즘을 작성하거나 데이터베이스 엔진을 개발하는 일은 흔하지 않다.

하지만 이론과 알고리즘을 이해하는 정도는 컴퓨터 과학자와 일반 개발자를 나누는 기준이 되며, 최선의 해결책을 찾는 데 결정적인 역할을 한다.

이 책은 데이터베이스 개발자라면 반드시 알아야 하는 분산 시스템의 기본 이론 및 알고리즘을 설명하는 책이다.


데이터베이스별로 어떤 기능이 있는지, 얼마나 빠른지 또 어떤 유형의 애플리케이션에서 사용되는지 등의 실용적인 측면은 다루지 않는다.

SQL과 같은 쿼리 언어와 쿼리 플랜도 설명하지 않는다.

MySQL과 오라클 중에 어떤 것을 선택해야 할지 고민 중이거나, 1억 건이 넘는 로우를 어떤 데이터베이스에 저장해야 할지 고민 중이라면 이 책은 도움이 되지 않을 것이다.

대신 데이터베이스 이론과 알고리즘을 스토리지 관점에서 설명하고, 분산 시스템의 기본 개념과 알고리즘을 설명한다.

다른 이론서와의 차이점은 기존 알고리즘을 개선한 여러 변형 알고리즘도 설명한다는 점이다.

최신 분산 시스템에서 사용되는 알고리즘이 궁금하다면 많은 도움이 될 것이다.

728x90
반응형