본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

만들면서 배우는 DBMS 동작원리 상세페이지

이 책의 키워드



만들면서 배우는 DBMS 동작원리작품 소개

<만들면서 배우는 DBMS 동작원리> 웹 어플리케이션에 있어 절대로 빼놓을 수 없는 DBMS 는, 중요한 시스템임에도 불구하고 그 시스템의 구성이 복잡한 탓에 DBMS 가 제공하는 기능을 모두 구사하기 어려운 시스템입니다. 게다가, 실용적인 DBMS 의 코드량은 많기도 많지만 그 내용이 학습을 목적으로 공부하기에는 적합하지도 않습니다.
따라서, 본서에서는 이미 공개되어 있는 거대한 오픈소스 즉, 예를 들어 PostgreSQL 과 같은 DBMS 의 소스 코드를 분석하기 보다, 최소한의 기능만 구현된 DBMS 를 직접 만들어 보면서, 그 내부 구조에 대해 이해도를 높이고 DBMS 를 더욱 더 활용할 수 있도록 하고자 합니다.


목차

1. 들어가기 앞서.................................................................... 8
2. DBMS 를 한번 만들어 봅시다............................................... 9
2.1. 일반 DBMS 의 전체상과 본서에서 구현할 부분 ......................... 9
2.1.1. DBMS 각 Layer 의 역할 ................................................10
2.2. PUTTY DB..........................................................................12
2.2.1. 샘플코드.......................................................................12
2.2.2. Putty DB 의 기능 ..........................................................12
2.2.3. Putty DB 의 구조 ..........................................................14
2.2.4. Putty DB 의 사용방법 ....................................................15
3. DISK MANAGER 만들기 ...................................................17
3.1. DISK MANAGER 의 역할 ........................................................17
3.1.1. Page 와 Heap 파일 ......................................................17
3.1.2. 새로운 Page 만들기 ......................................................19
3.1.3. Heap 파일에 Page 쓰기 ................................................19
3.1.4. Heap 파일로부터 Page 읽기..........................................19
3.2. DISK MANAGER 의 구현 ........................................................20
3.2.1. Rust 개발환경 구축 .......................................................20
3.2.2. Disk Manager 구조체 ...................................................20
3.2.3. Open Method..............................................................23
3.2.4. allocate_page Method .................................................24
3.2.5. write_page_data Method .............................................25
3.2.6. read_page_data 메소드 ................................................26
4. BUFFER MANAGER 만들기 ...............................................27
4.1. BUFFER MANAGER 의 역할.....................................................27
4.1.1. 디스크 io 반응속도 지연 극복하기...................................27
4.1.2. DBMS 특성에 맞춘 Cache 관리 .....................................27
4.2. BUFFER MANAGER 의 구조.....................................................28
4.2.1. Buffer Manager 의 전체이미지.......................................28
4.2.2. Buffer Pool 의 내부구조 ................................................29
4.2.3. Page Table 이란 ...........................................................29
4.3. BUFFER POOL MANAGER 만들기.............................................30
4.3.1. Buffer Pool 구조체 .......................................................30
4.3.2. Buffer Pool Manager 의 구조체 .....................................32
4.3.3. Buffer 삭제 알고리즘 .....................................................32
4.3.4. 페이지 할당처리 ............................................................34
5. B+TREE 관찰 ..................................................................37
5.1. B-TREE 란..........................................................................37
5.2. B+TREE 의 기능 ..................................................................37
5.2.1. Leap node 와 Internal node .........................................38
5.2.2. 검색 프로세스 ...............................................................39
5.2.3. 삽입 프로세스 ...............................................................40
5.3. DBMS 관점의 B+TREE 의 이점 ..............................................41
5.3.1. 페이지 단위의 read/write 에 궁합이 좋음 ........................41
5.3.2. 삽입/검색/삭제 시에도 밸런스가 좋고 빠름.......................42
5.3.3. 범위 검색 및 열거가 장점...............................................42
5.4. B+TREE 를 KEY-VALUE 스토어로 사용하기 ..............................42
5.4.1. 테스트 데이터의 작성.....................................................43
5.4.2. 키로 검색하기 ...............................................................43
5.4.3. 모든 key-value 의 페어를 열거하기 ................................45
5.4.4. 시작점을 지정해서 key-value 의 페어를 열거하기 .............46
6. 테이블 구현......................................................................48
6.1. 어떻게 테이블을 B+TREE 에 넣을 것인가? ...............................48
6.1.1. Clustered Index...........................................................48
6.1.2. Row 를 primary key 와 그 외의 것으로 나누기................48
6.1.3. 복합 키의 Sort 순서.......................................................49
6.1.4. 테이블의 기능 ...............................................................50
6.2. 테이블을 구현하기 ...............................................................50
6.2.1. CREATE TABLE 이 가능하게 하기 ..................................50
6.2.2. INSERT 가 가능하게 하기 ..............................................52
6.2.3. 동작확인.......................................................................53
6.3. 테이블을 검색하기 ...............................................................56
6.3.1. 행을 열거하기 ...............................................................56
6.3.2. Primary Key 로 검색하기 ..............................................58
6.3.3. Primary Key 이외의 것으로 검색하기 .............................61
6.4. QUERY EXECUTOR 만들기.....................................................63
6.4.1. Query Executor 와 실행계획 .........................................63
6.4.2. SeqScan 구현하기 ........................................................64
6.4.3. Filter 구현하기 .............................................................68
6.4.4. 실행계획을 세워서 Query 를 실행하기 .............................69
7. 맺음말.............................................................................72


리뷰

구매자 별점

0.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전