Skip to content

theeluwin/BlueBase

Repository files navigation

BlueBase

이 저장소는 공식 문서와 전체 테스트를 관리하기 위한 저장소이며, 실제 과제 수행은 GitHub Classroom을 통해서 이뤄집니다.

BlueBase는 교육용으로 만들어진 Python 기반의 단일 사용자 DBMS입니다. Stanford의 RedBase를 참고하여 만들었습니다.

BlueBase의 각 component를 구현하면서, DBMS를 가장 밑바닥부터 직접 구현해보는 것을 목표로 합니다.

자세한 내용은 공식 문서를 참고해주세요.

향후에 이 과제를 할 학생들의 배움의 즐거움을 위해서 정답 코드 공유는 자제를 부탁드려요.

환경 설정

uv를 사용해서 Python 환경을 관리합니다.

uv sync

Docker를 사용하고 싶을 경우:

docker build -t bluebase .

테스트

테스트는 pytest를 이용해서 진행하게 됩니다.

테스트의 기본 설정(pytest.ini)은 소스코드의 coverage를 측정하기도 합니다. 테스트 후 생성된 htmlcov/index.html 파일 열어보면 자세하게 알 수 있습니다.

전체 테스트

uv run pytest

Component별 테스트

(예시) PF component를 테스트 하고 싶을때:

uv run pytest bluebase/pf/

(예시) PF component의 manager에 대해 테스트 하고 싶을떄:

uv run pytest bluebase/pf/tests/test_manager.py

실험

실험에는 추가적인 환경이 필요합니다:

uv sync --group exps

이후 모듈로 실행합니다.

uv run -m exps.pf.cache_policy

한편, Docker에는 모든 환경이 설치되어 있습니다.

docker build -t bluebase .
docker run bluebase -m exps.pf.cache_policy

문서 생성

문서 생성은 추가적인 환경이 필요합니다:

uv sync --group docs

이후 sphinx의 도움을 받아서 문서를 생성합니다.

uv run sphinx-build --write-all ./docs/source ./docs/build

생성 후, docs/build/index.html 파일을 열어보면 빌드된 문서를 확인할 수 있습니다.

About

Python으로 밑바닥부터 직접 만들어보는 DBMS.

Resources

License

Stars

Watchers

Forks

Contributors