inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

기출로 대비하는 개발자 전공면접 [CS 완전정복]

RDB의 INDEX를 B-Tree 구조로 가져가면 좋은 이유에 대해 궁금증이 있습니다.

364

junjun90

작성한 질문수 1

1

RDB의 Index를 B-Tree 구조로 하면 삽입, 수정, 삭제 시 O(logN)의 시간복잡도를 갖는다고 하셨는데 어떻게 그렇게 되는지 궁금합니다.

index db 운영체제 기술면접 면접

답변 1

0

개발남노씨

B-Tree 구조의 검색(lookup)은 O(logN)입니다. BST와 비슷하다고 보시면 돼요!

 

그럼 B-Tree의 삽입(Insert), 삭제(Delete), 수정(Update)은 어떤 과정으로 진행되는지 좀 더 설명드릴게요! 

일단 수정(Update)는 삭제 후 삽입한다고 생각하시면 됩니다. 따라서 삽입과 삭제의 과정만 아시면 됩니다.

그리고 기본적으로 삽입과 삭제는 검색과 동일한 알고리즘으로 진행되지만 복잡한 과정이 추가 됩니다. 그것은 leaf node를 분할하거나 합치는 과정 입니다.

 

- 삽입: 검색(lookup)과 동일한 과정으로 삽입할 search-key가 저장되어 있을 leaf node를 찾습니다. 이과정에서 O(logN)이 걸리겠죠. 그리고 데이터를 삽입하는데, leaf node가 너무 많은 데이터를 저장하고 있다면 분할합니다.

- 삭제: 검색(lookup)과 동일한 과정으로 삽입할 search-key가 저장되어 있을 leaf node를 찾습니다. 이과정에서 O(logN)이 걸리겠죠. 그리고 데이터를 삭제하는데,  leaf node가 너무 적은 데이터를 저장하고 있다면 옆 leaf node와 합칩니다.

 

leaf node를 합치고 분할한다는 말 한마디로 축약했는데, 이 과정이 꽤나 복잡합니다. 하지만 면접강의에서 다루기에는 너무 깊은 내용이라 링크를 하나 남겨드릴게요!! 더 자세한 내용이 궁금하시면 참고해 주세요 :)

 

B-Tree insertion

B-Tree Delete 

DB index 적용 column (1% and 99%)

1

550

1

Open addressing을 사용할 때의 worst case

1

481

1

인터넷 계층과 네트워크 엑세스 계층

1

506

1

패킷이란

1

439

1

Linked list의 장점

1

661

1

노션 자료 이메일 잘못 입력했어요..

1

561

1

동기화 문제

1

511

2

프로세스 관련 질문

1

583

1

노션 전자 책 동영상 문제

1

489

1

안녕하세요 강사님!

1

348

1

노션 공유 요청

1

370

1

Linked List 시간 복잡도

3

767

1

thread의 PC register 질문

1

729

2

hash table의 seperate chaining 질문

0

396

2

인덱스 카디널리티 부분 질문이있습니다.

2

1200

2

프론트엔드 면접준비 질문

0

556

1

시간복잡도

1

280

1

쿠키 질문

0

321

1

쓰레드의 단점 중 궁금한 것이 있습니다.

0

274

1

URL을 주소창에 쳤을 때 화면에 나오기까지의 과정에 대해 추가적으로 궁금합니다.

1

440

1

궁금한게 있습니다

0

213

0

강의자료 HTTP 부분 request 단어가 repuest로 되어있습니다

1

228

1

강의가 이해가 잘되네요

1

257

1

syn 과 fin의 데이터 단위가 다른 이유

2

295

1