Skip to content

Repository files navigation

BlueBase

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

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

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

만든이: @theeluwin

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

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

환경 설정

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.replacer

한편, Docker에는 모든 추가적인 환경이 설치되어 있습니다. 가령, exps/ix/basic.py 실험에는 graphviz가 필요합니다.

docker build -t bluebase .
docker run --rm -v ./debug:/workdir/debug bluebase -m exps.ix.basic

문서 생성

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

uv sync --group docs

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

make docs

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

사용법

실행

uv run bluebase 폴더명

설치

pip install -e .

혹은 환경에 따라

python -m pip install -e .

CLI 사용

bluebase 폴더명

모듈 사용

from pathlib import Path
from bluebase import BlueBase

bb = BlueBase(Path("폴더명"))
result = bb.execute("SELECT * FROM table_cat;")
for row in result:
    print(row)

About

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

Resources

Stars

38 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages