나의 B-Tree 프로젝트

이번 여름방학 첫 개인 프로젝트

Posted by ChoiCube84 on June 22, 2023 · 3 mins read

블로그에 관하여

어제 글을 작성하지 못한 이유

오늘은 2023년 6월 22일이다. 첫 글이 업로드 되고 이틀 만이다. 어제 글을 올리지 못했던 것은 글을 올리기가 조금 막막했다. B-Tree 프로젝트를 진행해왔지만, 프로젝트에 대한 소개와 진척 수준을 한 번에 모두 기록하려고 하니 너무 막막해 쓸 마음이 들지 않았다. 그래서 천천히 접근하기로 했다. 며칠에 걸쳐 B-Tree에 대해 천천히 설명하기로 했다. 그렇게 조금씩 설명을 덧붙이다보면 본격적으로 B-Tree의 구현 진행과정을 제대로 기록할 수 있을 것이다.

블로그와 관련한 어려운 점

일단 블로그를 시작하겠다고 마음먹은 것도 방학부터였기 때문에, 다소 급하게 블로그를 시작한 감이 있다. 그래서 아직 다음과 같은 문제점들이 있다.

  1. Markdown 문법이 익숙하지 않다. 사실 문법 연습 겸 이 리스트를 작성하는 것도 있다. 앞으로는 원할한 설명을 위해 이미지도 넣어야 할텐데, 여러모로 배울게 많아질 것 같다.

  2. 블로그 글을 업로드하고 보니 날짜가 엉망으로 설정되어 있다. 나는 분명 첫 글의 날짜를 6월 20일로 설정해두었으나, 어째서인지 실제 블로그에서는 21일로 표시되어 있다. 이마저도 로컬에서나 21일로 표시되어 있지, 실제 블로그에서는 현재 아무런 글이 올라와 있지 않은 상태이다. 분명 yml 파일에서 timezone도 제대로 설정해준 것 같은데 뭐가 문제인지 모르겠다.

  3. 블로그를 시작할 때, 탬플릿을 단순히 긁어왔기 때문에 아직 이 블로그가 정확히 어떻게 작동하는지 잘 모른다. 이것 때문에 2번의 문제도 발생한 것 같긴한데, 그 외에도 댓글 관리라던가 여러모로 알아봐야 할게 많을 것 같다. 시간이 난다면 공식문서를 읽어봐야 할 것 같다.

이 문제들을 해결하려면 아무래도 날을 하루 잡아서 하루종일 블로그만 붙잡아야 할 것 같다.

B-Tree 프로젝트

이제 블로그에 대한 이야기는 이정도로 마무리하고 진행하고 있는 B-Tree 프로젝트에 대해서 이야기하도록 하겠다.

B-Tree 프로젝트 소개

이 프로젝트를 시작하게 된 동기는 2023년 1학기에 수강한 데이터구조 수업에서 시작된다. 데이터구조 수업에서는 총 4번에 걸쳐 과제가 나왔고, 3번째 과제에서의 일이었다.

당시 이래저래 과제가 많아서 급하게 데이터구조 과제를 마무리 했고, 보너스 점수에 해당하는 B-Tree를 제대로 구현할 시간이 없었다. 사실 내가 금공강이나 주말을 제대로 활용했다면 이런 일까지는 없었을지도 모르겠지만, 지난 일은 되돌릴 수 없었다. 그 과제가 마무리 된 후, 나는 분반 친구1와 그 과제 이야기를 하다가 문득 그런 이야기를 했었다.

내가 방학 때라도 시간을 내서 B-Tree는 구현해보고 싶다.

당시에는 별 생각없이 한 이야기였지만, 방학이 되자 이 말이 머리 속에서 맴돌았다. 그래서 데이터구조 수업도 복습할 겸, 제대로 한 번 B-Tree를 구현해보기로 했다. B-Tree를 구현하면서, 기존의 과제보다 어려운 제약조건을 걸어두었다. 크게 3가지 정도가 있는데 다음과 같다.

  1. B-Tree의 order 설정 기능 추가
  2. 중복 요소 허용
  3. 다양한 타입 지원

이러한 제약 조건을 걸게 된 이유는, 최대한 활용도가 높게 B-Tree를 구현하고 싶었기 때문이다. 또한 같은 학기에 들었던 객체지향프로그래밍 수업에서 Generic Programming에 대해서 배웠는데, 이 개념을 써먹어 보고 싶었기 때문이다.

내가 구현하게 될 B-Tree가 지원하는 기능은 4가지 정도가 될 것이다.

  1. 삽입 (Insert)
  2. 삭제 (Delete)
  3. 검색 (Search)
  4. 순회 (Traverse)

현재 시점에서 아직 완벽히 구현된 기능은 하나도 없지만 차근차근 만들어 나갈 계획이다. 이 프로젝트의 코드는 매일 Github의 Repository2에 저장해두고 있다.

마무리

오늘은 이 정도로 글을 마무리 하려고 한다. 원래 계획은 B-Tree에 대해 소개까지 하려고 했는데, 슬슬 자정이 다가오기도 하고 글이 엄청 길어질 것 같아 여기까지 하려고 한다. 내일부터는 본격적으로 B-Tree에 대해 설명을 시작하도록 하겠다.

오늘의 개발은 여기까지!


1: 우리 대학교만의 특이한 ‘분반’이라는 제도가 있다. 기회가 있다면 나중에 잡담 때 다루겠다.
2: https://github.com/ChoiCube84/B-Tree-cpp-implementation