소개
최근 들어 이것저것 해보면서 재밌는 것을 찾아보는 시간들을 지났습니다. 그러면서 현재 업무 특성상 많이 접하는 데이터베이스에 대해서 문득 궁금증이 생겼습니다.
이전부터 데이터베이스 시스템에 대한 설계나 구조로 데이터를 효율적으로 조회하거나 저장하는 방법들 등에 대해서는 연구도 해봤고 실전도 조금 해봤습니다. 하지만 실제로 내부 데이터베이스 엔진이 어떻게 구성되고 코드 레벨에서 어떻게 구현이 되었는지 궁금해 본적이 없다는 것을 알게 되면서 한번 도전해보기로 했습니다.
여행 목표
이번 여행 목표는 데이터베이스 구조를 파악하고 전반적으로 코드가 어떻게 돌아가는지 확인하는 것입니다.
부가적인 목표는 C 언어도 학습하고 SQLite 와 다른 데이터베이스 시스템 (PostgreSQL 등) 이 어떻게 다른지 원초적인 이해를 얻어가는 것입니다.
목표를 달성하기 위해서는 다음과 같은 조건들이 있었습니다.
- 코드를 볼 수 있는 데이터베이스 엔진
- 구조와 동작 원리를 파악할 정도의 작은 코드베이스
- 어느 정도 가이드나 문서가 존재
위 조건들을 만족시키는 데이터베이스 중 하나가 SQLite 였고 이번 여행에서는 SQLite 를 파헤쳐 보기로 했습니다.
SQLite 소스 코드
SQLite 는 Open-Source 이지만 Open-Contributed 는 아닙니다. 따라서 누구나 코드를 가져가 사용할 수 있습니다.
홈페이지: https://www.sqlite.org/index.html
SQLite Home Page
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bu
www.sqlite.org
소스코드를 다운로드 받는 방법은 여러가지 있습니다. 기본적으로는 SQLite 에서 Fossil 을 사용하기 때문에 사이트 가이드대로 Fossil 을 통해서 소스코드를 받아도 되고, 하나의 C 파일로 묶어놓은 Amalgamation 을 다운로드 받아도 됩니다.
저는 Github 를 주로 사용하기 때문에 전체 소스코드를 변경없이 그대로 다운로드 받아 별도의 깃헙 레포지토리를 만들어 코드를 업로드 했습니다.
SQLite 다운로드 사이트에 들어가게 되면 여러 형태의 소스코드들이 나와 있는데 여기에서 Alternative Source Code Formats 하위에 있는 `sqlite-src-` 로 시작하는 zip 파일을 받으면 됩니다.
https://sqlite.org/download.html
SQLite Download Page
Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi
sqlite.org
SQLite 가이드
SQLite 를 학습 목적으로 코드를 살피기 시작할 때에는 공식문서에서 제공하는 설계 문서를 살펴보면 도움이 될 것 같습니다. 문서에서 설명과 더불어 파일 링크도 연결해주기 때문에 어느 파일인지도 파악할 수 있어 편리해집니다.
https://www.sqlite.org/arch.html
Architecture of SQLite
Introduction This document describes the architecture of the SQLite library. The information here is useful to those who want to understand or modify the inner workings of SQLite. A nearby diagram shows the main components of SQLite and how they interopera
www.sqlite.org
결론
이제 여행을 시작해서 다음 글이 언제가 될지 모르겠지만 조금씩 살펴보고 C 도 같이 공부할 수 있는 좋은 기회가 될 것 같습니다. 혹시 이 글을 읽고 데이터베이스 엔진 구현에 흥미가 생기신 분들은 한번 SQLite 설계 문서를 들어가 보시는 것을 추천드립니다!
'Data Engineering > Database' 카테고리의 다른 글
BigQuery 파티셔닝과 클러스터링 (4) | 2023.11.01 |
---|