이 저장소는 공식 문서와 전체 테스트를 관리하기 위한 저장소이며, 실제 과제 수행은 Qlass를 통해서 이뤄집니다.
BlueBase는 교육용으로 만들어진 Python 기반의 DBMS입니다. Stanford의 RedBase를 참고하여 만들었습니다.
BlueBase의 각 component를 구현하면서, DBMS를 가장 밑바닥부터 직접 구현해보는 것을 목표로 합니다.
만든이: @theeluwin
향후에 이 과제를 할 학생들의 배움의 즐거움을 위해서 정답 코드 공유는 자제를 부탁드려요.
자세한 내용은 공식 문서를 참고해주세요.
uv를 사용해서 Python 환경을 관리합니다.
uv syncDocker를 사용하고 싶을 경우:
docker build -t bluebase .테스트는 PyTest를 이용해서 진행하게 됩니다.
테스트의 기본 설정(pytest.ini)은 소스코드의 coverage를 측정하기도 합니다. 테스트 후 생성된 htmlcov/index.html 파일 열어보면 자세하게 알 수 있습니다.
uv run pytest(예) 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 .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)