왜 나는 Raw C++로 데이터베이스를 처음부터 만드는가 (그리고 STL을 금지한 이유)

발행: (2026년 5월 3일 AM 06:02 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

내가 학습하던 방식의 문제점

오랫동안 나는 코드가 동작한다는 사실만 알았을 뿐, 왜 동작하는지 전혀 몰랐습니다. 흥미로운 부분을 모두 가려버리는 추상화, API, 라이브러리를 사용했죠. 무언가를 만들 수는 있었지만 메모리, 디스크, 혹은 하드웨어 수준에서 실제로 무슨 일이 일어나고 있는지 설명할 수 없었습니다. 그 점이 마음에 걸렸습니다.

NanoDB가 실제로 무엇인지

NanoDB는 그 문제를 해결하기 위한 나의 시도입니다. 단계별로 구축하고 있는 맞춤형 스토리지 엔진입니다:

  • Phase 0 — 순수 C++ 기본, 안전망 없음
  • Phase 1 — 페이지 매니저, 순수 디스크 I/O
  • Phase 2 — LRU 교체를 갖춘 버퍼 풀
  • Phase 3 — 힙 파일 및 튜플 레이아웃
  • Phase 4 — B+ 트리 인덱스
  • Phase 5 — 쿼리 레이어
  • Phase 6 — Write Ahead Log
  • Phase 7 — 2PL을 이용한 동시성
  • Phase 8 — 벤치마킹 및 연구 문서화

현재 나는 Phase 0에 있습니다. 아직 진행 상황을 과장하지 않을 겁니다.

왜 STL을 금지했는가?

STL은 아직 겪어보지 못한 문제들을 이미 해결해 주기 때문입니다. 동적 메모리 할당을 이해하기도 전에 std::vector를 사용한다면, std::vector가 실제로 무엇을 하는지 전혀 배우지 못합니다. 이 제한은 추상화가 숨기고 있던 고통을 직접 느끼게 합니다. 그 고통이 바로 교육이기 때문이죠.

왜 코드를 작성하기 전에 지금 이 글을 쓰는가?

책임감 때문입니다. 그리고 “왜”가 “무엇”만큼이나 중요하기 때문이죠. 여기서 모든 단계를 기록할 겁니다 — 내가 만든 것, 부러진 것, 배운 것, 그리고 혼란스러웠던 것. 다듬어진 성공 스토리는 없습니다. 오직 거친 과정만 있을 뿐입니다.

시스템 프로그래밍이나 저수준 C++을 탐구하고 있다면 함께 따라와 주세요. 함께 해결해 나갈 수 있을 겁니다.

Phase 0이 지금 시작됩니다. ⚔️

0 조회
Back to Blog

관련 글

더 보기 »

Python 시작하기

오늘 나는 파이썬을 배우기 시작했고, 파이썬이 실제로 어떻게 작동하는지 이해하는 데 도움이 되는 몇 가지 기본 개념을 탐구했습니다. 파이썬이란 무엇인가요?