인덱스 2

[Data Structure] B-tree 정의 및 장/단점

검색을 위한 자료구조 중에 잠재력이 가장 큰 것은 역시 트리이다. 그 중 이번 포스팅에서는 B-tree에 대해 알아볼 것이다. B-tree는 주로 데이터베이스에서 인덱스를 저장할 때, 많이 사용된다. 이번 포스팅을 찾은 사람 중에 인덱스 관련 글을 보던 중, B-tree에 대해 궁금해져 찾아온 사람도 있을 것이다. 그럼 B-tree에 대해 알아보자. B-tree의 정의- 모든 노드는 최대 m개의 자식들을 가진다.- 루트노드와 리프노드가 아닌 모든노드는 최소 m/2개의 자식을 가진다.- 루트노드는 최소 2개 이상의 자식을 가진다.- k개의 자식을 가진 리프노드가 아닌 노드는 k-1개의 키를 가진다.- 모든 리프노드들은 같은 높이에 있어야 한다.- 모든 노드들은 키와 자식노드에 대한 포인터로 이루어져 있다...

[Database] 데이터베이스 인덱싱이란?

최근 메신저 프로젝트를 진행하면서 메시지 관련 대용량 데이터 처리를 위해 프로파일링을 통한 성능 최적화 작업을 주로 업무로 하게 되었다. 물론 그 중 단연 DB 튜닝도 작업 내역 중에 포함되었다. 그러던 중 학부 시절에 들어 본듯한 단어가 하나 있었다. '인덱싱' 뭐라도 쓰려면 알고 써야한다는 지론에 따라 '인덱싱'에 대해 구글링하고 공부한 내용을 이번 포스팅에서 정리하려고 한다. 누구나 필자처럼 DB 튜닝을 통해 성능 최적화를 하고자 한다면 이번 글을 간략하게나마 읽어 볼 필요가 있다. 먼저 이 글을 읽는 사람은 기본적인 DB의 구조와 사용법을 안다는 가정하에 시작한다. 인덱싱은 말 그대로 DB에 색인을 남기는 것이다. 왜 색인을 남길까? 책에서 원하는 항목을 찾기 위해 첫페이지에서부터 찾는 것보다 색..