RDB의 INDEX를 B-Tree 구조로 가져가면 좋은 이유에 대해 궁금증이 있습니다.
364
작성한 질문수 1
RDB의 Index를 B-Tree 구조로 하면 삽입, 수정, 삭제 시 O(logN)의 시간복잡도를 갖는다고 하셨는데 어떻게 그렇게 되는지 궁금합니다.
답변 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를 합치고 분할한다는 말 한마디로 축약했는데, 이 과정이 꽤나 복잡합니다. 하지만 면접강의에서 다루기에는 너무 깊은 내용이라 링크를 하나 남겨드릴게요!! 더 자세한 내용이 궁금하시면 참고해 주세요 :)
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





